Exemplo n.º 1
0
        public void Matrix3x2LerpTest()
        {
            Matrix3x2 a = new Matrix3x2();

            a.M11 = 11.0f;
            a.M12 = 12.0f;
            a.M21 = 21.0f;
            a.M22 = 22.0f;
            a.M31 = 31.0f;
            a.M32 = 32.0f;

            Matrix3x2 b = GenerateMatrixNumberFrom1To6();

            Single t = 0.5f;

            Matrix3x2 expected = new Matrix3x2();

            expected.M11 = a.M11 + (b.M11 - a.M11) * t;
            expected.M12 = a.M12 + (b.M12 - a.M12) * t;

            expected.M21 = a.M21 + (b.M21 - a.M21) * t;
            expected.M22 = a.M22 + (b.M22 - a.M22) * t;

            expected.M31 = a.M31 + (b.M31 - a.M31) * t;
            expected.M32 = a.M32 + (b.M32 - a.M32) * t;

            Matrix3x2 actual;

            actual = Matrix3x2.Lerp(a, b, t);
            Assert.True(MathHelper.Equal(expected, actual), "Matrix3x2.Lerp did not return the expected value.");
        }
Exemplo n.º 2
0
        public void Matrix3x2InvertTest1()
        {
            Matrix3x2 a = new Matrix3x2();

            a.M11 = 0.0f;
            a.M12 = 2.0f;
            a.M21 = 0.0f;
            a.M22 = 4.0f;
            a.M31 = 5.0f;
            a.M32 = 6.0f;

            Single detA = a.GetDeterminant();

            Assert.True(MathHelper.Equal(detA, 0.0f), "Matrix3x2.Invert did not return the expected value.");

            Matrix3x2 actual;

            Assert.False(Matrix3x2.Invert(a, out actual));

            // all the elements in Actual is NaN
            Assert.True(
                Single.IsNaN(actual.M11) && Single.IsNaN(actual.M12) &&
                Single.IsNaN(actual.M21) && Single.IsNaN(actual.M22) &&
                Single.IsNaN(actual.M31) && Single.IsNaN(actual.M32)
                , "Matrix3x2.Invert did not return the expected value.");
        }
Exemplo n.º 3
0
        static Matrix3x2 GenerateTestMatrix()
        {
            Matrix3x2 m = Matrix3x2.CreateRotation(MathHelper.ToRadians(30.0f));

            m.Translation = new Vector2(111.0f, 222.0f);
            return(m);
        }
Exemplo n.º 4
0
        public void Matrix3x2CreateSkewIdentityTest()
        {
            Matrix3x2 expected = Matrix3x2.Identity;
            Matrix3x2 actual   = Matrix3x2.CreateSkew(0, 0);

            Assert.Equal(expected, actual);
        }
Exemplo n.º 5
0
        public void Matrix3x2CreateRotationRightAngleTest()
        {
            // 90 degree rotations must be exact!
            Matrix3x2 actual = Matrix3x2.CreateRotation(0);

            Assert.Equal(new Matrix3x2(1, 0, 0, 1, 0, 0), actual);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi / 2);
            Assert.Equal(new Matrix3x2(0, 1, -1, 0, 0, 0), actual);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi);
            Assert.Equal(new Matrix3x2(-1, 0, 0, -1, 0, 0), actual);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi * 3 / 2);
            Assert.Equal(new Matrix3x2(0, -1, 1, 0, 0, 0), actual);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi * 2);
            Assert.Equal(new Matrix3x2(1, 0, 0, 1, 0, 0), actual);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi * 5 / 2);
            Assert.Equal(new Matrix3x2(0, 1, -1, 0, 0, 0), actual);

            actual = Matrix3x2.CreateRotation(-MathHelper.Pi / 2);
            Assert.Equal(new Matrix3x2(0, -1, 1, 0, 0, 0), actual);

            // But merely close-to-90 rotations should not be excessively clamped.
            Single delta = MathHelper.ToRadians(0.01f);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi + delta);
            Assert.False(MathHelper.Equal(new Matrix3x2(-1, 0, 0, -1, 0, 0), actual));

            actual = Matrix3x2.CreateRotation(MathHelper.Pi - delta);
            Assert.False(MathHelper.Equal(new Matrix3x2(-1, 0, 0, -1, 0, 0), actual));
        }
