/// <summary> /// Multiplies 2 Similarity transformations. /// This concatenates the two similarity transformations into a single one, first b is applied, then a. /// Attention: Multiplication is NOT commutative! /// </summary> public static Similarity__x3t__ Multiply(Similarity__x3t__ a, Similarity__x3t__ b) { //a.Scale * b.Scale, a.Rot * b.Rot, a.Trans + a.Rot * a.Scale * b.Trans return(new Similarity__x3t__(a.Scale * b.Scale, new Euclidean__x3t__( Rot__x3t__.Multiply(a.Rot, b.Rot), a.Trans + a.Rot.TransformDir(a.Scale * b.Trans)) )); }
/// <summary> /// Creates rotational matrix from quaternion. /// </summary> /// <returns>Rotational matrix.</returns> public static M4__x4t__ Rotation(Rot__x3t__ r) { return((M4__x4t__)r); }
public static M3__x4t__ Rotation(Rot__x3t__ q) { return((M3__x4t__)q); }
public static M3__x3t__ Multiply(Scale__x3t__ scale, Rot__x3t__ rot) { return(Scale__x3t__.Multiply(scale, (M3__x3t__)rot)); }