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); }
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); }
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); }
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); }
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); }