Skip to content

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

@nmoucht

Description

@nmoucht

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions