- From: Dr. Olaf Hoffmann <Dr.O.Hoffmann@gmx.de>
- Date: Tue, 31 Mar 2009 14:14:43 +0100
- To: www-style@w3.org
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