On Tue, Aug 31, 2010 at 6:42 PM, Maciej Stachowiak <m...@apple.com> wrote: > > On Aug 31, 2010, at 5:29 PM, Chris Marrin wrote: > >> >> On Aug 31, 2010, at 5:25 PM, Kenneth Russell wrote: >> >>>>> ...Yes, I did the Google search and you're right that the term is not in >>>>> common usage (although I still maintain it's a completely reasonable >>>>> term). The reason I think it's meaningful is because it really is a >>>>> matrix of sorts, but a specialized one that handles only affine >>>>> transformations. We could call it AffineTransform, but then why not call >>>>> our 4x4 matrix HomogeneousTransform? I'd just like to be consistent. >>>> >>>> HomogenousTransform is fine. I would also be fond of PerspectiveProjection. >>> >>> PerspectiveProjection is not a good name for a 4x4 matrix class. Such >>> a matrix might be used to represent an orthographic projection. >>> >>>> I think TransformMatrix is not a good name. It immediately raises the >>>> question, "what kind of transform". I also think Matrix does not need to >>>> be in the name. That is to some extent an implementation detail, from the >>>> mathematical perspective. It's more important to identify the type of >>>> transformation. >>> >>> I'm concerned about the route of adding a class for each kind of >>> transformation. It will lead to a proliferation of confusingly named >>> types and excess type conversion, or re-identification of the type of >>> transformation, when composing transformations. At least in the 3D >>> realm, all that is desired is one simple 4x4 matrix class. Additional >>> classes to represent e.g. 4x3 matrices add unnecessary complexity. > > I don't think we need a huge number, but the 2D affine transform case is > clearly special - it's too expensive to use a 4x4 matrix for this.
Agreed. >> >> I agree. So, in order to appease Maciej :-) what if we keep AffineTransform >> as is, and change TransformationMatrix to Matrix (or Matrix4 if Matrix is >> too generic)? > > Is HomogenousTransform an inaccurate representation of what it does? > > The class has methods such as mapPoint, projectPoint, scale, rotate3d, > applyPerspective, etc. It is clearly oriented around being some sort of > transform, not a generic 4x4 matrix. Is it ever used to represent something > that is not a transform at all? Would you use this class for something > totally unrelated to transforms, for example if you wanted to solve a system > of linear equations via gaussian elimination? My expectation is that you > would not. I would certainly not preclude this possibility. If you look at the implementation of TransformationMatrix, it actually does matrix decomposition to extract components like rotation and perspective of a given transform. I could easily see the need to expose the underlying operations, or other operations like LU decomposition, in the public API. -Ken _______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev