[Insight-users] difference between vector and covariantvector
JSW
spam at wijnhout.com
Tue Jun 5 14:34:40 EDT 2007
Hi,
I must say that, apparently, ITK has a rather curious definition of
covariant vectors. First of all, a vector is either
covariant or contravariant. Which one it is, depends on its
tranformation properties under coordinate changes.
See: http://mathworld.wolfram.com/CovariantTensor.html
Formally the definition: Vector=Point1-Point2, is not even a vector,
that statement only holds in flat Euclidean
space (and not on a sphere for example). The definition
CovariantVector=Vector1xVector2, also isn't a vector formally,
but an axial vector (axial vectors do not change sign under inversion,
while vectors do).
A gradient is indeed a covariant vector (in fact, in differential
geometry it is the basis of all vector spaces). Note that if the space
is endowed with a metric, you can transform between contravariant and
covariant vectors easily.
I'm not objecting to the name "vector" for a difference of two points,
as long as we're in good old flat space, nothing
bad will happen. However, the definition of a CovariantVector given
below, is misleading in my opinion. Here's why:
Under rigid transformations (rotations for example), the difference
between two points transform covariantly. The
cross-product of two vectors does not transform covariantly (at least
not as a vector, it does transform covariantly
as a 2-form or anti-symmetric rank two tensor).
If the goal of the documentation is to express that there are certain
vectors that are transformed by ITK, and certain
vectors that are not, then I would recommend using different names for
it (for example FixedVector and VariantVector).
best,
Jeroen Wijnhout
Luis Ibanez wrote:
>
> Hi Yannick,
>
> A Vector describes the relative position between two points in space.
>
> Vector = Point1 - Point2
>
>
> A CovariantVector describes the direction orthogonal to a surface.
>
> CovariantVector = Vector1 x Vector2
>
> where "x" is a cross product of the two vectors.
>
>
> CovariantVectors and Vectors behave differently under
> Affine transformation. That is one of the reasons why
> it is important to make a distinction between them in ITK.
>
>
> For example:
>
> Gradients of functions are CovariantVectors (not Vectors).
>
>
>
> Regards,
>
>
>
> Luis
>
>
>
> ----------------------
> yannick pannier wrote:
>> Hi everybody,
>>
>> I'm learning how to use ITK's library and I don't understand very
>> well the difference between itk::CovariantVector and itk::Vector
>> classes.
>>
>> The ITK's software guide say :
>>
>> // covariant vector differs from a vector in the way they behave
>> // under affine transforms, in particular under anisotropic
>> // scaling. If a covariant vector represents the gradient of a
>> // function, the transformed covariant vector will still be the valid
>> // gradient of the transformed function, a property which would not
>> // hold with a regular vector.
>>
>> Does anyone could give me more explanations ?
>>
>> Thanks,
>>
>> Yannick
>>
>>
>> _______________________________________________
>> Insight-users mailing list
>> Insight-users at itk.org
>> http://www.itk.org/mailman/listinfo/insight-users
>>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>
>
More information about the Insight-users
mailing list