9 #ifndef _LIBALMATH_ALMATH_TOOLS_ALTRANSFORMHELPERS_H_
10 #define _LIBALMATH_ALMATH_TOOLS_ALTRANSFORMHELPERS_H_
12 #include <almath/types/alposition2d.h>
13 #include <almath/types/alposition3d.h>
14 #include <almath/types/alposition6d.h>
15 #include <almath/types/alrotation.h>
16 #include <almath/types/alrotation3d.h>
17 #include <almath/types/alvelocity6d.h>
18 #include <almath/types/altransform.h>
19 #include <almath/types/alaxismask.h>
20 #include <almath/types/alpose2d.h>
21 #include <almath/types/alquaternion.h>
22 #include <almath/types/aldisplacement.h>
89 void velocityExponentialInPlace(
90 const Velocity6D& pVel,
132 const Velocity6D& pVelIn,
133 Velocity6D& pVelOut);
174 const Position6D& pPosIn,
175 Position6D& pPosOut);
178 void changeReferencePosition3DInPlace(
180 Position3D& pPosOut);
183 void changeReferenceTransposePosition3DInPlace(
185 Position3D& pPosOut);
217 const Position3D& pPosIn,
218 Position3D& pPosOut);
242 const Position3D& pPosIn,
243 Position3D& pPosOut);
267 const Transform& pTIn,
292 const Transform& pTIn,
335 const Velocity6D& pVelIn,
336 Velocity6D& pVelOut);
377 const Position6D& pPosIn,
378 Position6D& pPosOut);
391 const Transform& pTIn1,
392 const Transform& pTIn2,
408 const Transform& pTIn1,
409 const Transform& pTIn2,
410 const float& pVal = 0.5f);
431 const Rotation& pRot,
452 const Rotation& pRot,
453 const Position3D& pPos);
473 const Position3D& pPosition,
474 Transform& pTransform);
518 const Rotation& pRotation,
519 Transform& pTransform);
548 const Transform& pTransform,
549 Rotation& pRotation);
681 const Transform& pCurrent,
682 const Transform& pTarget,
695 const Transform& pCurrent,
696 const Transform& pTarget);
768 const Position3D& pPos,
781 const Position3D& pPos);
790 const Position3D& pPos,
809 const float& pTheta);
813 const Position2D& pPos);
817 const Position3D& pPos);
826 Transform axisRotationProjection(
827 const Position3D& pAxis,
828 const Transform& pT);
837 Rotation axisRotationProjection(
838 const Position3D& pAxis,
839 const Rotation& pRot);
848 void axisRotationProjectionInPlace(
849 const Position3D& pAxis,
858 void axisRotationProjectionInPlace(
859 const Position3D& pAxis,
868 void orthogonalSpace(
869 const Position3D& pPos,
872 Transform orthogonalSpace(
const Position3D& pPos);
874 Transform transformFromQuaternion(
875 const Quaternion& pQua);
877 Quaternion quaternionFromTransform(
878 const Transform& pT);
886 Transform transformFromDisplacement(
const Displacement& pDisp);
894 Displacement displacementFromTransform(
const Transform& pTrans);
898 #endif // _LIBALMATH_ALMATH_TOOLS_ALTRANSFORMHELPERS_H_
Transform velocityExponential(const Velocity6D &pVel)
Compute the logarithme of a transform. Angle must be between
Transform transformFromRotVec(const int &pAxis, const float &pTheta)
void position6DFromTransformInPlace(const Transform &pT, Position6D &pPos)
Compute Position6D corresponding to the Transform.
Rotation rotationFromTransform(const Transform &pTransform)
void changeReferenceVelocity6D(const Transform &pT, const Velocity6D &pVelIn, Velocity6D &pVelOut)
Rotation3D rotation3DFromTransform(const Transform &pT)
Create a Rotation3D (Roll, Pitch, Yaw) corresponding to the rotational part of the Transform...
void transformMeanInPlace(const Transform &pTIn1, const Transform &pTIn2, const float &pVal, Transform &pTOut)
Preform a logarithmic mean of pTIn1 and pTIn2 and put it in pTout.
Pose2D pose2DFromTransform(const Transform &pT)
Create a Pose2D from a Transform.
void transformLogarithmInPlace(const Transform &pT, Velocity6D &pVel)
Compute the logarithme of a transform. Angle must be between
void transformFromPose2DInPlace(const Pose2D &pPose, Transform &pT)
Compute a Transform from a Pose2D.
void transformFromRotVecInPlace(const Position3D &pPos, Transform &pT)
void changeReferenceTransposePosition3D(const Transform &pT, const Position3D &pPosIn, Position3D &pPosOut)
Position2D position2DFromTransform(const Transform &pT)
Create a Position2D from a Transform.
Velocity6D transformLogarithm(const Transform &pT)
Compute the logarithme of a transform. Angle must be between
Transform transformFromPosition3D(const Position3D &pPosition)
Create a 4*4 transform matrix from cartesian coordinates given in pPosition.
Transform transformFromPose2D(const Pose2D &pPose)
Create a Transform from a Pose2D.
Position3D operator*(const Rotation &pRot, const Position3D &pPos)
Overloading of operator * between Rotation and Position3D:
void transformFromRotationInPlace(const Rotation &pRotation, Transform &pTransform)
Modify the rotation part of the transform. The translation part of the transform is not modified...
void rotationFromTransformInPlace(const Transform &pTransform, Rotation &pRotation)
Extract the position coordinates from a Transform.
Transform transformFromRotation(const Rotation &pRotation)
Position6D position6DFromTransform(const Transform &pT)
Compute Position6D corresponding to 4*4 Homogenous Transform.
void position2DFromTransformInPlace(const Transform &pT, Position2D &pPos)
Compute a Position2D from a Transform.
Transform transformFromPosition6D(const Position6D &pPosition6D)
Create a Transform from a Position6D.
Transform transformFromRotation3D(const Rotation3D &pRotation)
Create a Transform from the 3 angles stored in a Rotation3D. The angles are composed in the following...
Transform transformFromRotationPosition3D(const Rotation &pRot, const Position3D &pPos)
Create a Transform from a Position3D and a Rotation.
void changeReferenceTransform(const Transform &pT, const Transform &pTIn, Transform &pTOut)
Position3D position3DFromTransform(const Transform &pT)
Create a Position3D from a Transform.
void transformFromPosition3DInPlace(const Position3D &pPosition, Transform &pTransform)
Modify pTransform to set the translation part to pPosition.
void pose2DFromTransformInPlace(const Transform &pT, Pose2D &pPos)
Compute a Pose2D from a Transform.
void changeReferencePosition3D(const Transform &pT, const Position3D &pPosIn, Position3D &pPosOut)
void changeReferenceTransposeVelocity6D(const Transform &pT, const Velocity6D &pVelIn, Velocity6D &pVelOut)
Position6D position6DFromTransformDiff(const Transform &pCurrent, const Transform &pTarget)
Computes a 6 differential motion require to move from a 4*4 Homogenous transform matrix Current to a ...
void changeReferenceTransposeTransform(const Transform &pT, const Transform &pTIn, Transform &pTOut)
void position6DFromTransformDiffInPlace(const Transform &pCurrent, const Transform &pTarget, Position6D &result)
Computes a 6 differential motion require to move from a 4*4 Homogenous transform matrix Current to a ...
void changeReferenceTransposePosition6D(const Transform &pT, const Position6D &pPosIn, Position6D &pPosOut)
Rotation3D rotation3DFromRotation(const Rotation &pRotation)
return 3 angles which result in the equivalent rotation when composed in the following order: Rz(wz) ...
void position3DFromTransformInPlace(const Transform &pT, Position3D &pPos)
Compute a Position3D from a Transform.
void changeReferencePosition6D(const Transform &pT, const Position6D &pPosIn, Position6D &pPosOut)
Transform transformMean(const Transform &pTIn1, const Transform &pTIn2, const float &pVal=0.5f)
Preform a logarithmic mean of pTIn1 and pTIn2.