Archived

This topic is now archived and is closed to further replies.

Qoy

Matrix multiplication question

Recommended Posts

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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites