- From: Oli Studholme <w3-style@boblet.net>
- Date: Fri, 18 Feb 2011 03:33:34 +0900
- To: www-style <www-style@w3.org>
Hey all,
I’ve been trying to work out transform:matrix(), and have been finding
it tough going. For the non-mathematicians in the house, the current
definition of the matrix transformation function is a little opaque:
“matrix(<number>, <number>, <number>, <number>, <number>,
<number>) specifies a 2D transformation in the form of a
transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent
to applying the transformation matrix [a b c d e f].”
http://www.w3.org/TR/css3-2d-transforms/#transform-functions
While being almost poetic in a zen koan kinda way, this is possibly
not so helpful to anyone not already familiar with transformation
matrices.
Keeping in mind I’m not already familiar with them, it seems to me that:
a = scaleX(sX)
b = skewY(tan(aY))
c = skewX(tan(aX))
d = scaleY(sY)
e = translateX(tX)
f = translateY(tY)
So could
matrix(<number>, <number>, <number>, <number>, <number>, <number>)
be rewritten as
matrix(<scaleX(sX)>, <skewY(tan(aY))>, <skewX(tan(aX))>,
<scaleY(sY)>, <translateX(tX)>, <translateY(tY)>)
?
I’d personally find that more useful than number number number… ;)
As to my actual problem, I can’t seem to work out how to reproduce
this series of transforms as a matrix:
transform: translate(50px, -24px) rotate(180deg) scale(.5) skewY(22.5deg)
http://oli.jp/bugs/browser/matrix-rotate-skew2.html
My problem is the matrix version rotates counter-clockwise. Is this
series of transforms not possible to represent as a matrix, or am I
missing something in the algebra dept? I think we can’t transition
rotations larger than 360° with transform:matrix() — is there anything
else they can’t do?
Thanks for your help!
peace - oli studholme
@boblet
Received on Thursday, 17 February 2011 18:42:51 UTC