[Insight-users] difference between vector and covariantvector

Jeroen Wijnhout J.S.Wijnhout at lumc.nl
Thu Jan 17 05:08:54 EST 2008


Hi Luis,

First of all, sorry for the very late response (over six months), I
completely overlooked your message. I somehow found your reply after
Googling something completely different (but apparently related
according to Google).


> About your comments
>
>
>0) Yes, an itk::Vector, is indeed a ContraVariantVector.
>    We probably should point this out in the documentation.

That would be nice. 

>1) I disagree with you that the definition of a Vectors as
>    a relative position between two points only holds in
>    flat Euclidean spaces. It actually holds in any flat
>    space, not necessarily Euclidean. That is, the metric
>    tensor does not have to be an identity matrix.

Ok, this is probably a question of definition. But in my book, a space
with a metric that is not the Euclidean one is not a flat space. Suppose
we have a space with the topology of a plane, if we put a non-identity metric
on it, it is as if we modified the geometry of the plane, making it non-flat.
There are actually two ways of viewing this: a flat plane with a non-Euclidean
metric OR a curved plane embedded in a 3D flat space.

>2) You are right in that the cross product is not strictly
>    speaking a CovariantVector. Instead it is really a second
>    rank tensor, that happens to have symmetric components that
>    behave like a CovariantVector under Affine transformations.

I was actually referring to the fact that they transform differently under
inversions (inversion that a vector V to -V). Indeed, the underlying reason
being that a cross-product is actually a second rank tensor (to be precise the
cross-product is the Hodge dual of the wedge product of two vectors).

>3) I would like to see more details supporting your claim that
>    the difference between two points, and the cross product of
>    two vectors, transform differently under rigid rotations.
>    I don't think that is the case.

If you don't include inversions, they transform the same. However under the
full orthogonal group O(3), they transform differently. ITK probably only
uses the SO(3) subgroup, which does not include inversions.

>4) The purpose of the comments in the documentation is not to
>   indicate that some vectors are transformed and some are not.

And this is a very good point. The problem I had was the following: When using
mathematical terms one should be very precise, otherwise you get clashes with
what math textbooks say, and that does not contribute to clarity. I was a bit
detailed in my response, sorry, I just couldn't help myself ;-).

>    In the case of rigid rotations, the matrix is orthogonal and
>    therefore it is equal to its inverse, so the effect is not
>    noticeable.

The inverse of an orthogonal matrix is its transpose, which in general
not equal to the original matrix. Just write down a 2D rotation matrix, to convince yourself.

best,
Jeroen




More information about the Insight-users mailing list