W3C home > Mailing lists > Public > www-style@w3.org > January 2011

RE: [css3-transform] definition of skewing

From: Rik Cabanier <cabanier@adobe.com>
Date: Sun, 23 Jan 2011 20:50:26 -0800
To: Alan Gresley <alan@css-class.com>
CC: Simon Fraser <smfr@me.com>, Chris Marrin <cmarrin@apple.com>, "www-style@w3.org" <www-style@w3.org>
Message-ID: <8A13F0222395BD428969E5BA529EFA747767253F63@NAMBX01.corp.adobe.com>
> FWIW if there was a rotate(x, y) the formula for 2D matrix decomposition becomes significantly simpler.

I noticed that the decomposition formula is no longer listed. Was it not correct or is it being rewritten?
The one that was previously listed would return skewx, skewy values.
If you have a case where a rotated element would go from no scale to being flipped, the formula would return skewx = 0 and skewx=180 for either state.
Doing the interpolate between these values would result in infinity at 50%.
Rewriting the formula so it creates a rotate(x, y) would avoid this.

Having rotate(x, y) would also produce results for all the unresolvable matrices and be more precise because you avoid having to counteract tangential behavior.

So, if under the hood, rotate(x, y) is created, that would be fine as well since matrix notation would always solve the issue.

On another not, is there anywhere defined how the values of a decomposed matrix are interpolated?
It seems that if the matrix has a rotation from -170 to 170, that is should really interpolate from 190 to 170.

Rik


-----Original Message-----
From: Rik Cabanier 
Sent: Sunday, January 23, 2011 7:56 PM
To: 'Alan Gresley'
Cc: Simon Fraser; Chris Marrin; www-style@w3.org
Subject: RE: [css3-transform] definition of skewing

Thanks Alan.
It is indeed a bit different and also a bit harder to implement.
I think a user might be hesitant to implement something using a 3d transform.

FWIW if there was a rotate(x, y) the formula for 2D matrix decomposition becomes significantly simpler.

Rik

-----Original Message-----
From: Alan Gresley [mailto:alan@css-class.com]
Sent: Sunday, January 23, 2011 5:30 AM
To: Rik Cabanier
Cc: Simon Fraser; Chris Marrin; www-style@w3.org
Subject: Re: [css3-transform] definition of skewing

> On Jan 17, 2011, at 4:50 PM, Rik Cabanier wrote:
>
>
> Hi Chris,
>
>> I don't see a reason to have such a function. If an author wants to 
>> do such transformations, he can use matrix().
> Having no rotate(a, b) means that we can't use a transition or 
> animation.
>
> Ie if you have an object that rotates into view you want to transition 
> from rotate(0, -90) to rotate(0, 0) There is no way to do this 
> operation with the current rotate/skew/translate primitives.
> Doing it through matrix(...) doesn't work because the transition just 
> interpolates the matrix values (which btw is pretty useless).
>
>> Again, that's what matrix() is for. A skew(x,y) primitive would 
>> always have the issue of ordering between x and y. I think the 
>> current primitives are plenty for allowing authors to construct 
>> matrices.
> The issue is also with transitions/animations.
>
> Also, why would skew(x, y) have an issue of ordering? The matrix
> would be: | 1        tan(x)   0 | | tan(y) 1          0 | | 0
> 0         1 |
>
> It doesn't seem necessary to have a separate skewx/skewy since there 
> is usually no need to concatenate skews...


On 18/01/2011 12:13 PM, Rik Cabanier wrote:
> I've attached an example. It simply rotates a symbol 360 degrees 
> around one of the axis.
>
> Let me know if the attachment doesn't make it and I'll post it online.
>
> Rik


This is not what you were quite seeking (from seeing the attachment) but it is possible to hack it in with generated content. Please view the 2nd and later examples in Safari.

<http://css-class.com/test/css/3/transforms-generated-content.htm>


The sides of the generated content are not quite parallel since they have the same vanishing point as the framework that is transforming.



--
Alan http://css-class.com/

Armies Cannot Stop An Idea Whose Time Has Come. - Victor Hugo
Received on Monday, 24 January 2011 04:51:01 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 17:20:36 GMT