Re: [css3-2d-transforms] Interop: matrix() values e,f <number> or <length>

On Nov 17, 2010, at 6:18 PM, Boris Zbarsky wrote:

> On 11/17/10 8:32 PM, Brendan Kenny wrote:
>> I just mean the matrix is a manipulation of a space, which must have
>> units because you are specifying points to be transformed using them.
> 
> Why?
> 
> In particular, thinking of affine transforms as operations on P^2 involves thinking of your 2-element vectors as vectors in homogeneous coordinates.  The particular way you do that defines what your matrix means, right?

I agree that the matrix() should be unitless, and not because of its mathematical "correctness". I just think it is confusing to authors to require units in 2 parameters and not the others. Think about matrix() for 3D transforms. There you pass 16 numbers. Parameters m41, m42 and m43 typically represent the translation of the coordinates. Should those 3 parameters be required to have units, but the other 13 are required to have no units? That's very confusing.

If you're using matrix() you're doing some (possibly very complex) math, so you should provide no units. If you simply want to translate, then you should use translate() which does require units.

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

Received on Thursday, 18 November 2010 14:51:24 UTC