[Insight-developers] Vectors: Algorithms Call: 02/16/01
    Stephen R. Aylward 
    aylward@unc.edu
    Fri, 16 Feb 2001 21:31:39 -0500
    
    
  
The use of vectors, points, etc (and even matricies) needs to be
organized for the two expected user groups of itk: plug-and-players and
method developers
Right now, to designate an ND vector-ish thing, we have 9 options:
itkArray, itkPoint, itkVector, itkCovariant, itkIndex, itkSize,
itkOffset, vnlVector, vnlFixedVector, vnlMatrix (a 1xN matrix)
	- vnlVector has an 8 byte overhead per instance, so most agree 		that a
different base storage class was needed.
	- The multiple types are proposed since transforming a point is 		done
differently than transforming a vector, normal, or 		offset.
So, the idea is to make different types available for users to use if
they want, but methods that operate on the base type should also be
available for when the user wants to self-manage or ignore the meaning.
2a) 2-level class hierarchy
	itkPoint
		itkIndex
		itkSize
		itkOffset
		itkVector
		itkCovarientVector
itkPoint contains conversion methods to/from vnlVectors
2b) Transform Methods
	itkTransform contains the methods
		TransformPoint(itkPoint *)
		TransformIndex(itkPoint *)
		TransformOffset(itkPoint *)
		TransformVector(itkPoint *)
		TransformCovarientVector(itkPoint *)
		Transform(itkPoint *)
		Transform(itkIndex *)
		Transform(itkOffset *)
		Transform(itkVector *)
		transform(itkCovarientVector *)
-- 
===============================================
Stephen R. Aylward
Assistant Professor of Radiology
Adjunct Assistant Professor of Computer Science
http://www.cs.unc.edu/~aylward
aylward@unc.edu
(919) 966-9695