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."); }
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."); }
static Matrix3x2 GenerateTestMatrix() { Matrix3x2 m = Matrix3x2.CreateRotation(MathHelper.ToRadians(30.0f)); m.Translation = new Vector2(111.0f, 222.0f); return(m); }
public void Matrix3x2CreateSkewIdentityTest() { Matrix3x2 expected = Matrix3x2.Identity; Matrix3x2 actual = Matrix3x2.CreateSkew(0, 0); Assert.Equal(expected, actual); }
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)); }
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."); }
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)); }
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); }
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); }
public void Matrix3x2MultiplyTest6() { Matrix3x2 a = GenerateMatrixNumberFrom1To6(); Matrix3x2 expected = new Matrix3x2(3, 6, 9, 12, 15, 18); Matrix3x2 actual = a * 3; Assert.Equal(expected, actual); }
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."); }
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."); }
public void Matrix3x2InvertIdentityTest() { Matrix3x2 mtx = Matrix3x2.Identity; Matrix3x2 actual; Assert.True(Matrix3x2.Invert(mtx, out actual)); Assert.True(MathHelper.Equal(actual, Matrix3x2.Identity)); }
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."); }
public void Matrix3x2SubtractTest() { Matrix3x2 a = GenerateMatrixNumberFrom1To6(); Matrix3x2 b = GenerateMatrixNumberFrom1To6(); Matrix3x2 expected = new Matrix3x2(); Matrix3x2 actual; actual = Matrix3x2.Subtract(a, b); Assert.Equal(expected, actual); }
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); }
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); }
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); }
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); }
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)); }
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)); }
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); }
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); }
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)); }
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."); }
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); }
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)); }
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)); }
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)); }
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)); }