IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
RotationTransform3d.h
1 // RotationTransform3d.h:
3 // ----------------------
4 //
14 
15 #ifndef __IPSDKGEOMETRY_ROTATIONTRANSFORM3D_H__
16 #define __IPSDKGEOMETRY_ROTATIONTRANSFORM3D_H__
17 
18 #include <IPSDKGeometry/Transform/3d/BaseGeometryTransform3d.h>
19 #include <IPSDKMath/Geometry/3d/Transform/Rotation3d.h>
20 
21 namespace ipsdk {
22 namespace geom {
23 
26 
28 {
29  // declare geometry transform 3d
31 
32 // predefined public types
33 public:
35  static const eTransform3dType::domain g_transform3dType = eTransform3dType::eT3DT_Rotation;
36 
37 public:
41  RotationTransform3d(const ipReal64 chi,
42  const ipReal64 beta,
43  const ipReal64 alpha);
47 
48 // methods
49 public:
51  eTransform3dType getTransform3dType() const;
52 
55  void init(const ipReal64 chi,
56  const ipReal64 beta,
57  const ipReal64 alpha);
58  void init(const math::transform::Rotation3d& transform);
60 
61 protected:
64  template <typename T>
65  void processPoint(Point3dData<T>& entity) const;
66  template <typename T>
67  bool processInSitu(Point3d<T>& entity) const;
68  bool processInSitu(Vector3d& entity) const;
69  template <typename T>
70  bool processInSitu(PointCloud3d<T>& entity) const;
71  template <typename T>
72  bool processInSitu(Sphere3d<T>& entity) const;
73  template <typename T>
74  bool processInSitu(Ellipsoid3d<T>& entity) const;
75  template <typename T>
76  bool processInSitu(Cube3d<T>& entity) const;
77  template <typename T>
78  bool processInSitu(Cuboid3d<T>& entity) const;
79  template <typename T>
80  bool processInSitu(Mesh3d<T>& entity) const;
81  template <typename T>
82  bool processInSitu(MeshWithHoles3d<T>& entity) const;
83  bool processInSitu(Shape3d& entity) const;
84  template <typename T>
85  bool processInSitu(Segment3d<T>& entity) const;
86  template <typename T>
87  bool processInSitu(Triangle3d<T>& entity) const;
89 
90 // attributes
91 protected:
94 };
95 
98 
99 inline eTransform3dType
101 {
102  return g_transform3dType;
103 }
104 
105 inline void
107  const ipReal64 beta,
108  const ipReal64 alpha)
109 {
110  _transform.setParams(chi, beta, alpha);
111 }
112 
113 inline void
115 {
116  _transform = transform;
117 }
118 
121 
122 } // end of namespace geom
123 } // end of namespace ipsdk
124 
125 #endif // __IPSDKGEOMETRY_ROTATIONTRANSFORM3D_H__
3d ellipsoid associated to cartesian 3d coordinates For a non rotated ellipse, the major radius follo...
Definition: Ellipsoid3d.h:39
3d segment associated to two points
Definition: Segment3d.h:38
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Point class associated to cartesian 3d coordinates.
Definition: GeometryEntity3dTypes.h:29
3d sphere associated to cartesian 3d coordinates
Definition: Sphere3d.h:36
eTransform3dType
Enumerate describing geometry 3d transform type.
Definition: GeometryTransform3dTypes.h:33
void setParams(const ipReal64 chi, const ipReal64 beta, const ipReal64 alpha)
select parameters associated to transformation
Definition: Rotation3d.h:135
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
Transformation class allowing to manage 3d rotation transformations.
Definition: Rotation3d.h:33
Vector class associated to spherical 3d coordinates.
Definition: Vector3d.h:32
#define IPSDK_DECLARE_GEOMETRY_TRANSFORM_3D(libraryName, className)
Macro allowing to declare a geometry transform 3d.
Definition: GeometryTransform3dHdrMacros.h:26
#define IPSDKGEOMETRY_API
Import/Export macro for library IPSDKGeometry.
Definition: IPSDKGeometryExports.h:25
Base class for geometry 3d transformations.
Definition: BaseGeometryTransform3d.h:31
3d triangle associated to cartesian 3d coordinates
Definition: Triangle3d.h:37
Rotation.
Definition: GeometryTransform3dTypes.h:37
math::transform::Rotation3d _transform
underlying transformation
Definition: RotationTransform3d.h:93
static const eTransform3dType::domain g_transform3dType
geometry transformation type
Definition: RotationTransform3d.h:35
void init(const ipReal64 chi, const ipReal64 beta, const ipReal64 alpha)
initialization of transformation parameters
Definition: RotationTransform3d.h:106
Rotation 3d transformation (origin centered)
Definition: RotationTransform3d.h:27
Closed mesh associated to a triangulated boundary.
Definition: Mesh3d.h:43
3d cuboid (rectangular parallelepiped) class associated to cartesian 3d coordinates ...
Definition: Cuboid3d.h:35
Unordered collection of 3d points.
Definition: PointCloud3d.h:35
Closed mesh potentially associated to interior mesh holes.
Definition: MeshWithHoles3d.h:39
eTransform3dType getTransform3dType() const
method allowing to retrieve entity 3d transformation type
Definition: RotationTransform3d.h:100
Lightweight structure used to store Point3d data.
Definition: GeometryEntity3dTypes.h:27
Shape 3d associated to one or more closed mesh 3d.
Definition: Shape3d.h:34
3d cube class associated to cartesian 3d coordinates
Definition: Cube3d.h:35