Re: [css3-2d-transforms] skew(a,b)

On Wed, Jun 2, 2010 at 10:33 AM, Paul Duffin <pduffin@volantis.com> wrote:
> The specification of skew(a,b) refers to the SVG specification but that does not provide an equivalent matrix.
>
> Assuming
>  A = tan(a)
>  B = tan(b)
>
> skewX(a) is equal to the matrix:
>
> [1 A 0]
> [0 1 0]
> [0 0 1]
>
> skewY(b) is equal to the matrix:
>
> [1 0 0]
> [B 1 0]
> [0 0 1]
>
> skewX(a) x skewY(b) is equal to the matrix:
>
> [AB+1    A    0]
> [   B    1    0]
> [   0    0    1]
>
> skewY(b) x skewX(A) is equal to the matrix:
>
> [   1    A    0]
> [   B AB+1    0]
> [   0    0    1]
>
> But I think that (based on my research on chrome (webkit)) that skew(a,b) should be:
> [1 A 0]
> [B 1 0]
> [0 0 1]
>
> It certainly makes sense.
>

My understanding is that the two-argument form of skew() will be
removed from the next version of the spec. I don't know the actual
basis for that decision, but one problem is that the last matrix you
mentioned -- the one I think most people assume after the definitions
of skewX() and skewY() -- is not actually a skew matrix; for instance,
a skew preserves area, but that matrix does not.

That leaves the two previous matrices, but since either one is a
reasonable choice, letting the user explicitly specify the order is
probably the best approach.

Received on Wednesday, 2 June 2010 16:04:51 UTC