libalmath  1.12
almath/tools/altransformhelpers.h
00001 /*
00002 ** Author(s):
00003 **  - Chris Kilner
00004 **  - Cyrille Collette
00005 **  - David Gouaillier
00006 **
00007 ** Copyright (C) 2011 Aldebaran Robotics
00008 */
00009 
00010 
00011 #pragma once
00012 #ifndef _LIBALMATH_ALMATH_TOOLS_ALTRANSFORMHELPERS_H_
00013 #define _LIBALMATH_ALMATH_TOOLS_ALTRANSFORMHELPERS_H_
00014 
00015 #include <almath/types/alposition3d.h>
00016 #include <almath/types/alposition6d.h>
00017 #include <almath/types/alrotation.h>
00018 #include <almath/types/alrotation3d.h>
00019 #include <almath/types/alvelocity6d.h>
00020 #include <almath/types/altransform.h>
00021 #include <almath/types/alaxismask.h>
00022 #include <almath/types/alpose2d.h>
00023 
00024 namespace AL {
00025   namespace Math {
00026 
00027 
00031 
00040 
00041 
00042 
00043 
00044 
00045 
00046 
00047   void transformLogarithmInPlace(
00048     const Transform& pT,
00049     Velocity6D&      pVel);
00050 
00051 
00055 
00064 
00065 
00066 
00067 
00068 
00069 
00070     Velocity6D transformLogarithm(const Transform& pT);
00071 
00072 
00076 
00080 
00081 
00082 
00083 
00084 
00085 
00086     Transform velocityExponential(const Velocity6D& pVel);
00087 
00088     // TODO: Add to doc or set private.
00089     void velocityExponentialInPlace(
00090       const Velocity6D& pVel,
00091       Transform&        pT);
00092 
00094 
00122 
00123 
00124 
00125 
00126 
00127 
00128 
00129 
00130     void changeReferenceVelocity6D(
00131       const Transform&  pT,
00132       const Velocity6D& pVelIn,
00133       Velocity6D&       pVelOut);
00134 
00136 
00164 
00165 
00166 
00167 
00168 
00169 
00170 
00171 
00172     void changeReferencePosition6D(
00173       const Transform&  pT,
00174       const Position6D& pPosIn,
00175       Position6D&       pPosOut);
00176 
00177     // TODO: rename argument.
00178     void changeReferencePosition3DInPlace(
00179       const Transform& pT,
00180       Position3D&      pPosOut);
00181 
00182     // TODO: rename argument.
00183     void changeReferenceTransposePosition3DInPlace(
00184       const Transform& pT,
00185       Position3D&      pPosOut);
00186 
00188 
00207 
00208 
00209 
00210 
00211 
00212 
00213 
00214 
00215     void changeReferencePosition3D(
00216       const Transform&  pT,
00217       const Position3D& pPosIn,
00218       Position3D&       pPosOut);
00219 
00221 
00233 
00234 
00235 
00236 
00237 
00238 
00239 
00240     void changeReferenceTransposePosition3D(
00241       const Transform&  pT,
00242       const Position3D& pPosIn,
00243       Position3D&       pPosOut);
00244 
00246 
00258 
00259 
00260 
00261 
00262 
00263 
00264 
00265     void changeReferenceTransform(
00266       const Transform& pT,
00267       const Transform& pTIn,
00268       Transform&       pTOut);
00269 
00271 
00283 
00284 
00285 
00286 
00287 
00288 
00289 
00290     void changeReferenceTransposeTransform(
00291       const Transform& pT,
00292       const Transform& pTIn,
00293       Transform&       pTOut);
00294 
00295 
00297 
00325 
00326 
00327 
00328 
00329 
00330 
00331 
00332 
00333     void changeReferenceTransposeVelocity6D(
00334       const Transform&  pT,
00335       const Velocity6D& pVelIn,
00336       Velocity6D&       pVelOut);
00337 
00339 
00367 
00368 
00369 
00370 
00371 
00372 
00373 
00374 
00375     void changeReferenceTransposePosition6D(
00376       const Transform&  pT,
00377       const Position6D& pPosIn,
00378       Position6D&       pPosOut);
00379 
00390     void transformMeanInPlace(
00391       const Transform& pTIn1,
00392       const Transform& pTIn2,
00393       const float&     pVal,
00394       Transform&       pTOut);
00395 
00407     Transform transformMean(
00408       const Transform& pTIn1,
00409       const Transform& pTIn2,
00410       const float&     pVal = 0.5f);
00411 
00414 
00421 
00422 
00423 
00424 
00425 
00426 
00427 
00428 
00429 
00430     Transform transformFromRotationPosition3D(
00431       const Rotation& pRot,
00432       const float&    pX,
00433       const float&    pY,
00434       const float&    pZ);
00435 
00438 
00444 
00445 
00446 
00447 
00448 
00449 
00450 
00451     Transform transformFromRotationPosition3D(
00452       const Rotation&   pRot,
00453       const Position3D& pPos);
00454 
00457 
00468 
00469 
00470 
00471 
00472     void transformFromPosition3DInPlace(
00473       const Position3D& pPosition,
00474       Transform&        pTransform);
00475 
00479 
00490 
00491 
00492 
00493 
00494 
00495 
00496 
00497     Transform transformFromPosition3D(const Position3D& pPosition);
00498 
00502 
00513 
00514 
00515 
00516 
00517     void transformFromRotationInPlace(
00518       const Rotation& pRotation,
00519       Transform&      pTransform);
00520 
00522 
00533 
00534 
00535 
00536 
00537 
00538 
00539     Transform transformFromRotation(const Rotation& pRotation);
00540 
00547     void rotationFromTransformInPlace(
00548       const Transform& pTransform,
00549       Rotation&        pRotation);
00550 
00559     Rotation rotationFromTransform(const Transform& pTransform);
00560 
00569     Rotation3D rotation3DFromRotation(const Rotation& pRotation);
00570 
00577     void position6DFromTransformInPlace(
00578         const Transform& pT,
00579         Position6D&      pPos);
00580 
00587     Position6D position6DFromTransform(const Transform& pT);
00588 
00595     void transformFromPose2DInPlace(
00596         const Pose2D& pPose,
00597         Transform&    pT);
00598 
00605     Transform transformFromPose2D(const Pose2D& pPose);
00606 
00613     void pose2DFromTransformInPlace(
00614         const Transform& pT,
00615         Pose2D&          pPos);
00616 
00623     Pose2D pose2DFromTransform(const Transform& pT);
00624 
00631     Transform transformFromRotation3D(const Rotation3D& pRotation);
00632 
00639     Transform transformFromPosition6D(const Position6D& pPosition6D);
00640 
00650     void position6DFromTransformDiffInPlace(
00651       const Transform& pCurrent,
00652       const Transform& pTarget,
00653       Position6D&      result);
00654 
00664     Position6D position6DFromTransformDiff(
00665       const Transform& pCurrent,
00666       const Transform& pTarget);
00667 
00671 
00685 
00686 
00687 
00688 
00689     void position3DFromTransformInPlace(
00690       const Transform& pT,
00691       Position3D&      pPos);
00692 
00696 
00710 
00711 
00712 
00713 
00714     Position3D position3DFromTransform(const Transform& pT);
00715 
00716 
00724     Rotation3D rotation3DFromTransform(const Transform& pT);
00725 
00734     void transformFromRotVecInPlace(
00735       const int         pAxis,
00736       const float       pTheta,
00737       const Position3D& pPos,
00738       Transform&        pT);
00739 
00748     Transform transformFromRotVec(
00749       const int         pAxis,
00750       const float       pTheta,
00751       const Position3D& pPos);
00752 
00753 
00760     void transformFromRotVecInPlace(
00761       const Position3D& pPos,
00762       Transform&        pT);
00763 
00770     Transform transformFromRotVec(const Position3D& pPos);
00771 
00777 
00780     Transform transformFromRotVec(
00781       const int&   pAxis,
00782       const float& pTheta);
00783 
00784     Position3D operator*(
00785       const Transform&  pT,
00786       const Position3D& pPos);
00787 
00788     Transform& operator+=(
00789       Transform&        pT,
00790       const Position3D& pPos);
00791 
00798     Transform axisRotationProjection(
00799       const Position3D& pPos,
00800       const Transform&  pT);
00801 
00809     Rotation axisRotationProjection(
00810       const Position3D& pAxis,
00811       const Rotation&   pRot);
00812 
00813 
00820     void axisRotationProjectionInPlace(
00821       const Position3D& pPos,
00822       Transform&        pT);
00823 
00830     void axisRotationProjectionInPlace(
00831       const Position3D& pPos,
00832       Rotation&         pRot);
00833 
00834 
00835     void orthogonalSpace(
00836       const Position3D& pPos,
00837       Transform&        pTOut);
00838 
00839     Transform orthogonalSpace(const Position3D& pPos);
00840 
00841   } // namespace Math
00842 } // namespace AL
00843 #endif  // _LIBALMATH_ALMATH_TOOLS_ALTRANSFORMHELPERS_H_
 All Classes Namespaces Functions Variables