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!
Ad:
#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)






