Browse Source

Merge pull request #8256 from kaminova/master

Fix calculation of inverted matrix
pull/8284/head
Max Katz 4 years ago
committed by GitHub
parent
commit
56aa1eefe1
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      src/Avalonia.Base/Matrix.cs
  2. 10
      tests/Avalonia.Base.UnitTests/Media/MatrixTests.cs

4
src/Avalonia.Base/Matrix.cs

@ -450,13 +450,13 @@ namespace Avalonia
inverted = new Matrix(
(_m22 * _m33 - _m32 * _m23) * invdet,
(_m13 * _m31 - _m12 * _m33) * invdet,
(_m13 * _m32 - _m12 * _m33) * invdet,
(_m12 * _m23 - _m13 * _m22) * invdet,
(_m23 * _m31 - _m21 * _m33) * invdet,
(_m11 * _m33 - _m13 * _m31) * invdet,
(_m21 * _m13 - _m11 * _m23) * invdet,
(_m21 * _m32 - _m31 * _m22) * invdet,
(_m21 * _m12 - _m11 * _m32) * invdet,
(_m31 * _m12 - _m11 * _m32) * invdet,
(_m11 * _m22 - _m21 * _m12) * invdet
);

10
tests/Avalonia.Base.UnitTests/Media/MatrixTests.cs

@ -30,6 +30,16 @@ namespace Avalonia.Base.UnitTests.Media
Assert.True(matrix.HasInverse);
}
[Fact]
public void Invert_Should_Work()
{
var matrix = new Matrix(1, 2, 3, 0, 1, 4, 5, 6, 0);
var inverted = matrix.Invert();
Assert.Equal(matrix * inverted, Matrix.Identity);
Assert.Equal(inverted * matrix, Matrix.Identity);
}
[Fact]
public void Can_Decompose_Translation()
{

Loading…
Cancel
Save