On Sat, Jun 7, 2014 at 9:38 PM, Benoit Jacob <jacob.benoi...@gmail.com> wrote:
> > > > 2014-06-07 12:49 GMT-04:00 L. David Baron <dba...@dbaron.org>: > > On Monday 2014-06-02 20:45 -0700, Rik Cabanier wrote: >> > - change isIdentity() so it's a flag. >> >> I'm a little worried about this one at first glance. >> >> I suspect isIdentity is going to be used primarily for optimization. >> But we want optimizations on the Web to be good -- we should care >> about making it easy for authors to care about performance. And I'm >> worried that a flag-based isIdentity will not be useful for >> optimization because it won't hit many of the cases that authors >> care about, e.g., translating and un-translating, or scaling and >> un-scaling. >> > > Note that the current way that isIdentity() works also fails to offer that > characteristic, outside of accidental cases, due to how floating point > works. > > The point of this optimizations is not so much to detect when a generic > transformation happens to be of a special form, it is rather to represent > transformations as a kind of variant type where "matrix transformation" is > one possible variant type, and exists alongside the default, more optimized > type, "identity transformation". > > Earlier in this thread I pleaded for the removal of isIdentity(). What I > mean is that as it only is defensible as a "variant" optimization as > described above, it doesn't make sense in a _matrix_ class. If we want to > have such a variant type, we should call it a name that does not contain > the word "matrix", and we should have it one level above where we actually > do matrix arithmetic. > > Strawman class diagram: > > Transformation > / | \ > / | \ > / | \ > / | \ > Identity Matrix Other transform types > e.g. Translation > > In such a world, the class containing the word "Matrix" in its name would > not have a isIdentity() method; and for use cases where having a "variant > type" that can avoid being a full blown matrix is meaningful, we would have > such a variant type, like "Transformation" in the above diagram, and the > isIdentity() method there would be merely asking the variant type for its > type field. > Note that DOMMatrix implements the following under the hood: DOMMatrix / | \ / | \ / | \ / | \ Identity 2D-Matrix 3D-Matrix _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform