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; } |

# What is Skewsymmetric matrix?

Started by stefu, Oct 01 2001 11:04 PM

3 replies to this topic

###
#1
Members - Reputation: **120**

Posted 01 October 2001 - 11:04 PM

A rigid object tutorial used skew symmetric matrix in it''s calculations. What is it? What is the result of skewsymmetricMatrix multiplied by orientationMatrix?

Thanks!

###
#2
Members - Reputation: **122**

Posted 01 October 2001 - 11:33 PM

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)

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)