// // Summary: // Creates a translation, rotation and scaling matrix. // // Parameters: // pos: // // q: // // s: public static M4x4 TRS(Vector3 pos, QuaternionCustom q, Vector3 s) { M4x4 trs = M4x4.zero; trs = M4x4.Translate(pos) * M4x4.Rotate(q) * M4x4.Scale(s); return(trs); }
// // Summary: // Creates a rotation matrix. // // Parameters: // q: public static M4x4 Rotate(QuaternionCustom q) { M4x4 mat = M4x4.identity; mat.m02 = 2.0f * (q.x * q.z) + 2.0f * (q.y * q.w); mat.m12 = 2.0f * (q.y * q.z) - 2.0f * (q.x * q.w); mat.m22 = 1 - 2.0f * (q.x * q.x) - 2.0f * (q.y * q.y); mat.m00 = 1 - 2.0f * (q.y * q.y) - 2.0f * (q.z * q.z); mat.m10 = 2.0f * (q.x * q.y) + 2.0f * (q.z * q.w); mat.m20 = 2.0f * (q.x * q.z) - 2.0f * (q.y * q.w); mat.m01 = 2.0f * (q.x * q.y) - 2.0f * (q.z * q.w); mat.m11 = 1 - 2.0f * (q.x * q.x) - 2.0f * (q.z * q.z); mat.m21 = 2.0f * (q.y * q.z) + 2.0f * (q.x * q.w); return(mat); }