BEPUutilities.Matrix3x3.CreateFromQuaternion C# (CSharp) Method

CreateFromQuaternion() public static method

Creates a 3x3 matrix representing the orientation stored in the quaternion.
public static CreateFromQuaternion ( Quaternion &quaternion, Matrix3x3 &result ) : void
quaternion Quaternion Quaternion to use to create a matrix.
result Matrix3x3 Matrix representing the quaternion's orientation.
return void
        public static void CreateFromQuaternion(ref Quaternion quaternion, out Matrix3x3 result)
        {

            float XX = 2 * quaternion.X * quaternion.X;
            float YY = 2 * quaternion.Y * quaternion.Y;
            float ZZ = 2 * quaternion.Z * quaternion.Z;
            float XY = 2 * quaternion.X * quaternion.Y;
            float XZ = 2 * quaternion.X * quaternion.Z;
            float XW = 2 * quaternion.X * quaternion.W;
            float YZ = 2 * quaternion.Y * quaternion.Z;
            float YW = 2 * quaternion.Y * quaternion.W;
            float ZW = 2 * quaternion.Z * quaternion.W;

            result.M11 = 1 - YY - ZZ;
            result.M21 = XY - ZW;
            result.M31 = XZ + YW;

            result.M12 = XY + ZW;
            result.M22 = 1 - XX - ZZ;
            result.M32 = YZ - XW;

            result.M13 = XZ - YW;
            result.M23 = YZ + XW;
            result.M33 = 1 - XX - YY;
        }

Same methods

Matrix3x3::CreateFromQuaternion ( Quaternion quaternion ) : Matrix3x3

Usage Example

        /// <summary>
        /// Creates an affine transform from a rigid transform.
        /// </summary>
        /// <param name="rigid">Rigid transform to base the affine transform on.</param>
        /// <returns>Affine transform created from the rigid transform.</returns>
        public static AffineTransform CreateFromRigidTransform(RigidTransform rigid)
        {
            AffineTransform toReturn;

            toReturn.Translation = rigid.Position;
            Matrix3x3.CreateFromQuaternion(ref rigid.Orientation, out toReturn.LinearTransform);
            return(toReturn);
        }
All Usage Examples Of BEPUutilities.Matrix3x3::CreateFromQuaternion