Re: [eigen] Do we need geometry refactoring?

[ Thread Index | Date Index | More Archives ]

hm, maybe the name Transform is not precise enough and confusing. So
what about introducing three types: ProjectiveTransform,  Affine, and
CompactAffine. They would internally inherit a common base class to
factorize what can be factorized. And to better unify all
transformation classes (Projective, Translation, Quaternion, etc.)
what about having  a common base class for them exposing a common API
(including the translation, linear, etc. parts). The inheritance
diagram would look like the following:

 <- RotationBase
    <- Quaternion
    <- Rotation2D
    <- etc.
  <- Translation
  <- UniformScaling
  <- MatrixTransformBase
    <- Projective
    <- Affine
    <- CompactAffine

Just a rough idea to further improve the current design...


On Wed, Aug 4, 2010 at 11:41 AM, Gael Guennebaud
<gael.guennebaud@xxxxxxxxx> wrote:
> On Tue, Aug 3, 2010 at 4:42 PM, Hauke Heibel
> <hauke.heibel@xxxxxxxxxxxxxx> wrote:
>> On Tue, Aug 3, 2010 at 3:53 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote:
>>>> - It is unintuitive that the most generic Transformation is affine
>>> Let's focus on this point because it looks crucial to me. The most
>>> generic transformation is definitely projective, there's no question
>>> about that, the questions discussed here are:
>>>  a) what should the default value for Mode be?
>>>  b) what should the Transform3f (etc) typedefs stand for?
>>> Obviously, a typedef named "Transform3f" has to use the default mode,
>>> but at the same time that name "Transform3f" does suggest something
>>> generic, whence the confusion in this discussion between "default" and
>>> "generic".
>> Right, you nailed it. So, we agree that Transform3f is likely to
>> suggest something generic.
>>> What do you think about this plan:
>>>  - we just remove the Transform3f... typedefs. We just force the user
>>> to use the mode-specific typedefs such as Affine3f, Projective3f, etc.
>>>  - we don't give Mode any default value.
>>>  - in the tutorials, we focus (at least at the start) on Affine
>>> transforms, Affine3f etc, so that the intuitive idea that 3D-transform
>>> * 3D-vector gives a 3D-vector. Of course we then do explain other
>>> kinds of transform.
>> Sound like a plan. Gael, do you have any opinion?
> while reading this thread this morning I was going to suggest the
> same, so yes I agree ;)
> gael
>> - Hauke

Mail converted by MHonArc 2.6.19+