Exemplo n.º 6
0
        public void Matrix3x2MultiplyTest3()
        {
            Matrix3x2 a = GenerateMatrixNumberFrom1To6();
            Matrix3x2 b = GenerateMatrixNumberFrom1To6();

            Matrix3x2 expected = new Matrix3x2();

            expected.M11 = a.M11 * b.M11 + a.M12 * b.M21;
            expected.M12 = a.M11 * b.M12 + a.M12 * b.M22;

            expected.M21 = a.M21 * b.M11 + a.M22 * b.M21;
            expected.M22 = a.M21 * b.M12 + a.M22 * b.M22;

            expected.M31 = a.M31 * b.M11 + a.M32 * b.M21 + b.M31;
            expected.M32 = a.M31 * b.M12 + a.M32 * b.M22 + b.M32;
            Matrix3x2 actual;

            actual = Matrix3x2.Multiply(a, b);

            Assert.Equal(expected, actual);

            // Sanity check by comparison with 4x4 multiply.
            a = Matrix3x2.CreateRotation(MathHelper.ToRadians(30)) * Matrix3x2.CreateTranslation(23, 42);
            b = Matrix3x2.CreateScale(3, 7) * Matrix3x2.CreateTranslation(666, -1);

            actual = Matrix3x2.Multiply(a, b);

            Matrix4x4 a44        = new Matrix4x4(a);
            Matrix4x4 b44        = new Matrix4x4(b);
            Matrix4x4 expected44 = Matrix4x4.Multiply(a44, b44);
            Matrix4x4 actual44   = new Matrix4x4(actual);

            Assert.True(MathHelper.Equal(expected44, actual44), "Matrix3x2.Multiply did not return the expected value.");
        }
Exemplo n.º 7
0
 public static bool Equal(Matrix3x2 a, Matrix3x2 b)
 {
     return
         (Equal(a.M11, b.M11) && Equal(a.M12, b.M12) &&
          Equal(a.M21, b.M21) && Equal(a.M22, b.M22) &&
          Equal(a.M31, b.M31) && Equal(a.M32, b.M32));
 }
Exemplo n.º 8
0
        public void Matrix3x2DeterminantTest1()
        {
            Matrix3x2 a = new Matrix3x2();

            a.M11 = 5.0f;
            a.M12 = 2.0f;
            a.M21 = 12.0f;
            a.M22 = 6.8f;
            a.M31 = 6.5f;
            a.M32 = 1.0f;
            Matrix3x2 i;

            Assert.True(Matrix3x2.Invert(a, out i));

            Single detA = a.GetDeterminant();
            Single detI = i.GetDeterminant();
            Single t    = 1.0f / detI;

            // only accurate to 3 precision
            Assert.True(Math.Abs(detA - t) < 1e-3, "Matrix3x2.Determinant was not set correctly.");

            // sanity check against 4x4 version
            Assert.Equal(new Matrix4x4(a).GetDeterminant(), detA);
            Assert.Equal(new Matrix4x4(i).GetDeterminant(), detI);
        }
Exemplo n.º 9
0
        public void Matrix3x2EqualsTest()
        {
            Matrix3x2 a = GenerateMatrixNumberFrom1To6();
            Matrix3x2 b = GenerateMatrixNumberFrom1To6();

            // case 1: compare between same values
            object obj = b;

            bool expected = true;
            bool actual   = a.Equals(obj);

            Assert.Equal(expected, actual);

            // case 2: compare between different values
            b.M11    = 11.0f;
            obj      = b;
            expected = false;
            actual   = a.Equals(obj);
            Assert.Equal(expected, actual);

            // case 3: compare between different types.
            obj      = new Vector4();
            expected = false;
            actual   = a.Equals(obj);
            Assert.Equal(expected, actual);

            // case 3: compare against null.
            obj      = null;
            expected = false;
            actual   = a.Equals(obj);
            Assert.Equal(expected, actual);
        }
