On Wed, Sep 1, 2010 at 11:43 AM, Chris Marrin <[email protected]> wrote:
>
> On Aug 31, 2010, at 6:59 PM, Kenneth Russell wrote:
>
>> On Tue, Aug 31, 2010 at 6:42 PM, Maciej Stachowiak <[email protected]> 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
>
> But I agree with Maciej that all of the public API is transformation 
> oriented. Even things like inverse() and transpose() have application in 
> doing transforms. I think it would be a stretch to use this 4x4 matrix for 
> general purposes. A general matrix class usually has to deal with different 
> dimensions, for instance.
>
> But I am loath to call it HomogeneousTransform, given the fact that Maciej 
> and I have spelled it differently (both are accepted spellings) and it will 
> be really hard for people to get used to spelling such an uncommon word.
>
> If you look at the "Uses" section of 
> http://en.wikipedia.org/wiki/Transformation_matrix you'll see that they 
> consider the term improper as well. And they have a good point. Since they 
> recommend the term "general transformation matrix" to distinguish it from the 
> more restricted "affine transformation", then simply calling it Transform 
> seems appropriate.

It's fine, though I'd prefer Matrix4.

-Ken
_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to