15 #ifndef __IPSDKMATH_SIMILARITY3D_H__ 16 #define __IPSDKMATH_SIMILARITY3D_H__ 20 #pragma warning (push) 21 #pragma warning (disable : 4251) 23 #include <IPSDKMath/Geometry/3d/Transform/BaseLinearGeometricTransform3d.h> 57 setParams(1, 0, 0, 0, 0, 0, 0);
63 setParams(scale, chi, beta, alpha, tx, ty, tz);
72 static void transform(
const ipReal64 scale,
78 std::cos(chi), std::sin(chi),
79 std::cos(beta), std::sin(beta),
80 std::cos(alpha), std::sin(alpha),
84 static void transform(
const ipReal64 scale,
91 rotate3dInSitu(cosChi, sinChi, cosBeta, sinBeta, cosAlpha, sinAlpha, x, y, z);
111 return getHomogenousMatrix(scale,
112 std::cos(chi), std::sin(chi),
113 std::cos(beta), std::sin(beta),
114 std::cos(alpha), std::sin(alpha),
124 eulerToMatrix(cosChi, sinChi, cosBeta, sinBeta, cosAlpha, sinAlpha,
125 transform(0, 0), transform(0, 1), transform(0, 2),
126 transform(1, 0), transform(1, 1), transform(1, 2),
127 transform(2, 0), transform(2, 1), transform(2, 2));
128 transform(0, 0) *= scale;
129 transform(0, 1) *= scale;
130 transform(0, 2) *= scale;
131 transform(1, 0) *= scale;
132 transform(1, 1) *= scale;
133 transform(1, 2) *= scale;
134 transform(2, 0) *= scale;
135 transform(2, 1) *= scale;
136 transform(2, 2) *= scale;
137 transform(0, 3) = tx;
138 transform(1, 3) = ty;
139 transform(2, 3) = tz;
140 transform(3, 0) = 0; transform(3, 1) = 0; transform(3, 2) = 0; transform(3, 3) = 1;
159 getInvParams(invScale, invChi, invBeta, invAlpha, invTx, invTy, invTz);
161 return getHomogenousMatrix(invScale, invChi, invBeta, invAlpha, invTx, invTy, invTz);
165 static void getInvParams(
ipReal64& scale,
170 static Vector getIdentityParams();
173 void setParams(
const ipReal64 scale,
179 _cosChi = std::cos(_chi);
180 _sinChi = std::sin(_chi);
182 _cosBeta = std::cos(_beta);
183 _sinBeta = std::sin(_beta);
185 _cosAlpha = std::cos(_alpha);
186 _sinAlpha = std::sin(_alpha);
195 void setParams(
const Vector& params);
204 Matrix4d getHomogenousMatrix()
const;
221 Matrix4d getInvHomogenousMatrix()
const;
224 Vector getInvParams()
const;
316 #pragma warning (pop) 318 #endif // __IPSDKMATH_SIMILARITY3D_H__ ipReal64 getBeta() const
retrieve parameters associated to transformation
Definition: Similarity3d.h:283
ipReal64 _alpha
angles of rotation in radians
Definition: Similarity3d.h:244
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
ipReal64 getTz() const
retrieve parameters associated to transformation
Definition: Similarity3d.h:307
eTransformParams
Definition: Similarity3d.h:40
ipReal64 _tz
translation coordinate along y axis
Definition: Similarity3d.h:264
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 getChi() const
retrieve parameters associated to transformation
Definition: Similarity3d.h:277
Base class for linear geometric transformation 3d management.
Definition: BaseLinearGeometricTransform3d.h:27
ipReal64 getTy() const
retrieve parameters associated to transformation
Definition: Similarity3d.h:301
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
#define IPSDK_DECLARE_TRANSFORM3D(className)
macro allowing to declare a geometric transformation 3d
Definition: Transform3dHdrMacros.h:54
boost::numeric::ublas::vector< ipReal64 > Vector
vector type associated to library
Definition: LinearAlgebraTypes.h:36
ipReal64 _beta
angles of rotation in radians
Definition: Similarity3d.h:243
#define IPSDKMATH_API
Import/Export macro for library IPSDKMath.
Definition: IPSDKMathExports.h:27
ipReal64 _chi
angles of rotation in radians
Definition: Similarity3d.h:242
ipReal64 _scale
transformation scale
Definition: Similarity3d.h:238
ipReal64 _tx
translation coordinate along x axis
Definition: Similarity3d.h:258
boost::numeric::ublas::bounded_matrix< ipReal64, 4, 4 > Matrix4d
4d matrix (4x4) type associated to library
Definition: LinearAlgebraTypes.h:57
Transformation class allowing to manage 3d similarity transformations.
Definition: Similarity3d.h:33
ipReal64 getScale() const
retrieve parameters associated to transformation
Definition: Similarity3d.h:271
Utility functions used to handle angles 3d.
ipReal64 _ty
translation coordinate along y axis
Definition: Similarity3d.h:261
void setIdentity()
set transformation parameters to identity
Definition: Similarity3d.h:313
void setParams(const ipReal64 scale, const ipReal64 chi, const ipReal64 beta, const ipReal64 alpha, const ipReal64 tx, const ipReal64 ty, const ipReal64 tz)
select parameters associated to transformation
Definition: Similarity3d.h:182
ipReal64 getTx() const
retrieve parameters associated to transformation
Definition: Similarity3d.h:295
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 getAlpha() const
retrieve parameters associated to transformation
Definition: Similarity3d.h:289
static Vector getIdentityParams()
retrieve identity parameters for transformation
#define IPSDK_ENUM(enumTypeStr, enumSeq)
macro allowing to declare an enumerate for library
Definition: EnumMacros.h:26