Archived

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

stefu

What is Skewsymmetric matrix?

Recommended Posts

stefu    120
A rigid object tutorial used skew symmetric matrix in it''s calculations. What is it? What is the result of skewsymmetricMatrix multiplied by orientationMatrix?
  
void Matrix3::SkewSymmetric(Vector3 crossVector)
{
    _11 =  0.0f;          _12 = -crossVector.z; _13 =  crossVector.y;
    _21 =  crossVector.z; _22 =  0.0f;          _23 = -crossVector.x;
    _31 = -crossVector.y; _32 =  crossVector.x; _33 = 0.0f;
}
  
Thanks!

Share this post


Link to post
Share on other sites
xSi    122
A skew-symmetric matrix is used primarily to hold a vector cross product. You will note from the code snippet you posted that

SkewSymmetric(v) * w
= ( v.y*w.z - v.z*w.y, ... )
= CrossProduct(v, w)

In general, if you multiply a skew symmetric matrix by an orientation matrix (with is by definition orthonormal), you will not get a matrix of any particular structure.

If you use SkewSymmetric(v) for |v| = 1 however, you will get another orientation matrix, since CrossProduct(v, w) will in essence rotate w until it is perpendicular to v & w. (Provided v and w are not co-linear, otherwise you will get the zero matrix)

Share this post


Link to post
Share on other sites
stefu    120
Thanks, that helped me a bit.

By the way, I use matrices where vectors are presented as rows (not as columns). Do I need to transpose this skewsym matrix, because the tutorial used column matrices?

Share this post


Link to post
Share on other sites
xSi    122
yep - if you''re using row vectors then be careful about whether you should be using the transpose or not of your original definition.

if in doubt - multiply out (!)

-xsi

Share this post


Link to post
Share on other sites