Started by Jul 29 2001 08:58 PM

,
3 replies to this topic

Posted 29 July 2001 - 08:58 PM

If I'm multiplying a 4x4 matrix by a vector, using a homogeneous coordinate for the vector, then I understand that if the matrix is such that the homogeneous coordinate becomes other than 1 after the operation, I'm supposed to multiply the vector by the reciprocal of what it becomes to renormalize it.
But what if the matrix is such that the coordinate becomes 0? If that's the case, do I just ignore it and skip the extra multiplications?
I hope this question makes sense, it's late
Thanks!
Edited by - Qoy on July 30, 2001 3:59:23 AM

Posted 29 July 2001 - 11:25 PM

In general you should not see this. If you make a matrix the normal way, combining a rotation with a translation, you should get something like:

(a b c p)

(d e f q)

(g h i r)

(0 0 0 1)

The abcdefghi is the rotation matrix, the pqr the translation vector. But the interesting row is the last one, as with it set to (0 0 0 1) it will mean the homogeneous (w) coordinate is preserved by the multiplication, and so if it is 1 in the input vector it will be 1 in the output vector, and you will not need to renormalise.

If your matrix looks different from this you are either doing something wrong or trying to do something different from just transforming a vector. If it''s wrong I suggest you look at your matrix creation routine(s) to see what''s going on. Otherwise it might help if you say a bit more about what you''re trying to do.

(a b c p)

(d e f q)

(g h i r)

(0 0 0 1)

The abcdefghi is the rotation matrix, the pqr the translation vector. But the interesting row is the last one, as with it set to (0 0 0 1) it will mean the homogeneous (w) coordinate is preserved by the multiplication, and so if it is 1 in the input vector it will be 1 in the output vector, and you will not need to renormalise.

If your matrix looks different from this you are either doing something wrong or trying to do something different from just transforming a vector. If it''s wrong I suggest you look at your matrix creation routine(s) to see what''s going on. Otherwise it might help if you say a bit more about what you''re trying to do.

Posted 30 July 2001 - 10:06 AM

Thanks. It''s not output from my transformation functions, but there is need to renormalize from projection matrices, and I know that if the projection matrix is done right then the homogeneous coordinate shouldn''t become zero either (at least, that''s how it seems to me).

I''m pretty new to 3D programming, and I wasn''t sure whether or not this situation would come up at any point in using valid matrices for some purposes other than transformation. Could it?

I''m pretty new to 3D programming, and I wasn''t sure whether or not this situation would come up at any point in using valid matrices for some purposes other than transformation. Could it?

Posted 31 July 2001 - 05:32 AM

Are you really transforming a pure vector----such as a direction vector or a normal vector? Or are you transforming a coordinate? For a coordinate the homogeneous coordinate should be 1 and for a pure vector it should be 0.

Regardless, as johnb mentions, the homogeneous coordinate is preserved in the multiplication.

Graham Rhodes

Senior Scientist

Applied Research Associates, Inc.

Regardless, as johnb mentions, the homogeneous coordinate is preserved in the multiplication.

Graham Rhodes

Senior Scientist

Applied Research Associates, Inc.