[eigen] Quaternion toRotationMatrix |
[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]
Hello, I have the following suggestions for the function toRotationMatrix() for the QuaternionBase class: The function is shown here: http://pastebin.com/QPRANVU6 The documentation says that this function is undefined if a non unit quaternion is used! This is absolutely correct! The function so far implemented is equation 1.112 in http://snag.gy/J6rDH.jpg ( tilde is the skew-symetric matrix of a vector -> cross product) If we want to use the Eigen function toRotationMatrix() we need to normalize the quaternion beforehand which is expensive! A better way is to use equation 1.110 directly in http://snag.gy/J6rDH.jpg, which directly normalizes the quaternion but only needs the square norm of the quaternion "s" which is much cheaper. Equation 1.110 directly gives a proper rotation matrix! (orthogonal, and det(R)=1) I would provide the following adaption: template<bool isQuaternionNormalized = false> QuaternionBase<...>::toRotationMatrix() where toRotationMatrix<true> -> same function as already implemented (user should use this if quaternion is already normalized) toRotationMatrix<false> -> no normalized quaternion is given as argument, use an implementation which uses equation 1.110 in http://snag.gy/J6rDH.jpg Maybe the default behavior should be "true" so there is no change to the interface for the user who used these functions.... BR Gabriel Nützi |
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |