[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 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
(919) 966-9695