diff --git a/src/core/math/Matrix.js b/src/core/math/Matrix.js index c0a4f02..71b504e 100644 --- a/src/core/math/Matrix.js +++ b/src/core/math/Matrix.js @@ -355,12 +355,6 @@ if (delta < 0.00001 || Math.abs(PI_2 - delta) < 0.00001) { transform.rotation = skewY; - - if (a < 0 && d >= 0) - { - transform.rotation += (transform.rotation <= 0) ? Math.PI : -Math.PI; - } - transform.skew.x = transform.skew.y = 0; } else diff --git a/src/core/math/Matrix.js b/src/core/math/Matrix.js index c0a4f02..71b504e 100644 --- a/src/core/math/Matrix.js +++ b/src/core/math/Matrix.js @@ -355,12 +355,6 @@ if (delta < 0.00001 || Math.abs(PI_2 - delta) < 0.00001) { transform.rotation = skewY; - - if (a < 0 && d >= 0) - { - transform.rotation += (transform.rotation <= 0) ? Math.PI : -Math.PI; - } - transform.skew.x = transform.skew.y = 0; } else diff --git a/test/core/Matrix.js b/test/core/Matrix.js index 9aa2cec..47225c3 100644 --- a/test/core/Matrix.js +++ b/test/core/Matrix.js @@ -197,4 +197,23 @@ expect(transformInitial.ty).to.equal(transformDecomposed.ty); } }); + + it('should decompose corner case', function () + { + const matrix = new PIXI.Matrix(); + const transform = new PIXI.Transform(); + const result = transform.localTransform; + + matrix.a = -0.00001; + matrix.b = -1; + matrix.c = 1; + matrix.d = 0; + matrix.decompose(transform); + transform.updateLocalTransform(); + + expect(result.a).to.closeTo(matrix.a, 0.001); + expect(result.b).to.closeTo(matrix.b, 0.001); + expect(result.c).to.closeTo(matrix.c, 0.001); + expect(result.d).to.closeTo(matrix.d, 0.001); + }); });