Re: [eigen] Re: Rigid transformations in eigen: use of dual quaternions
• To: eigen@xxxxxxxxxxxxxxxxxxx
• Subject: Re: [eigen] Re: Rigid transformations in eigen: use of dual quaternions
• From: Rohit Garg <rpg.314@xxxxxxxxx>
• Date: Sat, 12 Sep 2009 20:20:31 +0530

```On Sat, Sep 12, 2009 at 7:59 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote:
> careful, your patch affects test/CMakeLists.txt in unwanted ways !

Oh I commented out the unit tests I wasn't gonna build. That's all.
Ignore that part.

> that aside: for now, we only dealt with unit quaternions. These are
> the quaternions that correspond to 3D rotations.
>
> That's the main reason why we didn't implement q1+q2 and q*scalar.

I tried implementing dual quats over eigen quats, and that's where I
ran into this.

> Now your patch does work, but it's not always efficient, because the
> operators return by value and so when you do s1*q1+s2*q2 you traverse
> the arrays 3 times instead of once. Again this doesn't matter with
> floats and SSE, but it does with double and/or without SSE.

Oh yeah, that's true :(
>
> Making this efficient would require again doing expression templates.
> If we wanted to take that route, I guess we could as well make
> Quaternion inherit MatrixBase instead of reimplementing everything.

Ok, so rotationbase is different from matrixbase. Thanks for clearing that up.

> even Matrix. I don't remember the chain of thinking that led to the
> current design, it's Gael who took care of that. It has the advantage
> of being simple and covering _unit_ quaternions appropriately.
>
> But are you sure that what you're trying to do with s1*q1+s2*q2 isn't
> just the same as slerp() ? because it looks seriously reminiscent of
> it!

The form is like that, but it is not slerp. That would have made my
job so much easier :|

--
Rohit Garg

http://rpg-314.blogspot.com/