[csswg-drafts] [css-transforms-1] Decomposing of affine matrix with skew seems wrong (#7318)

nmoucht has just created a new issue for https://github.com/w3c/csswg-drafts:

== [css-transforms-1] Decomposing of affine matrix with skew seems wrong ==
I am investigating some css transform wpt test failures for WebKit and https://www.w3.org/TR/css-transforms-1/#interpolation-of-2d-matrices, specifically the calculation of scale, produces a different scale than what produced the transformation matrix when there is also a skew value. For example in css/css-transforms/animation/transform-interpolation-005.html, there is an interpolation from `scaleY(7)` -> `skewX(45deg)` `scaleX(7)`. The decomposition of the scaleY matrix produces the expected decomposed functions, however for the skewX scaleX matrix, we are getting `scale(7, 1.414)` `m = [1 0 0.707 0.707]`. When blended at `0.5` with the scaleY matrix we get `scale(4,4.21)` ` m = [1 0 0.35 0.85]` which recomposes to `matrix(4 0 1.49 3.59 0 0)`, which doesn't match the expected matrix `matrix(4 0 2 4 0 0).` 

Clearly `scale(7, 1.414)`  doesn't match `scaleX(7)`, however from my understanding we are following correctly how the spec calculates scale, since it is clear that in `scale[1] = sqrt(row1x * row1x + row1y * row1y)`, this calculation is being impacted by the presence of a skew value. The unmatrix method being referenced in the spec only guarantees that the decomposed functions would result in the same matrix when recomposed (which it does in this case), and doesn't necessarily guarantee that they will be the same as the functions that originally produced that matrix. My question is, is it guaranteed that the blending of these decomposed functions would be the same as blending the original functions that produced the transform matrix? If it is the case that is guaranteed, if someone could help understand how we are not following the spec, that would be helpful.

Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/7318 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Thursday, 26 May 2022 22:02:08 UTC