Re: [eigen] Do we need geometry refactoring?
• To: eigen@xxxxxxxxxxxxxxxxxxx
• Subject: Re: [eigen] Do we need geometry refactoring?
• From: Hauke Heibel <hauke.heibel@xxxxxxxxxxxxxx>
• Date: Thu, 29 Jul 2010 15:34:40 +0200

On Thu, Jul 29, 2010 at 3:23 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote:
> 2010/7/29 Hauke Heibel <hauke.heibel@xxxxxxxxxxxxxx>:
>> I forgot to comment on this before...
>>
>> On Thu, Jul 29, 2010 at 2:45 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote:
>>>>> Ok, the question is actually whether we want Translation, Quaternion,
>>>>> etc. behave like Transformations?
>>>
>>> Translation and Quaternion are different beasts here.
>>>
>>> The reason for Transform to exist is to represent non-linear (i.e.
>>> affine/projective) transformations.
>>
>> Isn't it only the projective part that makes the whole thing
>> non-linear? It that were true, you have like 2/3rd of the cases being
>> linear ones.
>
> Linear (in this context) means f(ax+by) = af(x)+bf(y). (Equivalently
> it means "a matrix transformation without using any homogeneous
> coords".) That entails in particular f(0)=0. So translations are
> nonlinear, so isometries and general affine transforms are nonlinear ,
> unless of course their translation component is 0.

Ah. I see.

>>
>> ::matrix() (returns a homogenous matrix)
>> ::linear() (returns a pure matrix)
>> ::translation (same as ::matrix(), read only expression)
>
> What do you mean when you say that ::translation() is the same as ::matrix() ?

Sorry, I meant identical to what I proposed for Translation::matrix().

> I agree about having these method in all geometry classes for
> consistency although I wonder about their usefulness in the cases
> where they would be trivial (i.e. linear() in Translation).

It is just about being able to interchange types without being
required to rewrite the code. We can also go for the minimal set of
methods that makes sense, i.e. (both adapted to the Transform names)

RotationBase::matrix()
Translation::translation()

There is even one more thing. An easy one. We should add more static
asserts in Transform. In particular to scale and shearing functions.
They must not be used on Isometries.

- Hauke

 Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/