Ejemplo n.º 1
0
 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));
Ejemplo n.º 2
0
        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);
        });
Ejemplo n.º 3
0
        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);
        });