- From: Benoit Jacob <jacob.benoit.1@gmail.com>
- Date: Fri, 28 Feb 2014 13:13:35 -0500
- To: Dirk Schulze <dschulze@adobe.com>
- Cc: "L. David Baron" <dbaron@dbaron.org>, "public-fx@frink.w3.org" <public-fx@frink.w3.org>, css3@userks.e4ward.com
- Message-ID: <CAJTmd9rT3ibTO8DgHfwUrmWHYRW1vg=B3dny5JUFNc3o=0vymQ@mail.gmail.com>
Many thanks for the links; I didn't realize at all that Ken Shoemake had recently written to this list about this. I will reply on that thread. Benoit 2014-02-28 12:58 GMT-05:00 Dirk Schulze <dschulze@adobe.com>: > > On Feb 28, 2014, at 6:18 PM, Benoit Jacob <jacob.benoit.1@gmail.com> > wrote: > > > > > > > > > 2014-02-27 11:54 GMT-05:00 Dirk Schulze <dschulze@adobe.com>: > > > > On Feb 27, 2014, at 5:30 PM, Benoit Jacob <jacob.benoit.1@gmail.com> > wrote: > > > > > I followed this link, > http://dev.w3.org/csswg/css-transforms/#matrix-interpolation, and it made > me sad. > > > > > > When interpolating between two matrices, each matrix is decomposed > into the corresponding translation, rotation, scale, skew and (for a 3D > matrix) perspective values. > > > > > > This makes no sense in any geometric way, i.e. in any > coordinate-independent way. Matrices can be decomposed in such a way, but > graphics don't really care about matrices --- graphics care about > transformations that can be represented by matrices in particular > coordinate systems. The only matrix operations that graphics wants to use, > then, are matrix transformations that have a coordinate-independent > meaning. For example, matrix product has a coordinate-independent meaning > as composition of transformations. But "decompose a matrix into the > corresponding translation, rotation, scale, skew and perspective values" > has no coordinate-independent meaning. > > > > Could you elaborate what you mean with coordinate independent? A > transformation matrix transforms the current coordinate space. A > transformation matrix viewed in an isolation is independent of coordinates. > The coordinate system however is defined by the current transformation > matrix. In a regular, cartesian coordinate system that we use for markup > languages, this transformation matrix is the identity transform. > Transformation functions like translate(), rotate() and others can be > represented by transformation matrices. > > > > A slerp based decomposing approach as for 3D matrices in CSS Transforms > is a widely used and recognized way for interpolation. As is the euler > based approach for 2D matrix decomposing. Both decomposing algorithms > produce reasonable and pleasant results. The intermediate decomposing > values can be seen as translation, rotation, scale and skew values. For 3D > matrix decomposing we have some slerp parameters as quarternion values. > > > > Here is a visual demonstration of this issue: > > http://people.mozilla.org/~bjacob/transform-animation-not-covariant.html > > (Also as attachment to this email). > > > > Explanations are given in that page. > > > > I hope that the problem is easy for everyone to see now. > > Your example looks very convincing. I admit that I misinterpreted your > previous message. My apologies. > > The suggested Polar Decomposing was introduced to this list by Ken > Shoemake before [1][2]. The general overhead for implementations seems > reasonable and comparable with the current slerp based approach in the spec. > > Ultimately it is up to the UAs if they want to follow the Polar > Decomposing approach or the current one in the spec. In the past UAs tended > to prefer the decomposing code in Safari because content already relied on > it. > > I am willing to change the decomposing code to any preferred algorithm. > Note that the decomposing code is the last resort for transform list > interpolations at the moment. > > Greetings, > Dirk > > [1] http://lists.w3.org/Archives/Public/public-fx/2014JanMar/0014.html > [2] > http://research.cs.wisc.edu/graphics/Courses/838-s2002/Papers/polar-decomp.pdf > > > > > Benoit > > <transform-animation-not-covariant.html> > >
Received on Friday, 28 February 2014 18:14:38 UTC