コード例 #1
0
        public void Matrix44Inverts()
        {
            var rowMajor = new float[] {
                1, 2, 3, 0,
                0, 1, 4, 0,
                5, 6, 1, 0,
                0, 0, 0, 1,
            };
            var expectedRowMajor = new float[] {
                -11.5f, 8, 2.5f, 0,
                10, -7, -2, 0,
                -2.5f, 2, 0.5f, 0,
                0, 0, 0, 1,
            };
            var determinant = 2f;

            var matrix = SKMatrix44.FromRowMajor(rowMajor);

            Assert.Equal(rowMajor, matrix.ToRowMajor());
            Assert.Equal(determinant, matrix.Determinant());

            var inverted = matrix.Invert();

            Assert.Equal(1f / determinant, inverted.Determinant());

            var actualRowMajor = inverted.ToRowMajor();

            Assert.Equal(expectedRowMajor, actualRowMajor);
        }
コード例 #2
0
        public void MatrixGoesFullCircle()
        {
            var rowMajor = new float[] {
                1, 2, 3, 0,
                0, 1, 4, 0,
                5, 6, 1, 0,
                0, 0, 0, 1,
            };

            var matrix = SKMatrix44.FromRowMajor(rowMajor);
            var result = matrix.ToRowMajor();

            Assert.Equal(rowMajor, result);
        }
コード例 #3
0
        public void Matrix44ConvertsToMatrix()
        {
            var rowMajor44 = new float[] {
                2, 3, 4, 5,
                4, 6, 8, 10,
                6, 9, 12, 15,
                8, 12, 16, 20,
            };
            var rowMajor = new float[] {
                rowMajor44[0], rowMajor44[1], rowMajor44[3],
                rowMajor44[4], rowMajor44[5], rowMajor44[7],
                rowMajor44[12], rowMajor44[13], rowMajor44[15],
            };

            var matrix44 = SKMatrix44.FromRowMajor(rowMajor44);

            Assert.Equal(rowMajor, matrix44.Matrix.Values);
        }
コード例 #4
0
        public void RowMajorColumnMajorTransposes()
        {
            var rowMajor = new float[] {
                1, 2, 3, 0,
                0, 1, 4, 0,
                5, 6, 1, 0,
                0, 0, 0, 1,
            };
            var colMajor = new float[] {
                1, 0, 5, 0,
                2, 1, 6, 0,
                3, 4, 1, 0,
                0, 0, 0, 1,
            };

            var rowMajorMatrix = SKMatrix44.FromRowMajor(rowMajor);
            var colMajorMatrix = rowMajorMatrix.ToColumnMajor();

            Assert.Equal(colMajor, colMajorMatrix);
        }
コード例 #5
0
        public void Matrix44ConvertsToMatrix()
        {
            var rowMajor44 = new float[] {
                2, 3, 4, 5,
                4, 6, 8, 10,
                6, 9, 12, 15,
                8, 12, 16, 20,
            };
            var rowMajor = new float[] {
                rowMajor44[0], rowMajor44[1], rowMajor44[3],
                rowMajor44[4], rowMajor44[5], rowMajor44[7],
                rowMajor44[12], rowMajor44[13], rowMajor44[15],
            };

            var matrix44 = SKMatrix44.FromRowMajor(rowMajor44);

            Assert.Equal(rowMajor, matrix44.Matrix.Values);

            matrix44 = SKMatrix44.CreateRotationDegrees(0, 0, 1, 45);
            Assert.Equal(SKMatrix.MakeRotationDegrees(45).Values, matrix44.Matrix.Values);
        }