IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
MinEnclosingSphereTransform3d.h
1 // MinEnclosingSphereTransform3d.h:
3 // --------------------------------
4 //
15 
16 #ifndef __IPSDKGEOMETRY_MINENCLOSINGSPHERETRANSFORM3D_H__
17 #define __IPSDKGEOMETRY_MINENCLOSINGSPHERETRANSFORM3D_H__
18 
19 #include <IPSDKGeometry/Transform/3d/BaseGeometryTransform3d.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_MinEnclosingSphere;
36 
39 
41  typedef boost::shared_ptr<SphereType> SpherePtr;
42 
43 public:
49 
50 // methods
51 public:
53  eTransform3dType getTransform3dType() const;
54 
57  static Sphere3d<ipReal64> minEnclosingSphere(const BaseGeometryEntity3d& entity);
58 
59 protected:
62  template <typename T>
63  GeometryEntity3dPtr process(const Point3d<T>& entity) const;
64  template <typename T>
65  GeometryEntity3dPtr process(const BoundingBox3d<T>& entity) const;
66  template <typename T>
67  GeometryEntity3dPtr process(const PointCloud3d<T>& entity) const;
68  template <typename T>
69  GeometryEntity3dPtr process(const Sphere3d<T>& entity) const;
70  template <typename T>
71  GeometryEntity3dPtr process(const Ellipsoid3d<T>& entity) const;
72  template <typename T>
73  GeometryEntity3dPtr process(const Cube3d<T>& entity) const;
74  template <typename T>
75  GeometryEntity3dPtr process(const Cuboid3d<T>& entity) const;
76  template <typename T>
77  GeometryEntity3dPtr process(const Mesh3d<T>& entity) const;
78  template <typename T>
79  GeometryEntity3dPtr process(const MeshWithHoles3d<T>& entity) const;
80  GeometryEntity3dPtr process(const Shape3d& entity) const;
81  template <typename T>
82  GeometryEntity3dPtr process(const Segment3d<T>& entity) const;
83  template <typename T>
84  GeometryEntity3dPtr process(const Triangle3d<T>& entity) const;
86 
87 // attributes
88 protected:
89 
90 };
91 
94 
95 inline eTransform3dType
97 {
98  return g_transform3dType;
99 }
100 
103 
104 } // end of namespace geom
105 } // end of namespace ipsdk
106 
107 #endif // __IPSDKGEOMETRY_MINENCLOSINGSPHERETRANSFORM3D_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
eTransform3dType getTransform3dType() const
method allowing to retrieve entity 3d transformation type
Definition: MinEnclosingSphereTransform3d.h:96
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
boost::shared_ptr< SphereType > SpherePtr
shared pointer to output sphere type
Definition: MinEnclosingSphereTransform3d.h:41
eTransform3dType
Enumerate describing geometry 3d transform type.
Definition: GeometryTransform3dTypes.h:33
Sphere3d< ipReal64 > SphereType
output sphere type
Definition: MinEnclosingSphereTransform3d.h:38
#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
Rectangular 3d bounding box class associated to cartesian 3d coordinates.
Definition: BoundingBox3d.h:37
3d triangle associated to cartesian 3d coordinates
Definition: Triangle3d.h:37
Algorithm allowing to compute minimum enclosing sphere of a 3d geometry entity.
Definition: MinEnclosingSphereTransform3d.h:27
minimum enclosing sphere computation
Definition: GeometryTransform3dTypes.h:57
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
static const eTransform3dType::domain g_transform3dType
geometry transformation type
Definition: MinEnclosingSphereTransform3d.h:35
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
boost::shared_ptr< BaseGeometryEntity3d > GeometryEntity3dPtr
shared pointer to BaseGeometryEntity3d
Definition: GeometryEntity3dTypes.h:120
Base class for 3d geometry entities.
Definition: BaseGeometryEntity3d.h:34