17 #ifndef __IPSDKGEOMETRY_ELLIPSE2D_H__ 18 #define __IPSDKGEOMETRY_ELLIPSE2D_H__ 22 #pragma warning (push) 23 #pragma warning (disable : 4251) 26 #include <IPSDKGeometry/Entity/2d/BaseTypedGeometryEntity2d.h> 27 #include <IPSDKGeometry/Entity/2d/Point/Point2d.h> 59 Ellipse2d(
const T xCenter,
const T yCenter,
const T majorRadius,
const T minorRadius,
const ipReal64 theta);
74 const T majorRadius,
const T minorRadius,
76 inline void setCoords(
const Point2d<T>& centerPt,
77 const T majorRadius,
const T minorRadius,
79 inline void setCoords(
const T xCenter,
const T yCenter,
80 const T majorRadius,
const T minorRadius,
83 inline void setCenter(
const Point2d<T>& center);
84 inline void setCenter(
const T xCenter,
const T yCenter);
85 inline void setMajorRadius(
const T majorRadius);
86 inline void setMinorRadius(
const T minorRadius);
87 inline void setTheta(
const ipReal64 theta);
88 inline T getMajorRadius()
const;
89 inline T getMinorRadius()
const;
91 inline T centerX()
const;
92 inline T centerY()
const;
106 inline ipReal64 perimeterLowerBound()
const;
112 inline ipReal64 perimeterUpperBound()
const;
118 inline ipReal64 excentricity()
const;
150 template <
typename T>
154 return g_coordinateSystem2dType;
157 template <
typename T>
161 return g_entity2dType;
164 template <
typename T>
167 const T majorRadius,
const T minorRadius,
170 _centerPt = centerPt;
171 _majorRadius = majorRadius;
172 _minorRadius = minorRadius;
176 template <
typename T>
179 const T majorRadius,
const T minorRadius,
183 _majorRadius = majorRadius;
184 _minorRadius = minorRadius;
188 template <
typename T>
191 const T majorRadius,
const T minorRadius,
194 _centerPt.setCoords(xCenter, yCenter);
195 _majorRadius = majorRadius;
196 _minorRadius = minorRadius;
200 template <
typename T>
204 _centerPt = centerPt;
207 template <
typename T>
214 template <
typename T>
218 _centerPt.setCoords(xCenter, yCenter);
221 template <
typename T>
225 _majorRadius = majorRadius;
228 template <
typename T>
232 _minorRadius = minorRadius;
235 template <
typename T>
240 _cosTheta = std::cos(_theta);
241 _sinTheta = std::sin(_theta);
244 template <
typename T>
251 template <
typename T>
258 template <
typename T>
265 template <
typename T>
272 template <
typename T>
279 template <
typename T>
286 template <
typename T>
290 const ipReal64 a2 = _majorRadius*_majorRadius;
291 const ipReal64 b2 = _minorRadius*_minorRadius;
296 template <
typename T>
303 _centerPt._y + f*_sinTheta);
306 template <
typename T>
313 _centerPt._y - f*_sinTheta);
316 template <
typename T>
323 template <
typename T>
330 template <
typename T>
337 template <
typename T>
344 template <
typename T>
351 template <
typename T>
357 _majorRadius, _minorRadius,
370 #pragma warning (pop) 372 #endif // __IPSDKGEOMETRY_ELLIPSE2D_H__ 2d ellipse class associated to cartesian 2d coordinates. For a non rotated ellipse, the major axis follows the x axis and the minor axis follows the y axis.
Definition: Ellipse2d.h:40
ipReal64 perimeterUpperBound() const
retrieve upper bound for ellipse perimeter
Definition: Ellipse2d.h:325
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
ipReal64 _cosTheta
computation intermediate
Definition: Ellipse2d.h:142
T _x
x coordinate of point
Definition: Point2dData.h:69
eCoordinateSystem2dType getCoordinateSystem2dType() const
method allowing to retrieve coordinate system 2d type
Definition: Ellipse2d.h:152
T centerX() const
access to ellipse parameters
Definition: Ellipse2d.h:246
Point class associated to cartesian 2d coordinates.
Definition: GeometryEntity2dTypes.h:28
void setTheta(const ipReal64 theta)
access to ellipse parameters
Definition: Ellipse2d.h:237
IPSDK_FORCEINLINE PackT sqrt(const PackT &in)
returns the square root of a pack
Definition: sqrt.h:40
void setCenter(const Point2dData< T > ¢er)
access to ellipse parameters
Definition: Ellipse2d.h:202
ipReal64 area() const
retrieve ellipse area
Definition: Ellipse2d.h:332
IPSDKMATH_API ipReal64 ellipseRadius(const ipReal64 a, const ipReal64 b, const ipReal64 phi)
function allowing to compute axis aligned ellipse 'radius' for a given angle phi
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
ipReal64 radius(const ipReal64 phi) const
retrieve ellipse radius for a given orientation
Definition: Ellipse2d.h:346
Utility functions used to handle angles 2d.
eCoordinateSystem2dType
Enumerate describing coordinate system 2d type.
Definition: GeometryEntity2dTypes.h:76
Point2dData< ipReal64 > focus1() const
compute focus points coordinates
Definition: Ellipse2d.h:298
ipReal64 excentricity() const
retrieve ellipse excentricity
Definition: Ellipse2d.h:339
T _majorRadius
major radius
Definition: Ellipse2d.h:132
Definition of import/export macro for library.
const Point2dData< T > & center() const
access to ellipse parameters
Definition: Ellipse2d.h:260
ipReal64 getTheta() const
access to ellipse parameters
Definition: Ellipse2d.h:281
#define IPSDKGEOMETRY_API
Import/Export macro for library IPSDKGeometry.
Definition: IPSDKGeometryExports.h:25
BoundingBox.
Definition: GeometryEntity2dTypes.h:44
IPSDKMATH_API ipReal64 ellipsePerimeterUpperBound(const ipReal64 a, const ipReal64 b)
function allowing to compute upper bound value for an ellipse perimeter
Utility functions used to handle ellipses 2d.
T getMinorRadius() const
access to ellipse parameters
Definition: Ellipse2d.h:274
Base class for typed 3d geometry entities.
Definition: BaseTypedGeometryEntity2d.h:27
void setMinorRadius(const T minorRadius)
access to ellipse parameters
Definition: Ellipse2d.h:230
#define IPSDK_DECLARE_GEOMETRY_ENTITY_2D(libraryName, className)
Macro allowing to declare a geometry entity 2d.
Definition: GeometryEntity2dHdrMacros.h:131
Utility functions for ipsdk math library.
T _y
y coordinate of point
Definition: Point2dData.h:72
void setMajorRadius(const T majorRadius)
access to ellipse parameters
Definition: Ellipse2d.h:223
ipReal64 _theta
orientation (in radian) of the ellipse
Definition: Ellipse2d.h:138
ipReal64 _sinTheta
computation intermediate
Definition: Ellipse2d.h:143
eEntity2dType getEntity2dType() const
method allowing to retrieve entity 2d type
Definition: Ellipse2d.h:159
const Point2dData< T > & getCoords() const
access to point coordinates
Definition: Point2d.h:139
Point2dData< T > _centerPt
center of the ellipse
Definition: Ellipse2d.h:129
eEntity2dType
Enumerate describing entity 2d type.
Definition: GeometryEntity2dTypes.h:38
ipReal64 perimeterLowerBound() const
retrieve lower bound for ellipse perimeter
Definition: Ellipse2d.h:318
ipReal64 focalLength() const
compute focal length associated to ellipse
Definition: Ellipse2d.h:288
Point2dData< ipReal64 > focus2() const
compute focus points coordinates
Definition: Ellipse2d.h:308
Basic operators used for 2d ellipse management.
IPSDKMATH_API ipReal64 ellipseExcentricity(const ipReal64 a, const ipReal64 b)
function allowing to compute ellipse excentricity
T getMajorRadius() const
access to ellipse parameters
Definition: Ellipse2d.h:267
Lightweight structure used to store Point2d data.
Definition: GeometryEntity2dTypes.h:26
void setCoords(const Point2dData< T > ¢erPt, const T majorRadius, const T minorRadius, const ipReal64 theta)
access to ellipse parameters
Definition: Ellipse2d.h:166
T centerY() const
access to ellipse parameters
Definition: Ellipse2d.h:253
T _minorRadius
minor radius
Definition: Ellipse2d.h:135
IPSDK_FORCEINLINE PackT abs(const PackT &in)
returns the absolute value of a pack
Definition: abs.h:41
IPSDKMATH_API ipReal64 ellipseArea(const ipReal64 a, const ipReal64 b)
function allowing to compute ellipse area
IPSDKMATH_API void ellipsePoint(const ipReal64 xc, const ipReal64 yc, const ipReal64 a, const ipReal64 b, const ipReal64 ellipseOrient, const ipReal64 theta, ipReal64 &ptX, ipReal64 &ptY)
function allowing to compute ellipse boundary point for a given angle
Point2dData< ipReal64 > boundaryPoint(const ipReal64 phi) const
retrieve ellipse boundary point for a given orientation
Definition: Ellipse2d.h:353
Cartesian coordinate system.
Definition: GeometryEntity2dTypes.h:78
IPSDK_FORCEINLINE ipReal64 centerModulo(const ipReal64 angle, const ipReal64 modulo)
function allowing to compute centered modulo of an angle
Definition: Angles.h:57
IPSDKMATH_API ipReal64 ellipsePerimeterLowerBound(const ipReal64 a, const ipReal64 b)
function allowing to compute lower bound value for an ellipse perimeter