rotations.h

Go to the documentation of this file.
00001 
00052 #ifndef _DLR_NUMERIC_ROTATIONS_H_
00053 #define _DLR_NUMERIC_ROTATIONS_H_
00054 
00055 #include <dlrNumeric/quaternion.h>
00056 #include <dlrNumeric/transform3D.h>
00057 #include <dlrNumeric/vector3D.h>
00058 
00059 namespace dlr {
00060 
00061   namespace numeric {
00062 
00066     enum Axis {
00067       DLR_AXIS_X,
00068       DLR_AXIS_Y,
00069       DLR_AXIS_Z
00070     };
00071     
00072       
00093     Quaternion
00094     angleAxisToQuaternion(double angle, const Vector3D& axis,
00095                           bool isNormalized=false);
00096   
00097 
00118     Vector3D
00119     angleAxisToRollPitchYaw(double angle, const Vector3D& axis,
00120                             bool isNormalized=false);
00121   
00122 
00143     Transform3D
00144     angleAxisToTransform3D(double angle, const Vector3D& axis,
00145                            bool isNormalized=false);
00146   
00147 
00197     Transform3D
00198     eulerToTransform3D(double angle0, Axis axis0,
00199                        double angle1, Axis axis1,
00200                        double angle2, Axis axis2);
00201   
00202 
00216     std::pair<double, Vector3D>
00217     quaternionToAngleAxis(const Quaternion& quaternion);
00218   
00219 
00233     Vector3D
00234     quaternionToRollPitchYaw(const Quaternion& quaternion);
00235 
00236 
00250     Transform3D
00251     quaternionToTransform3D(const Quaternion& quaternion);
00252 
00253     
00266     std::pair<double, Vector3D>
00267     rollPitchYawToAngleAxis(const Vector3D& rollPitchYaw);
00268 
00269   
00282     Quaternion
00283     rollPitchYawToQuaternion(const Vector3D& rollPitchYaw);
00284 
00285   
00298     Transform3D
00299     rollPitchYawToTransform3D(const Vector3D& rollPitchYaw);
00300 
00301 
00314     std::pair<double, Vector3D>
00315     transform3DToAngleAxis(const Transform3D& transform3D);
00316 
00317 
00334     Quaternion
00335     transform3DToQuaternion(const Transform3D& transform3D);
00336 
00337 
00350     Vector3D
00351     transform3DToRollPitchYaw(const Transform3D& transform3D);
00352 
00353   } // namespace numeric
00354 
00355 } // namespace dlr
00356 
00357 
00358 /* ======= Declarations to maintain compatibility with legacy code. ======= */
00359 
00360 namespace dlr {
00361 
00362   using numeric::angleAxisToQuaternion;
00363   using numeric::angleAxisToRollPitchYaw;
00364   using numeric::angleAxisToTransform3D;
00365   using numeric::quaternionToAngleAxis;
00366   using numeric::quaternionToRollPitchYaw;
00367   using numeric::quaternionToTransform3D;
00368   using numeric::rollPitchYawToAngleAxis;
00369   using numeric::rollPitchYawToQuaternion;
00370   using numeric::rollPitchYawToTransform3D;
00371   using numeric::transform3DToAngleAxis;
00372   using numeric::transform3DToQuaternion;
00373   using numeric::transform3DToRollPitchYaw;
00374 
00375 } // namespace dlr
00376 
00377 #endif /* #ifndef _DLR_NUMERIC_ROTATIONS_H_ */

Generated on Wed Nov 25 00:42:42 2009 for dlrUtilities Utility Library by  doxygen 1.5.8