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

On Jun 2, 2010, at 9:04 AM, Brendan Kenny wrote:

> 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.

Skew is there just for compatibility with the 2D matrix capabilites of SVG. That's the motivation for getting rid of the 2 variable form.

-----
~Chris
cmarrin@apple.com

Received on Thursday, 3 June 2010 14:16:48 UTC