Re: [eigen] Rotations and unit vectors |

[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]

On 07.05.2013 17:51, Andreas Keil wrote:

I therefore vote for using a threshold like sqrt(eps) or even smaller in
a debug assert. I would argue that this is the least Eigen should do to
ensure that its AngleAxis and Quaternion classes represent what they are
named after.

`W.r.t the threshold I vote for not being too strict, to avoid breaking
``code, where low precision is sufficient.
`

`W.r.t. Quaternion there is the problem that it is only somehow intended
``to be a unit quaternion but never explicitly named so.
`There are also users who like to use non-unit Quaternions:
http://eigen.tuxfamily.org/bz/show_bug.cgi?id=560

`If it actually was a unit quaternion, then normalize(), normalized(),
``norm() and squaredNorm() could be essentially
``NOPs/accessors/const-expressions, and inverse() would be just an alias
``for conjugate().
`

`However, functions such as toRotationMatrix() or q * v give undefined
``(or unintended) behavior for non-unit quaternions).
`

`I'd like to vote again for adding a new class UnitQuaternion which does
``run-time checks for unity (and exploits all reasonable optimizations)
``and either deprecate the current Quaternion class to introduce a new
``class GeneralQuaternion, which works as suggested in bug 560, or let the
``current Quaternion class behave like a general quaternion.
``That also means that q*v shall return (q*[0;v]*q.conjugate()).vec() or
``should not be implemented at all.
`

`Unfortunately, I think that deprecating/deleting/redefining Quaternion
``is a rather heavy step and at least deleting/redefining must wait until
``Eigen 4.0, to ensure API compatibility.
`
Christoph
--
----------------------------------------------
Dipl.-Inf., Dipl.-Math. Christoph Hertzberg
Cartesium 0.049
Universität Bremen
Enrique-Schmidt-Straße 5
28359 Bremen
Tel: +49 (421) 218-64252
----------------------------------------------