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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
12 additions and
2 deletions
-
src/Avalonia.Base/Matrix.cs
-
tests/Avalonia.Base.UnitTests/Media/MatrixTests.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 |
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
@ -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() |
|
|
|
{ |
|
|
|
|