Exemplo n.º 10
0
        public void Matrix3x2MultiplyTest6()
        {
            Matrix3x2 a        = GenerateMatrixNumberFrom1To6();
            Matrix3x2 expected = new Matrix3x2(3, 6, 9, 12, 15, 18);
            Matrix3x2 actual   = a * 3;

            Assert.Equal(expected, actual);
        }
Exemplo n.º 11
0
        public void Matrix3x2IdentityTest()
        {
            Matrix3x2 val = new Matrix3x2();

            val.M11 = val.M22 = 1.0f;

            Assert.True(MathHelper.Equal(val, Matrix3x2.Identity), "Matrix3x2.Indentity was not set correctly.");
        }
Exemplo n.º 12
0
        public void Matrix3x2DeterminantTest()
        {
            Matrix3x2 target = Matrix3x2.CreateRotation(MathHelper.ToRadians(30.0f));

            Single val = 1.0f;
            Single det = target.GetDeterminant();

            Assert.True(MathHelper.Equal(val, det), "Matrix3x2.Determinant was not set correctly.");
        }
Exemplo n.º 13
0
        public void Matrix3x2InvertIdentityTest()
        {
            Matrix3x2 mtx = Matrix3x2.Identity;

            Matrix3x2 actual;

            Assert.True(Matrix3x2.Invert(mtx, out actual));

            Assert.True(MathHelper.Equal(actual, Matrix3x2.Identity));
        }
Exemplo n.º 14
0
        public void Matrix3x2SubtractionTest()
        {
            Matrix3x2 a        = GenerateMatrixNumberFrom1To6();
            Matrix3x2 b        = GenerateMatrixNumberFrom1To6();
            Matrix3x2 expected = new Matrix3x2();

            Matrix3x2 actual = a - b;

            Assert.True(MathHelper.Equal(expected, actual), "Matrix3x2.operator - did not return the expected value.");
        }
Exemplo n.º 15
0
        public void Matrix3x2SubtractTest()
        {
            Matrix3x2 a        = GenerateMatrixNumberFrom1To6();
            Matrix3x2 b        = GenerateMatrixNumberFrom1To6();
            Matrix3x2 expected = new Matrix3x2();
            Matrix3x2 actual;

            actual = Matrix3x2.Subtract(a, b);
            Assert.Equal(expected, actual);
        }
Exemplo n.º 16
0
        public void Matrix3x2CreateScaleTest2()
        {
            Single    scale    = 2.0f;
            Matrix3x2 expected = new Matrix3x2(
                2.0f, 0.0f,
                0.0f, 2.0f,
                0.0f, 0.0f);
            Matrix3x2 actual = Matrix3x2.CreateScale(scale);

            Assert.Equal(expected, actual);
        }
Exemplo n.º 17
0
        public void Matrix3x2CreateScaleTest1()
        {
            Vector2   scales   = new Vector2(2.0f, 3.0f);
            Matrix3x2 expected = new Matrix3x2(
                2.0f, 0.0f,
                0.0f, 3.0f,
                0.0f, 0.0f);
            Matrix3x2 actual = Matrix3x2.CreateScale(scales);

            Assert.Equal(expected, actual);
        }
Exemplo n.º 18
0
        public void Matrix3x2GetHashCodeTest()
        {
            Matrix3x2 target   = GenerateMatrixNumberFrom1To6();
            int       expected = unchecked (target.M11.GetHashCode() + target.M12.GetHashCode() +
                                            target.M21.GetHashCode() + target.M22.GetHashCode() +
                                            target.M31.GetHashCode() + target.M32.GetHashCode());
            int actual;

            actual = target.GetHashCode();
            Assert.Equal(expected, actual);
        }
