public static void Multiplication3x3Test() => TrafoTesting.GenericMatrixMultiplicationTest <Euclidean3d, M33d, M34d>( rnd => TrafoTesting.GetRandomEuclidean(rnd, false), Euclidean.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 FromM33dAndV3d() => TrafoTesting.GenericTest(rnd => { var a = TrafoTesting.GetRandomEuclidean(rnd); var m = (M33d)a.Rot; var t = a.Trans; var restored = Euclidean3d.FromM33dAndV3d(m, t); TrafoTesting.AreEqual(a, restored); });
public static void InverseTest() => TrafoTesting.GenericTest(rnd => { var e = TrafoTesting.GetRandomEuclidean(rnd); var p = rnd.UniformV3d() * rnd.UniformInt(1000); var q = e.TransformPos(p); // Inverse property var res = e.Inverse.TransformPos(q); // Invert method Euclidean.Invert(ref e); var res2 = e.TransformPos(q); TrafoTesting.AreEqual(p, res); TrafoTesting.AreEqual(p, res2); });