Пример #1
0
        public void TestMultiply()
        {
            var m1 = new m3x4(new v4(1, 2, 3, 4), new v4(1, 1, 1, 1), new v4(4, 3, 2, 1));
            var m2 = new m3x4(new v4(1, 1, 1, 1), new v4(2, 2, 2, 2), new v4(-2, -2, -2, -2));
            var m3 = new m3x4(new v4(6, 6, 6, 0), new v4(12, 12, 12, 0), new v4(-12, -12, -12, 0));
            var r  = m1 * m2;

            Assert.True(Math_.FEql(r, m3));
        }
Пример #2
0
        public void TestInversion()
        {
            var rng = new Random();
            {
                var m      = m3x4.Random(v4.Random3N(0, rng), -Math_.TauF, +Math_.TauF, rng);
                var inv_m0 = Math_.InvertFast(m);
                var inv_m1 = Math_.Invert(m);
                Assert.True(Math_.FEqlRelative(inv_m0, inv_m1, 0.001f));
            } {
                for (; ;)
                {
                    var m = m3x4.Random(-5.0f, +5.0f, 0, rng);
                    if (!Math_.IsInvertible(m))
                    {
                        continue;
                    }
                    var inv_m = Math_.Invert(m);
                    var I0    = inv_m * m;
                    var I1    = m * inv_m;

                    Assert.True(Math_.FEqlRelative(I0, m3x4.Identity, 0.001f));
                    Assert.True(Math_.FEqlRelative(I1, m3x4.Identity, 0.001f));
                    break;
                }
            } {
                var m = new m3x4(
                    new v4(0.25f, 0.5f, 1.0f, 0.0f),
                    new v4(0.49f, 0.7f, 1.0f, 0.0f),
                    new v4(1.0f, 1.0f, 1.0f, 0.0f));
                var INV_M = new m3x4(
                    new v4(10.0f, -16.666667f, 6.66667f, 0.0f),
                    new v4(-17.0f, 25.0f, -8.0f, 0.0f),
                    new v4(7.0f, -8.333333f, 2.333333f, 0.0f));

                var inv_m = Math_.Invert(m);
                Assert.True(Math_.FEqlRelative(inv_m, INV_M, 0.001f));
            }
        }
Пример #3
0
 public LdrBuilder Axis(string name, Colour32 colour, m3x4 basis, float scale)
 {
     return(Axis(name, colour, new m4x4(basis, v4.Origin), scale));
 }
Пример #4
0
 public LdrBuilder Axis(m3x4 basis)
 {
     return(Axis(new m4x4(basis, v4.Origin)));
 }
Пример #5
0
 public void Axis(string name, Colour32 colour, m3x4 basis, float scale)
 {
     Axis(name, colour, new m4x4(basis, v4.Origin), scale);
 }
Пример #6
0
 public void Axis(string name, Colour32 colour, m3x4 basis)
 {
     Axis(name, colour, new m4x4(basis, v4.Origin));
 }
Пример #7
0
 public void Axis(m3x4 basis)
 {
     Axis(new m4x4(basis, v4.Origin));
 }