Пример #1
0
        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));
        }
Пример #2
0
        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);
        }
Пример #3
0
        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));
        }
Пример #4
0
 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);
 }