void mlMatrixTranspose(mlMatrix4x4 & result, const mlMatrix4x4 & source) { result = mlMatrix4x4( mlVector4D(source.I.x, source.J.x, source.K.x, source.T.x), mlVector4D(source.I.y, source.J.y, source.K.y, source.T.y), mlVector4D(source.I.z, source.J.z, source.K.z, source.T.z), mlVector4D(source.I.w, source.J.w, source.K.w, source.T.w) ); }
mlVector4D mlMatrix4x4::TransformVector(const mlVector4D &v) const { return mlVector4D( I.x * v.x + J.x * v.y + K.x * v.z + T.x * v.w, I.y * v.x + J.y * v.y + K.y * v.z + T.y * v.w, I.z * v.x + J.z * v.y + K.z * v.z + T.z * v.w, I.w * v.x + J.w * v.y + K.w * v.z + T.w * v.w ); }
mlVector4D operator * (mlFloat s, const mlVector4D &v) { return mlVector4D(v.x * s, v.y * s, v.z * s, v.w * s); }
mlVector4D mlVector4D::operator + (const mlVector4D &v) const { return mlVector4D(x + v.x, y + v.y, z + v.z, w + v.w); }
mlVector4D mlVector4D::operator - (const mlVector4D &v) const { return mlVector4D(x - v.x, y - v.y, z - v.z, w - v.w); }
mlVector3D(1.0f, 0.0f, 0.0f), mlVector3D(0.0f, 1.0f, 0.0f), mlVector3D(0.0f, 0.0f, 1.0f) ); extern const mlMatrix3x4 mlMatrix3x4Identity ( mlVector3D(1.0f, 0.0f, 0.0f), mlVector3D(0.0f, 1.0f, 0.0f), mlVector3D(0.0f, 0.0f, 1.0f), mlVector3D(0.0f, 0.0f, 0.0f) ); extern const mlMatrix4x4 mlMatrix4x4Identity ( mlVector4D(1.0f, 0.0f, 0.0f, 0.0f), mlVector4D(0.0f, 1.0f, 0.0f, 0.0f), mlVector4D(0.0f, 0.0f, 1.0f, 0.0f), mlVector4D(0.0f, 0.0f, 0.0f, 1.0f) ); mlMatrix3x4::mlMatrix3x4(const mlQuaternion &quaternion) { SetRotation(quaternion); SetTranslation(mlVector3DZero); } mlMatrix4x4::mlMatrix4x4(const mlMatrix3x3& matrixCloneFrom, const mlVector3D& translation) { I.x = matrixCloneFrom.I.x; I.y = matrixCloneFrom.I.y;