Exemplo n.º 19
0
        public void Matrix3x2CreateTranslationTest1()
        {
            Vector2   position = new Vector2(2.0f, 3.0f);
            Matrix3x2 expected = new Matrix3x2(
                1.0f, 0.0f,
                0.0f, 1.0f,
                2.0f, 3.0f);

            Matrix3x2 actual = Matrix3x2.CreateTranslation(position);

            Assert.Equal(expected, actual);
        }
Exemplo n.º 20
0
        public void Matrix3x2InvertRotationTest()
        {
            Matrix3x2 mtx = Matrix3x2.CreateRotation(2);

            Matrix3x2 actual;

            Assert.True(Matrix3x2.Invert(mtx, out actual));

            Matrix3x2 i = mtx * actual;

            Assert.True(MathHelper.Equal(i, Matrix3x2.Identity));
        }
Exemplo n.º 21
0
        public void Matrix3x2InvertScaleTest()
        {
            Matrix3x2 mtx = Matrix3x2.CreateScale(23, -42);

            Matrix3x2 actual;

            Assert.True(Matrix3x2.Invert(mtx, out actual));

            Matrix3x2 i = mtx * actual;

            Assert.True(MathHelper.Equal(i, Matrix3x2.Identity));
        }
Exemplo n.º 22
0
        static Matrix3x2 GenerateMatrixNumberFrom1To6()
        {
            Matrix3x2 a = new Matrix3x2();

            a.M11 = 1.0f;
            a.M12 = 2.0f;
            a.M21 = 3.0f;
            a.M22 = 4.0f;
            a.M31 = 5.0f;
            a.M32 = 6.0f;
            return(a);
        }
Exemplo n.º 23
0
        public void Matrix3x2CreateScaleTest3()
        {
            Single    xScale   = 2.0f;
            Single    yScale   = 3.0f;
            Matrix3x2 expected = new Matrix3x2(
                2.0f, 0.0f,
                0.0f, 3.0f,
                0.0f, 0.0f);
            Matrix3x2 actual = Matrix3x2.CreateScale(xScale, yScale);

            Assert.Equal(expected, actual);
        }
Exemplo n.º 24
0
        public void Matrix3x2InvertAffineTest()
        {
            Matrix3x2 mtx = Matrix3x2.CreateRotation(2) *
                            Matrix3x2.CreateScale(23, -42) *
                            Matrix3x2.CreateTranslation(17, 53);

            Matrix3x2 actual;

            Assert.True(Matrix3x2.Invert(mtx, out actual));

            Matrix3x2 i = mtx * actual;

            Assert.True(MathHelper.Equal(i, Matrix3x2.Identity));
        }
Exemplo n.º 25
0
        public void Vector2TransformNormal3x2Test()
        {
            Vector2   v = new Vector2(1.0f, 2.0f);
            Matrix3x2 m = Matrix3x2.CreateRotation(MathHelper.ToRadians(30.0f));

            m.M31 = 10.0f;
            m.M32 = 20.0f;

            Vector2 expected = new Vector2(-0.133974612f, 2.232051f);
            Vector2 actual;

            actual = Vector2.TransformNormal(v, m);
            Assert.True(MathHelper.Equal(expected, actual), "Vector2f.Transform did not return the expected value.");
        }
Exemplo n.º 26
0
        public void Matrix3x2CreateTranslationTest2()
        {
            Single xPosition = 2.0f;
            Single yPosition = 3.0f;

            Matrix3x2 expected = new Matrix3x2(
                1.0f, 0.0f,
                0.0f, 1.0f,
                2.0f, 3.0f);

            Matrix3x2 actual = Matrix3x2.CreateTranslation(xPosition, yPosition);

            Assert.Equal(expected, actual);
        }
