public static void Multiplication3x3Test() => TrafoTesting.GenericMatrixMultiplicationTest <Affine3d, M33d, M34d>( rnd => TrafoTesting.GetRandomAffine(rnd, false), Affine.TransformPos, Mat.Transform, Mat.TransformPos, (a, v) => (a * new V4d(v, 1)).XYZ, (m, v) => m * v, (m, v) => m * new V4d(v, 1));
public static void MultiplicationAffine3x4Test() => TrafoTesting.GenericTest(rnd => { var a = TrafoTesting.GetRandomAffine(rnd); var b = TrafoTesting.GetRandomAffine(rnd); var ma = (M34d)a; var mb = (M34d)b; var a_x_b = a * b; var ma_x_mb = Mat.MultiplyAffine(ma, mb); TrafoTesting.AreEqual((M34d)a_x_b, ma_x_mb); });
public static void InverseTest() => TrafoTesting.GenericTest(rnd => { var a = TrafoTesting.GetRandomAffine(rnd); var p = rnd.UniformV3d() * rnd.UniformInt(1000); var q = a.TransformPos(p); // Inverse property var res = a.Inverse.TransformPos(q); // Invert method Affine.Invert(ref a); var res2 = a.TransformPos(q); TrafoTesting.AreEqual(p, res); TrafoTesting.AreEqual(p, res2); });