public void TestMultiplyByMatrix() { const double angle = Math.PI / 4.0; double cos = Math.Cos(angle / 2.0); double sin = Math.Sin(angle / 2.0); double a = cos * cos - sin * sin / 3.0; double b = 2.0 * (sin * sin + sin * cos * Math.Sqrt(3.0)) / 3.0; double c = 2.0 * (sin * sin - sin * cos * Math.Sqrt(3.0)) / 3.0; // The matrix here is formed from the orthonormal set obtained by rotating // the x-axis, y-axis, and z-axis through an angle of 45 degrees about // the (1,1,1) vector. Matrix3By3 matrix = new Matrix3By3(a, c, b, b, a, c, c, b, a); Matrix3By3 transpose = matrix.Transpose(); Matrix3By3 result = matrix.Multiply(transpose); Assert.IsTrue(result.EqualsEpsilon(Matrix3By3.Identity, Constants.Epsilon16)); result = matrix * transpose; Assert.IsTrue(result.EqualsEpsilon(Matrix3By3.Identity, Constants.Epsilon16)); }
public void TestTranspose() { Matrix3By3 original = new Matrix3By3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0); Matrix3By3 transposed = original.Transpose(); Assert.AreEqual(transposed.M11, original.M11); Assert.AreEqual(transposed.M12, original.M21); Assert.AreEqual(transposed.M13, original.M31); Assert.AreEqual(transposed.M21, original.M12); Assert.AreEqual(transposed.M22, original.M22); Assert.AreEqual(transposed.M23, original.M32); Assert.AreEqual(transposed.M31, original.M13); Assert.AreEqual(transposed.M32, original.M23); Assert.AreEqual(transposed.M33, original.M33); }
public void TestMultiplyByMatrix() { double angle = Math.PI / 4.0; double cos = Math.Cos(angle / 2.0); double sin = Math.Sin(angle / 2.0); double a = cos * cos - sin * sin / 3.0; double b = 2.0 * (sin * sin + sin * cos * Math.Sqrt(3.0)) / 3.0; double c = 2.0 * (sin * sin - sin * cos * Math.Sqrt(3.0)) / 3.0; // The matrix here is formed from the orthonormal set obtained by rotating // the x-axis, y-axis, and z-axis through an angle of 45 degrees about // the (1,1,1) vector. Matrix3By3 test = new Matrix3By3(a, c, b, b, a, c, c, b, a); Matrix3By3 transpose = test.Transpose(); Matrix3By3 result = test.Multiply(transpose); Assert.IsTrue(result.EqualsEpsilon(Matrix3By3.Identity, 1e-16)); result = test * transpose; Assert.IsTrue(result.EqualsEpsilon(Matrix3By3.Identity, 1e-16)); }