[Insight-developers] itk vs vnl / Vector & Matrix
Stephen R. Aylward
aylward@unc.edu
Wed, 20 Feb 2002 09:28:02 -0500
Hi,
I think Luis' last point - that we pass itkVectors is nearly a
requirement, not just a preference - to keep the API consistent
looking. Right?
Stephen
Luis Ibanez wrote:
>
> Robert,
>
> Well there is no clear cut rule on this...
>
> The following could serve as basic guidelines:
>
> 1) itkVector defines its dimension at compile time
> vnl_vector defines its dimension at run time
>
> as a consequence vnl_vector has an overload in
> memory of 8 bytes with respect to the itkVector.
>
> So, if you are planning to create millions of them,
> your are better off with itk::Vector.
>
> On the other hand, vnl_vector is the native type for
> vnl mathematical operations... so, if you care more
> about math, vnl_vector is a better option. Math in
> itkVector is limited to arithmetic ops and product by
> an itkMatrix. Scalar products and normalization are
> defined for the itkVector too.
>
> 2) itk::Matrix and vnl_matrix are more closely related
> the itk::Matix has a vnl_matrix_fix internally.
> Both have dimension defined at compile time (though
> vnl_matrix_fixed is just hidding a run time assignment)
>
> itk::Matrix was added as a convenience wrapper of the
> vnl_matrix in order to avoid conversion between itkVectors
> and vnl_vector just for performing a vector*matrix product.
>
> It was a bit shameful to require ten lines of code for
> multiplying a vector by a matrix ... :-)
>
> We have tryied to pass itk::Vector and itk::Matrix around
> in the API of itk classes but this is just a preference.
>
> Luis
>
> ----------------------------------------------------------------
>
> Robert J Tamburo wrote:
>
> >On the subject of itkPoint ......... when should someone use itkVector vs.
> >vnl_vector or itkMatrix vs. vnl_matrix. I kind of just "wing" it based on
> >what functionality I need (i.e. I'll use vnl_vector if I need dot products),
> >but I'm sure there's some logic in choosing the more appropriate class.
> >
> >Rob
> >
>
> _______________________________________________
> Insight-developers mailing list
> Insight-developers@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-developers
--
===============================================
Dr. Stephen R. Aylward
Assistant Professor of Radiology
Adjunct Assistant Professor of Computer Science
http://caddlab.rad.unc.edu
aylward@unc.edu
(919) 966-9695