Exemplo n.º 27
0
        public void Matrix3x2CreateSkewCenterTest()
        {
            Single  skewX = 1, skewY = 2;
            Vector2 center = new Vector2(23, 42);

            Matrix3x2 skewAroundZero         = Matrix3x2.CreateSkew(skewX, skewY, Vector2.Zero);
            Matrix3x2 skewAroundZeroExpected = Matrix3x2.CreateSkew(skewX, skewY);

            Assert.True(MathHelper.Equal(skewAroundZero, skewAroundZeroExpected));

            Matrix3x2 skewAroundCenter         = Matrix3x2.CreateSkew(skewX, skewY, center);
            Matrix3x2 skewAroundCenterExpected = Matrix3x2.CreateTranslation(-center) * Matrix3x2.CreateSkew(skewX, skewY) * Matrix3x2.CreateTranslation(center);

            Assert.True(MathHelper.Equal(skewAroundCenter, skewAroundCenterExpected));
        }
Exemplo n.º 28
0
        public void Matrix3x2CreateRotationCenterTest()
        {
            Single  radians = MathHelper.ToRadians(30.0f);
            Vector2 center  = new Vector2(23, 42);

            Matrix3x2 rotateAroundZero         = Matrix3x2.CreateRotation(radians, Vector2.Zero);
            Matrix3x2 rotateAroundZeroExpected = Matrix3x2.CreateRotation(radians);

            Assert.True(MathHelper.Equal(rotateAroundZero, rotateAroundZeroExpected));

            Matrix3x2 rotateAroundCenter         = Matrix3x2.CreateRotation(radians, center);
            Matrix3x2 rotateAroundCenterExpected = Matrix3x2.CreateTranslation(-center) * Matrix3x2.CreateRotation(radians) * Matrix3x2.CreateTranslation(center);

            Assert.True(MathHelper.Equal(rotateAroundCenter, rotateAroundCenterExpected));
        }
Exemplo n.º 29
0
        public void Matrix3x2CreateScaleCenterTest2()
        {
            Single  scale  = 5;
            Vector2 center = new Vector2(23, 42);

            Matrix3x2 scaleAroundZero         = Matrix3x2.CreateScale(scale, Vector2.Zero);
            Matrix3x2 scaleAroundZeroExpected = Matrix3x2.CreateScale(scale);

            Assert.True(MathHelper.Equal(scaleAroundZero, scaleAroundZeroExpected));

            Matrix3x2 scaleAroundCenter         = Matrix3x2.CreateScale(scale, center);
            Matrix3x2 scaleAroundCenterExpected = Matrix3x2.CreateTranslation(-center) * Matrix3x2.CreateScale(scale) * Matrix3x2.CreateTranslation(center);

            Assert.True(MathHelper.Equal(scaleAroundCenter, scaleAroundCenterExpected));
        }
Exemplo n.º 30
0
        public void Matrix3x2CreateScaleCenterTest3()
        {
            Vector2 scale  = new Vector2(3, 4);
            Vector2 center = new Vector2(23, 42);

            Matrix3x2 scaleAroundZero         = Matrix3x2.CreateScale(scale.X, scale.Y, Vector2.Zero);
            Matrix3x2 scaleAroundZeroExpected = Matrix3x2.CreateScale(scale.X, scale.Y);

            Assert.True(MathHelper.Equal(scaleAroundZero, scaleAroundZeroExpected));

            Matrix3x2 scaleAroundCenter         = Matrix3x2.CreateScale(scale.X, scale.Y, center);
            Matrix3x2 scaleAroundCenterExpected = Matrix3x2.CreateTranslation(-center) * Matrix3x2.CreateScale(scale.X, scale.Y) * Matrix3x2.CreateTranslation(center);

            Assert.True(MathHelper.Equal(scaleAroundCenter, scaleAroundCenterExpected));
        }