# Re: [css3-transforms] Multiplication order

Date: Mon, 12 Nov 2012 10:56:21 -0800
To: Boris Zbarsky <bzbarsky@MIT.EDU>
CC: "www-style@w3.org" <www-style@w3.org>
```
On Nov 12, 2012, at 9:36 AM, Boris Zbarsky <bzbarsky@MIT.EDU> wrote:

> I would suggest changing step 3 of the above steps to something like this:
>
> 3.  Multiply on the right by the product of the matrices corresponding
> to the transform functions in the 'transform' property, in the order
> they are given.
>
> or something along those lines.  I _think_ this is correct; I haven't
> triple checked the left vs right in there.  Might be worth doing that.

This confuses me a bit. But am not sure about which part I am confused. Lets say you have the following transform function list for the transform property:

transform: translate() rotate() scale()

Each transform function will be transformed to a matrix which would look like

transform: A B C

where
A is equivalent to translate()
B is equivalent to rotate()
C is equivalent to scale()

The transform origin is 'center'. Therefore, we need to translate before applying the transform function lists. Lets go step by step according to the spec:

We create the identical transformation matrix I: T = I.
2. Translate by the computed X, Y and Z values of ‘transform-origin’
Create a translation matrix and multiply with I: T = I * Trans
3. Multiply by each of the transform functions in ‘transform’ property from left to right
T = I * Trans * A * B * C
4. Translate by the negated computed X, Y and Z values of ‘transform-origin’
T = I * Trans * A * B * C * TransBack

T is the local transformation matrix (or just transformation matrix). To get the CTM, you need to accumulate all transformation matrices.

Is the part that confuses you the part with A * B * C? Or how to multiply these transformation matrices to the identical transform with the translation (I * Trans * A * B * C)? Do you disagree with the order in general?

Greetings,
Dirk
```
Received on Monday, 12 November 2012 18:56:48 UTC

This archive was generated by hypermail 2.4.0 : Monday, 23 January 2023 02:14:21 UTC