Re: [css3-2d-transforms] matrix animation

Chris Marrin:

....
>Ok, I think I'm starting to understand where the disconnect lies. I  
>believe you are very cleverly using the 4x4 matrix from the CSSMatrix  
>object to solve a set of simultaneous equations. My knowledge of  
>fractals is very weak, so forgive me if my thinking is off, but that's  
>what it looks like. That's great and matrices are very well suited to  
>such a task. The CSSMatrix is in fact a general 4x4 matrix system with  
>a set of mathematical functions which make it possible for you to make  
>your Iterated Function Systems.

With 2D-transforms with SVG there are some resources in the internet
from different authors. Because the initial shapes are simple, the advanced
graphical possibilities of SVG are not directly required, however the massive
transformed reuse of content is. Simple 3D-IFS on the web not in raster 
images would be something relatively new on the web, even more 
animated 3D-IFS, but it will take some more years until a typical browser 
with a typical CPU will manage more advanced samples of this type.
But because it can take some years, until something is really widely
used, what is now a draft only, it is now a perfect time to specify things
in such a way, that those applications are available in 4 or 5 years, 
when the CPUS/GPUs are ready to manage something more advanced
than a simple showcase.

>Therefore it has certain constraints, the most  
>significant of which is that the matrix must be invertible. This is  
>because we use the matrix to do (among other things) hit testing,  
>which requires inversion to map coordinates into the parent system.

Here you get already a problem with scaling/mirroring. 
And I looked again into my SVG animation tests - and indeed
WebKit has already problems with simple scale animations 
containing something not invertable within the animation -
WebKit was simply frozen/crashed, unfortunately not always
reproducable, therefore not obvious, what the problem really is.
Of course, it should not freeze, if a zero scaling appears - this
is not specified for SVG ;o)


For rotate, scale and translate it is quite obvious, what should
happen, if interpolated (between the provided parameters),
skewing gets already interesting for angles, where a matrix
component gets infinite - however still managable, as can be
seen in SVG viewers. For all of them you can simple write
down a (simple and explicit) formula for the time dependent 
transformation.
Can you do it for matrix+decomposition? Suddenly this 
shows a completly different behaviour, it does not 
interpolate between the given values anymore, it is
not obvious, how to explain the behaviour different than
'complex' for example in a tutorial.

Concerning this, it could be interesting especially for
authors to note something about the behaviour of the
decomposition and animation. For example, assume
we have a set of N transformations at the beginning
(an arbitrary mix of rotation, scaling, skewing, translation,
several of them in arbitrary order). We have the same
list of N transforms in the same order, but only with different 
values as the end of a transition.
Now we compute the matrix for both lists and try an
animation between the two matrices with decomposition.
Is it the same visual effect or something quite different?
It did not try to prove this yet or did not try to find an
example, showing, that this results in different effects
in general. 
Does anyone now more about it?


>Until then, I think it makes the most sense to use CSSMatrix to  
>compute and maintain your IFS data and then use JavaScript to iterate  
>it as needed. With the great performance of the WebKit JS engine, I  
>think that's entirely practical.

In my case it will be more PHP instead of JS, because I do not rely
on JS. I have it always switched off on unkown pages in my viewers
and do not use viewers, if it cannot be switched off for unkown pages.
For the audience I do not expect something different.
Therefore only declarative approaches are applicable for me. Advanced 
transformations within SVG or CSS could have an interesting impact
on the file size, if available, if not, all this has to be approximated with
PHP scripts producing sometimes pretty large files for else pretty 
trivial issues.

Olaf

Received on Tuesday, 31 March 2009 13:24:14 UTC