public void CreateFromColumnsTest()
        {
            Vector3   column0 = new Vector3(1, 4, 7);
            Vector3   column1 = new Vector3(2, 5, 8);
            Vector3   column2 = new Vector3(3, 6, 9);
            Matrix3x3 matrix  = Matrix3x3.CreateFromColumns(column0, column1, column2);

            float[] array = matrix.ToArray();

            for (int i = 0; i < 9; i++)
            {
                Assert.AreEqual(array[i], (float)(i + 1));
            }

            Assert.AreEqual(column0, matrix.GetColumn(0));
            Assert.AreEqual(column1, matrix.GetColumn(1));
            Assert.AreEqual(column2, matrix.GetColumn(2));

            Assert.ThrowsException <ArgumentException>(() =>
            {
                matrix.GetColumn(-1);
            }
                                                       );

            Assert.ThrowsException <ArgumentException>(() =>
            {
                matrix.GetColumn(3);
            }
                                                       );
        }
예제 #2
0
        private Vector3 CalculateBarycentric(int x, int y, FilledTriangle triangle)
        {
            var d = new Vector3(x, y, 1);

            var w  = triangle.A.Determinant;
            var wx = Matrix3x3.CreateFromColumns(d, triangle.VB, triangle.VC).Determinant;
            var wy = Matrix3x3.CreateFromColumns(triangle.VA, d, triangle.VC).Determinant;
            var wz = Matrix3x3.CreateFromColumns(triangle.VA, triangle.VB, d).Determinant;

            var xA = wx / w;
            var xB = wy / w;
            var xC = wz / w;

            return(new Vector3(xA, xB, xC));
        }