15 #ifndef __IPSDKMATH_RIGID3D_H__ 16 #define __IPSDKMATH_RIGID3D_H__ 20 #pragma warning (push) 21 #pragma warning (disable : 4251) 23 #include <IPSDKMath/Geometry/3d/Transform/BaseLinearGeometricTransform3d.h> 56 setParams(0, 0, 0, 0, 0, 0);
61 setParams(chi, beta, alpha, tx, ty, tz);
74 transform(std::cos(chi), std::sin(chi),
75 std::cos(beta), std::sin(beta),
76 std::cos(alpha), std::sin(alpha),
86 rotate3dInSitu(cosChi, sinChi, cosBeta, sinBeta, cosAlpha, sinAlpha, x, y, z);
102 return getHomogenousMatrix(std::cos(chi), std::sin(chi),
103 std::cos(beta), std::sin(beta),
104 std::cos(alpha), std::sin(alpha),
113 eulerToMatrix(cosChi, sinChi, cosBeta, sinBeta, cosAlpha, sinAlpha,
114 transform(0, 0), transform(0, 1), transform(0, 2),
115 transform(1, 0), transform(1, 1), transform(1, 2),
116 transform(2, 0), transform(2, 1), transform(2, 2));
117 transform(0, 3) = tx;
118 transform(1, 3) = ty;
119 transform(2, 3) = tz;
120 transform(3, 0) = 0; transform(3, 1) = 0; transform(3, 2) = 0; transform(3, 3) = 1;
137 getInvParams(invChi, invBeta, invAlpha, invTx, invTy, invTz);
139 return getHomogenousMatrix(invChi, invBeta, invAlpha, invTx, invTy, invTz);
147 static Vector getIdentityParams();
154 _cosChi = std::cos(_chi);
155 _sinChi = std::sin(_chi);
157 _cosBeta = std::cos(_beta);
158 _sinBeta = std::sin(_beta);
160 _cosAlpha = std::cos(_alpha);
161 _sinAlpha = std::sin(_alpha);
173 _cosChi = std::cos(_chi);
174 _sinChi = std::sin(_chi);
176 _cosBeta = std::cos(_beta);
177 _sinBeta = std::sin(_beta);
179 _cosAlpha = std::cos(_alpha);
180 _sinAlpha = std::sin(_alpha);
185 rotate3d<ipReal64>(centerX, centerY, centerZ,
186 _cosChi, _sinChi, _cosBeta, _sinBeta, _cosAlpha, _sinAlpha,
196 void setParams(
const Vector& params);
205 Matrix4d getHomogenousMatrix()
const;
221 Matrix4d getInvHomogenousMatrix()
const;
224 Vector getInvParams()
const;
307 #pragma warning (pop) 309 #endif // __IPSDKMATH_RIGID3D_H__ ipReal64 getTx() const
retrieve parameters associated to transformation
Definition: Rigid3d.h:285
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
ipReal64 getTz() const
retrieve parameters associated to transformation
Definition: Rigid3d.h:297
eTransformParams
Definition: Rigid3d.h:40
ipReal64 getTy() const
retrieve parameters associated to transformation
Definition: Rigid3d.h:291
IPSDK_FORCEINLINE void eulerToMatrix(const T cosChi, const T sinChi, const T cosBeta, const T sinBeta, const T cosAlpha, const T sinAlpha, T &rxx, T &rxy, T &rxz, T &ryx, T &ryy, T &ryz, T &rzx, T &rzy, T &rzz)
Convertion from euler angles to rotation matrix.
Definition: Angles3d.h:99
ipReal64 _alpha
angles of rotation in radians
Definition: Rigid3d.h:240
Base class for linear geometric transformation 3d management.
Definition: BaseLinearGeometricTransform3d.h:27
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
IPSDKGEOMETRY_API bool apply(const BaseGeometryTransform2d &transform, BaseGeometryEntity2d &entity)
function allowing to apply in situ a given transformation on an entity
ipReal64 getChi() const
retrieve parameters associated to transformation
Definition: Rigid3d.h:267
#define IPSDK_DECLARE_TRANSFORM3D(className)
macro allowing to declare a geometric transformation 3d
Definition: Transform3dHdrMacros.h:54
ipReal64 getAlpha() const
retrieve parameters associated to transformation
Definition: Rigid3d.h:279
boost::numeric::ublas::vector< ipReal64 > Vector
vector type associated to library
Definition: LinearAlgebraTypes.h:36
void setParams(const ipReal64 chi, const ipReal64 beta, const ipReal64 alpha, const ipReal64 tx, const ipReal64 ty, const ipReal64 tz)
select parameters associated to transformation
Definition: Rigid3d.h:158
#define IPSDKMATH_API
Import/Export macro for library IPSDKMath.
Definition: IPSDKMathExports.h:27
boost::numeric::ublas::bounded_matrix< ipReal64, 4, 4 > Matrix4d
4d matrix (4x4) type associated to library
Definition: LinearAlgebraTypes.h:57
ipReal64 _tz
translation coordinate along y axis
Definition: Rigid3d.h:260
ipReal64 _beta
angles of rotation in radians
Definition: Rigid3d.h:239
Transformation class allowing to manage 3d rigid transformations.
Definition: Rigid3d.h:33
Utility functions used to handle angles 3d.
ipReal64 _chi
angles of rotation in radians
Definition: Rigid3d.h:238
ipReal64 getBeta() const
retrieve parameters associated to transformation
Definition: Rigid3d.h:273
IPSDK_FORCEINLINE void rotate3dInSitu(const ipReal64 rxx, const ipReal64 rxy, const ipReal64 rxz, const ipReal64 ryx, const ipReal64 ryy, const ipReal64 ryz, const ipReal64 rzx, const ipReal64 rzy, const ipReal64 rzz, T &x, T &y, T &z)
rotation of a point using a rotation angle (rotation around origin)
Definition: Angles3d.h:227
ipReal64 _ty
translation coordinate along y axis
Definition: Rigid3d.h:257
void setIdentity()
set transformation parameters to identity
Definition: Rigid3d.h:303
ipReal64 _tx
translation coordinate along x axis
Definition: Rigid3d.h:254
#define IPSDK_ENUM(enumTypeStr, enumSeq)
macro allowing to declare an enumerate for library
Definition: EnumMacros.h:26
static Vector getIdentityParams()
retrieve identity parameters for transformation