public Matrix3 ExtractRotation()
{
Vector3 axis = Vector3.Zero;
Matrix3 rotation = Matrix3.Identity;
axis.x = this.m00;
axis.y = this.m10;
axis.z = this.m20;
axis.Normalize();
rotation.m00 = axis.x;
rotation.m10 = axis.y;
rotation.m20 = axis.z;
axis.x = this.m01;
axis.y = this.m11;
axis.z = this.m21;
axis.Normalize();
rotation.m01 = axis.x;
rotation.m11 = axis.y;
rotation.m21 = axis.z;
axis.x = this.m02;
axis.y = this.m12;
axis.z = this.m22;
axis.Normalize();
rotation.m02 = axis.x;
rotation.m12 = axis.y;
rotation.m22 = axis.z;
return rotation;
}