Skip to content

Commit 797367c

Browse files
wcandillonfacebook-github-bot
authored andcommitted
Fix skewX on Android and in the JS decomposition (#28862)
Summary: This issue fixes #27649. By using 2d decomposition that transforms a skewX into a rotate/scale/rotate, the skewX issue on Android was still there which made me suspect that the issue came from the decomposition algorithm. Then I noticed that the bug existed in the JavaScript decomposition as well which led me to a fix on the JS and therefore on the Android side most likely. ## Changelog [Android] [Fixed] skewX transforms Pull Request resolved: #28862 Test Plan: Check that skewX works on Android. On JS, making sure that processTransform() doesn't skip, you can try the following sequence: ```tsx const matrix = processTransform([{ skewX: `${Math.PI / 3}rad` }]); const result = MatrixMath.decomposeMatrix(matrix); console.log({ result }); ``` Differential Revision: D21493021 Pulled By: shergin fbshipit-source-id: 89f7aca5fbfd0f0f8c6f90a26bd76bf8550acaa5
1 parent 4b956fe commit 797367c

File tree

2 files changed

+0
-8
lines changed

2 files changed

+0
-8
lines changed

Libraries/Utilities/MatrixMath.js

-4
Original file line numberDiff line numberDiff line change
@@ -651,10 +651,6 @@ const MatrixMath = {
651651
skew[0] = MatrixMath.v3Dot(row[0], row[1]);
652652
row[1] = MatrixMath.v3Combine(row[1], row[0], 1.0, -skew[0]);
653653

654-
// Compute XY shear factor and make 2nd row orthogonal to 1st.
655-
skew[0] = MatrixMath.v3Dot(row[0], row[1]);
656-
row[1] = MatrixMath.v3Combine(row[1], row[0], 1.0, -skew[0]);
657-
658654
// Now, compute Y scale and normalize 2nd row.
659655
scale[1] = MatrixMath.v3Length(row[1]);
660656
row[1] = MatrixMath.v3Normalize(row[1], scale[1]);

ReactAndroid/src/main/java/com/facebook/react/uimanager/MatrixMathHelper.java

-4
Original file line numberDiff line numberDiff line change
@@ -169,10 +169,6 @@ public static void decomposeMatrix(double[] transformMatrix, MatrixDecomposition
169169
skew[0] = v3Dot(row[0], row[1]);
170170
row[1] = v3Combine(row[1], row[0], 1.0, -skew[0]);
171171

172-
// Compute XY shear factor and make 2nd row orthogonal to 1st.
173-
skew[0] = v3Dot(row[0], row[1]);
174-
row[1] = v3Combine(row[1], row[0], 1.0, -skew[0]);
175-
176172
// Now, compute Y scale and normalize 2nd row.
177173
scale[1] = v3Length(row[1]);
178174
row[1] = v3Normalize(row[1], scale[1]);

0 commit comments

Comments
 (0)