本文整理汇总了C#中Matrix.Invert方法的典型用法代码示例。如果您正苦于以下问题:C# Matrix.Invert方法的具体用法?C# Matrix.Invert怎么用?C# Matrix.Invert使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix
的用法示例。
在下文中一共展示了Matrix.Invert方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: A_matrix_multiplied_with_its_inverse_results_in_the_identity_matrix
public void A_matrix_multiplied_with_its_inverse_results_in_the_identity_matrix()
{
var matrix = new Matrix(
1, 0, 0, 3,
0, 2, 0, 5,
0, 0, 4, 7,
0, 0, 0, 1);
Assert.Equal(Matrix.Identity, matrix * matrix.Invert());
}
示例2: Trying_to_invert_a_singular_matrix_causes_an_exception_to_be_thrown
public void Trying_to_invert_a_singular_matrix_causes_an_exception_to_be_thrown()
{
var matrix = new Matrix(
0, 0, 0, 0,
1, 2, 3, 4,
5, 6, 7, 8,
9, 1, 2, 3
);
Assert.Throws<Exception>(() => matrix.Invert());
}
示例3: Multiplication_of_a_matrix_with_its_inverse_is_commutative
public void Multiplication_of_a_matrix_with_its_inverse_is_commutative()
{
var matrix = new Matrix(
1, 0, 0, 3,
0, 2, 0, 5,
0, 0, 4, 7,
0, 0, 0, 1);
var inverse = matrix.Invert();
Assert.Equal(matrix * inverse, inverse * matrix);
}
示例4: Power
public static Matrix Power(Matrix m, int pow) // Power matrix to exponent
{
if (pow == 0) return IdentityMatrix(m.rows, m.cols);
if (pow == 1) return m.Duplicate();
if (pow == -1) return m.Invert();
Matrix x;
if (pow < 0) { x = m.Invert(); pow *= -1; }
else x = m.Duplicate();
Matrix ret = IdentityMatrix(m.rows, m.cols);
while (pow != 0)
{
if ((pow & 1) == 1) ret *= x;
x *= x;
pow >>= 1;
}
return ret;
}
示例5: Invert
public static Matrix Invert(Matrix matrix)
{
Matrix result = new Matrix(matrix);
result.Invert();
return result;
}
示例6: Test
/// <summary>
/// Some test code to check that there are no typing errors in the formulars.
/// </summary>
public static void Test()
{
XMatrix xm1 = new XMatrix(23, -35, 837, 332, -3, 12);
Matrix m1 = new Matrix(23, -35, 837, 332, -3, 12);
DumpMatrix(xm1, m1);
XMatrix xm2 = new XMatrix(12, 235, 245, 42, 33, -56);
Matrix m2 = xm2.ToMatrix();
DumpMatrix(xm2, m2);
// xm1.Multiply(xm2, XMatrixOrder.Prepend);
// m1.Multiply(m2, MatrixOrder.Append);
xm1.Multiply(xm2, XMatrixOrder.Append);
m1.Multiply(m2, MatrixOrder.Append);
DumpMatrix(xm1, m1);
xm1.Translate(-243, 342, XMatrixOrder.Append);
m1.Translate(-243, 342, MatrixOrder.Append);
DumpMatrix(xm1, m1);
xm1.Scale(-5.66, 7.87);
m1.Scale(-5.66f, 7.87f);
// xm1.Scale(-5.66, 7.87, XMatrixOrder.Prepend);
// m1.Scale(-5.66f, 7.87f, MatrixOrder.Prepend);
DumpMatrix(xm1, m1);
xm1.Rotate(135, XMatrixOrder.Append);
m1.Rotate(135, MatrixOrder.Append);
// xm1.Scale(-5.66, 7.87, XMatrixOrder.Prepend);
// m1.Scale(-5.66f, 7.87f, MatrixOrder.Prepend);
DumpMatrix(xm1, m1);
xm1.RotateAt(177, new XPoint(-3456, 654), XMatrixOrder.Append);
m1.RotateAt(177, new PointF(-3456, 654), MatrixOrder.Append);
DumpMatrix(xm1, m1);
xm1.Shear(0.76, -0.87, XMatrixOrder.Prepend);
m1.Shear(0.76f, -0.87f, MatrixOrder.Prepend);
DumpMatrix(xm1, m1);
xm1 = new XMatrix(23, -35, 837, 332, -3, 12);
m1 = new Matrix(23, -35, 837, 332, -3, 12);
XPoint[] xpoints = new XPoint[3]{new XPoint(23, 10), new XPoint(-27, 120), new XPoint(-87, -55)};
PointF[] points = new PointF[3]{new PointF(23, 10), new PointF(-27, 120), new PointF(-87, -55)};
xm1.TransformPoints(xpoints);
m1.TransformPoints(points);
xm1.Invert();
m1.Invert();
DumpMatrix(xm1, m1);
}
示例7: Invert
public static void Invert( ref Matrix m, out Matrix result )
{
result = m;
result.Invert();
}