Re: [css-transforms] matrix interpolation

As a coincidence, I just wrote to this mailing list to make the same
complaint and suggestion,
http://lists.w3.org/Archives/Public/public-fx/2014JanMar/0084.html

I've put up a demo underlining the problems with the current spec's
mandated interpolation algorithm, see here:
http://people.mozilla.org/~bjacob/transform-animation-not-covariant.html

I even linked to your article, which turned up as the first google search
result for "polar decomposition animation" !

Here's hoping that we can get a polar-decomposition-based solution
accepted...
Benoit


2014-01-08 12:17 GMT-05:00 <css3@userks.e4ward.com>:

> Greetings.
>
> It is delightful to see 3D capabilities coming to CSS styling.
>
> It is disappointing to see the choice for matrix interpolation.
>
> Specifically, I'm looking at Section 20: Interpolation of matrices.
>
>   <http://www.w3.org/TR/css3-transforms/#matrix-interpolation>
>
> The draft standard specifies using a method found in Graphics Gems II,
> edited by Jim Arvo.
>
> However, in 1992 I published a paper with Tom Duff, entitled "Matrix
> Animation and Polar Decomposition", which has important advantages set
> out there.
>
>   <http://academic.research.microsoft.com/Paper/371892.aspx>
>
> For those who do not know the 3D computer graphics literature well, Tom
> Duff (now at Pixar) has two Academy awards for technical contributions,
> and I introduced quaternion animation to computer graphics. So perhaps
> our ideas our worth considering.
>
> And if you had only looked at Graphics Gems IV, you would have found my
> "Polar Matrix Decomposition" on pages 207 through 221, complete with
> implementation code!
>
>   <http://tog.acm.org/resources/GraphicsGems/gemsiv/polar_decomp/>
>
>
>
> We didn't have any special insight into meaningful ways to deal with
> perspective elements in a general (4x4) matrix transform, so we
> improvised for that. Translation is, of course, trivial to split off
> from an affine transform. So the heart of the paper is how best to split
> a (3x3) linear transform into meaningful primitives.
>
> I have great respect for Spencer Thomas, who wrote "unmatrix"; nor is he
> the only one to have taken a stab at this puzzle. Animating matrices is
> generally a method of last resort, and part of the problem is what
> constitutes a good solution.
>
> We claim that a lesser-known numerical analysis split known as the Polar
> Decomposition has a number of advantages over prior efforts, including
> an explicit criterion for a good solution.
>
> For purposes of CSS transforms, note that it is trivial to compute the
> Polar Decomposition of a 2x2 matrix. (The original paper explains how.)
>
> Since the paper was written, numerical analysts have found even more
> clever ways to do the split in higher dimensions; 3x3 matrices require
> little work even with a simple Newton iteration.
>
>   Q_{0} = M
>   Q_{i+1} = ( Q_{i} + Q_{i}^{-T} ) / 2
>
> That is, we set Q to the 3x3 matrix M, and repeatedly average Q with its
> inverse transpose to converge Q to an orthogonal matrix.
>
> A non-singular matrix M has a unique nearest orthogonal matrix, which is
> precisely what we will get -- and what we want. (See the paper.)
>
> Having cleanly split off M's rotation part (possibly with a negation) as
> Q, what remains is purely scaling.
>
>   S = Q^{T} M
>
> It is unrealistic to expect S to be diagonal; Polar Decomposition is
> "physical", essentially independent of coordinate system. So S will in
> general take the form it must when the scaling axes are not the same as
> the matrix axes: it will be symmetric and non-negative definite.
>
> The paper lays out the options and implications for animation once we
> have the split.
>
>
>
> If you have already considered and discarded Polar Decomposition, my
> apologies. If not, I urge you to try it.
>
>  -- Ken Shoemake
>
>
>
>

Received on Friday, 28 February 2014 18:18:10 UTC