IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
GeometricTransform3dTypes.h
Go to the documentation of this file.
1 // GeometricTransform3dTypes.h:
3 // ----------------------------
4 //
14 
15 #ifndef __IPSDKMATH_GEOMETRICTRANSFORM3DTYPES_H__
16 #define __IPSDKMATH_GEOMETRICTRANSFORM3DTYPES_H__
17 
20 #include <boost/shared_ptr.hpp>
21 
22 namespace ipsdk {
23 namespace math {
24 namespace transform {
25 
26 class BaseGeometricTransform3d;
27 
30 
33 IPSDK_ENUM(eGeometricTransform3dType,
34 
35  (eGT3DT_Translation)
36  (eGT3DT_Rotation)
37  (eGT3DT_Rigid)
38  (eGT3DT_Scale)
39  (eGT3DT_Similarity)
40  (eGT3DT_AnisotropicScale)
41  (eGT3DT_Affine)
42  (eGT3DT_Homography)
43 )
44 
45 
50 template <eGeometricTransform3dType::value_type enumValue>
52 
55 template <typename T>
56 struct Transform3d2Enum;
57 
60 #define IPSDK_ENUM_TO_TRANSFORM3D(transformType, EnumValue) \
61  class transformType; \
62  template<> struct Enum2Transform3d<ipsdk::math::transform::eGeometricTransform3dType::EnumValue> { \
63  typedef transformType Type; \
64  }; \
65  template<> struct Transform3d2Enum<transformType> { \
66  static const ipsdk::math::transform::eGeometricTransform3dType::domain \
67  g_geometricTransform3dType = eGeometricTransform3dType::EnumValue; \
68  };
69 
72 IPSDK_ENUM_TO_TRANSFORM3D(Translation3d, eGT3DT_Translation);
73 IPSDK_ENUM_TO_TRANSFORM3D(Rotation3d, eGT3DT_Rotation);
74 IPSDK_ENUM_TO_TRANSFORM3D(Rigid3d, eGT3DT_Rigid);
75 IPSDK_ENUM_TO_TRANSFORM3D(Scale3d, eGT3DT_Scale);
76 IPSDK_ENUM_TO_TRANSFORM3D(Similarity3d, eGT3DT_Similarity);
77 IPSDK_ENUM_TO_TRANSFORM3D(AnisotropicScale3d, eGT3DT_AnisotropicScale);
78 IPSDK_ENUM_TO_TRANSFORM3D(Affine3d, eGT3DT_Affine);
79 IPSDK_ENUM_TO_TRANSFORM3D(Homography3d, eGT3DT_Homography);
81 
84 
86 typedef boost::shared_ptr<ipsdk::math::transform::BaseGeometricTransform3d> GeometricTransform3dPtr;
87 
89 typedef boost::shared_ptr<const ipsdk::math::transform::BaseGeometricTransform3d> GeometricTransform3dConstPtr;
90 
93 
94 } // end of namespace transform
95 } // end of namespace math
96 } // end of namespace ipsdk
97 
98 #endif // __IPSDKMATH_GEOMETRICTRANSFORM3DTYPES_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
boost::shared_ptr< ipsdk::math::transform::BaseGeometricTransform3d > GeometricTransform3dPtr
shared pointer to ipsdk::math::transform::BaseGeometricTransform3d
Definition: GeometricTransform3dTypes.h:96
Predefined types for linear algebra management.
#define IPSDK_ENUM_TO_TRANSFORM3D(transformType, EnumValue)
Definition: GeometricTransform3dTypes.h:70
Transformation class allowing to manage 3d rotation transformations.
Definition: Rotation3d.h:33
Transformation class allowing to manage 3d affine transformations.
Definition: Affine3d.h:32
structure used to retrieve enumerate value from transform
Definition: GeometricTransform3dTypes.h:66
Transformation class allowing to manage 3d similarity transformations.
Definition: Similarity3d.h:33
Transformation class allowing to manage 3d rigid transformations.
Definition: Rigid3d.h:33
structure used to retrieve transform from enumerate value
Definition: GeometricTransform3dTypes.h:61
Definition: AnisotropicScale3d.h:33
Definition: Scale3d.h:32
eGeometricTransform3dType
geometric transform 3d type
Definition: GeometricTransform3dTypes.h:35
Transformation class allowing to manage 3d homography transformations.
Definition: Homography3d.h:32
Predefined macros for enumerates management.
Transformation class allowing to manage 3d translations.
Definition: Translation3d.h:32
#define IPSDK_ENUM(enumTypeStr, enumSeq)
macro allowing to declare an enumerate for library
Definition: EnumMacros.h:26
boost::shared_ptr< const ipsdk::math::transform::BaseGeometricTransform3d > GeometricTransform3dConstPtr
shared pointer to const ipsdk::math::transform::BaseGeometricTransform3d
Definition: GeometricTransform3dTypes.h:99