IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
Parabola2d.h
1 // Parabola2d.h:
3 // -------------
4 //
26 
27 #ifndef __IPSDKGEOMETRY_PARABOLA2D_H__
28 #define __IPSDKGEOMETRY_PARABOLA2D_H__
29 
30 // suppression warnings
31 // warning C4251: 'ipsdk::geom::Parabola2d::_focus' : struct 'ipsdk::geom::Point2dData<ipsdk::ipReal64>' needs to have dll-interface to be used by clients of class 'ipsdk::geom::Parabola2d'
32 #pragma warning (push)
33 #pragma warning (disable : 4251)
34 
35 #include <IPSDKGeometry/Entity/2d/BaseTypedGeometryEntity2d.h>
38 #include <IPSDKGeometry/Entity/2d/Point/Point2d.h>
39 #include <IPSDKGeometry/Entity/2d/Line/Line2d.h>
40 
41 namespace ipsdk {
42 namespace geom {
43 
46 
48 {
49  // declare 2d geometry entity
51 
52 // predefined public types
53 public:
55  static const eCoordinateSystem2dType::domain g_coordinateSystem2dType = eCoordinateSystem2dType::eCS2DT_Cartesian;
56 
58  static const eEntity2dType::domain g_entity2dType = eEntity2dType::eE2DT_Parabola;
59 
60 public:
63  Parabola2d();
64  template <typename T>
65  Parabola2d(const Point2d<T>& focus, const Line2d& directrix);
66  template <typename T>
67  Parabola2d(const Point2dData<T>& focus, const Line2d& directrix);
68  ~Parabola2d();
70 
71 // methods
72 public:
74  inline eCoordinateSystem2dType getCoordinateSystem2dType() const;
75 
77  inline eEntity2dType getEntity2dType() const;
78 
81  bool isDegenerated() const;
82 
86  template <typename T>
87  inline void setCoords(const Point2d<T>& focus, const Line2d& directrix);
88  template <typename T>
89  inline void setCoords(const Point2dData<T>& focus, const Line2d& directrix);
90  template <typename T>
91  inline void setFocus(const Point2d<T>& focus);
92  template <typename T>
93  void setFocus(const Point2dData<T>& focus);
94  inline void setDirectrix(const Line2d& directrix);
95  inline const Point2dData<ipReal64>& getFocus() const;
96  inline Point2dData<ipReal64>& getFocus();
97  inline const Line2d& getDirectrix() const;
98  inline Line2d& getDirectrix();
100 
102  ipReal64 getFocalLength() const;
103 
105  Point2dData<ipReal64> getVertex() const;
106 
108  Line2d getSymmetryAxis() const;
109 
110 // attributes
111 protected:
114 
117 };
118 
121 
122 template <typename T>
123 inline
124 Parabola2d::Parabola2d(const Point2d<T>& focus, const Line2d& directrix)
125 {
126  setCoords(focus, directrix);
127 }
128 
129 template <typename T>
130 inline
131 Parabola2d::Parabola2d(const Point2dData<T>& focus, const Line2d& directrix)
132 {
133  setCoords(focus, directrix);
134 }
135 
138 {
140 }
141 
142 inline eEntity2dType
144 {
145  return g_entity2dType;
146 }
147 
148 template <typename T>
149 inline void
150 Parabola2d::setCoords(const Point2d<T>& focus, const Line2d& directrix)
151 {
152  setFocus(focus);
153  setDirectrix(directrix);
154 }
155 
156 template <typename T>
157 inline void
158 Parabola2d::setCoords(const Point2dData<T>& focus, const Line2d& directrix)
159 {
160  setFocus(focus);
161  setDirectrix(directrix);
162 }
163 
164 template <typename T>
165 inline void
167 {
168  setFocus(focus.getCoords());
169 }
170 
171 inline void
173 {
174  _directrix = directrix;
175 }
176 
177 inline const Point2dData<ipReal64>&
179 {
180  return _focus;
181 }
182 
183 inline Point2dData<ipReal64>&
185 {
186  return _focus;
187 }
188 
189 inline const Line2d&
191 {
192  return _directrix;
193 }
194 
195 inline Line2d&
197 {
198  return _directrix;
199 }
200 
201 
204 
205 } // end of namespace geom
206 } // end of namespace ipsdk
207 
208 #pragma warning (pop)
209 
210 #endif // __IPSDKGEOMETRY_PARABOLA2D_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Utility functions for parabola 2d management.
eCoordinateSystem2dType getCoordinateSystem2dType() const
method allowing to retrieve coordinate system 2d type
Definition: Parabola2d.h:137
void setCoords(const Point2d< T > &focus, const Line2d &directrix)
access to parabola coordinates
Definition: Parabola2d.h:150
Point class associated to cartesian 2d coordinates.
Definition: GeometryEntity2dTypes.h:28
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
static const eCoordinateSystem2dType::domain g_coordinateSystem2dType
coordinate system associated to entity
Definition: Parabola2d.h:55
eEntity2dType getEntity2dType() const
method allowing to retrieve entity 2d type
Definition: Parabola2d.h:143
Point2dData< ipReal64 > _focus
focus point associated to parabola
Definition: Parabola2d.h:113
eCoordinateSystem2dType
Enumerate describing coordinate system 2d type.
Definition: GeometryEntity2dTypes.h:76
Parabola.
Definition: GeometryEntity2dTypes.h:64
const Line2d & getDirectrix() const
access to parabola coordinates
Definition: Parabola2d.h:190
Parabola 2d class.
Definition: Parabola2d.h:47
#define IPSDKGEOMETRY_API
Import/Export macro for library IPSDKGeometry.
Definition: IPSDKGeometryExports.h:25
Base class for typed 3d geometry entities.
Definition: BaseTypedGeometryEntity2d.h:27
2d line associated to polar coordinates
Definition: Line2d.h:42
static const eEntity2dType::domain g_entity2dType
type associated to entity
Definition: Parabola2d.h:58
#define IPSDK_DECLARE_GEOMETRY_ENTITY_2D(libraryName, className)
Macro allowing to declare a geometry entity 2d.
Definition: GeometryEntity2dHdrMacros.h:131
const Point2dData< T > & getCoords() const
access to point coordinates
Definition: Point2d.h:139
void setDirectrix(const Line2d &directrix)
access to parabola coordinates
Definition: Parabola2d.h:172
eEntity2dType
Enumerate describing entity 2d type.
Definition: GeometryEntity2dTypes.h:38
const Point2dData< ipReal64 > & getFocus() const
access to parabola coordinates
Definition: Parabola2d.h:178
Lightweight structure used to store Point2d data.
Definition: GeometryEntity2dTypes.h:26
void setFocus(const Point2d< T > &focus)
access to parabola coordinates
Definition: Parabola2d.h:166
Line2d _directrix
directrix associated to parabola
Definition: Parabola2d.h:116
Cartesian coordinate system.
Definition: GeometryEntity2dTypes.h:78
Basic operators used for parabola 2d management.