# [css3-2d-transforms] Matrix decomposition for animation

From: Dr. Olaf Hoffmann <Dr.O.Hoffmann@gmx.de>
Date: Wed, 16 Dec 2009 16:49:05 +0100

Message-Id: <200912161649.05579.Dr.O.Hoffmann@gmx.de>
```Hello,

this comment is about
http://www.w3.org/TR/2009/WD-css3-2d-transforms-20091201/

In '7. Matrix decomposition for animation' it is noted:
'The pseudocode below works on a 4x4 homogeneous matrix. A 3x2 2D matrix is
therefore first converted to 4x4 homogeneous form.'

Should it not be noted, how to transform a 3x2 into a 4x4 matrix and back
again into 3x2, because 3x2 seems to be used only for 2d-transforms?
What are the relations between the given numbers a to f to the 4x4 matrix
used to decompose the 3x2 matrix?

What are the relations between the a to f (respectively the 3x2 matrices and
2d-transformations) to the transform functions mentioned at the end of
7. :

matrix3d(1,0,0,0, 0,1,0,0, 0,0,1,0, perspective[0], perspective[1],
perspective[2], perspective[3])
translate3d(translation[0], translation[1], translation[2])
rotateX(rotation[0]) rotateY(rotation[1]) rotateZ(rotation[2])
matrix3d(1,0,0,0, 0,1,0,0, 0,skew[2],1,0, 0,0,0,1)
matrix3d(1,0,0,0, 0,1,0,0, skew[1],0,1,0, 0,0,0,1)
matrix3d(1,0,0,0, skew[0],1,0,0, 0,0,1,0, 0,0,0,1)
scale3d(scale[0], scale[1], scale[2])

How those are related to the transform functions defined
in the 2d-draft?

Is it required to implement 3d-transfroms before doing 2d-transforms?
This does not fit to what is mentioned in CSS3 3d-transforms:
'CSS 3D Transforms extends CSS Transforms '.

Additionally in 8.1 is is noted 'The CSSMatrix interface represents a 4x4
homogeneous matrix.' but the interface descriptions contains only the
six values as defined in 4.
Wouldn't it be useful to decide once and forever, what is relevant for
CSS3-2d-transforms? 3x2 matrices or 4x4 matrices?

As already discussed before, I still think, this complex animation type
for matrix is not very transparent for authors compared to a simple
type with interpolation between the given values.
To approximate an own transformation function with a matrix will
surely be simpler with a simple interpolation instead of such a
decomposition. To get a predictable approximation authors always
have to simulate this complex decomposition, this looks like a lot
of work for those authors to implement something, they are not
interested in, just to see how many (presumable a lot!) animation
values are needed to get the intended effect with a predefined accuracy.
On the other hand, as some mentioned already, this decompositon
method may result in something nice looking for those authors, who
do not really know, what they are doing (Hmmm - why should those
authors animate the matrix type at all, if they do not understand it?
Why should they expect something nice/simple/useful, if they do not
know, what they are doing? ;o)

Therefore I would like to propose to introduce a property to switch
between decomposition and simple interpolation, if there are really
use cases for this decomposition are known by someone.
This avoids a lot of work for those authors, who know what they want
and will be no problem for those, who do not really care, what the
animation effect is.
Simple interpolation would be compatible to SMIL animation as
well , because this interpolates always between the values. Authors
already familiar with SMIL animation just have to switch to simple
interpolation to work with an interpolation method, that they already
know and that is used for many years already.

Olaf
```
Received on Wednesday, 16 December 2009 15:56:20 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 22 May 2012 03:47:12 GMT