17 #ifndef __IPSDKGEOMETRY_ELLIPSOID3D_H__ 18 #define __IPSDKGEOMETRY_ELLIPSOID3D_H__ 22 #pragma warning (push) 23 #pragma warning (disable : 4251) 26 #include <IPSDKGeometry/Entity/3d/BaseTypedGeometryEntity3d.h> 27 #include <IPSDKGeometry/Entity/3d/Point/Point3d.h> 58 Ellipsoid3d(
const T xCenter,
const T yCenter,
const T zCenter,
const T majorRadius,
const T mediumRadius,
const T minorRadius,
const ipReal64 chi,
const ipReal64 beta,
const ipReal64 alpha);
73 const T majorRadius,
const T mediumRadius,
const T minorRadius,
75 inline void setCoords(
const Point3d<T>& centerPt,
76 const T majorRadius,
const T mediumRadius,
const T minorRadius,
78 inline void setCoords(
const T xCenter,
const T yCenter,
const T zCenter,
79 const T majorRadius,
const T mediumRadius,
const T minorRadius,
82 inline void setCenter(
const Point3d<T>& centerPt);
83 inline void setCenter(
const T xCenter,
const T yCenter,
const T zCenter);
84 inline void setMajorRadius(
const T majorRadius);
85 inline void setMediumRadius(
const T mediumRadius);
86 inline void setMinorRadius(
const T minorRadius);
88 inline T getMajorRadius()
const;
89 inline T getMediumRadius()
const;
90 inline T getMinorRadius()
const;
95 inline T centerX()
const;
96 inline T centerY()
const;
97 inline T centerZ()
const;
109 inline ipReal64 excentricity()
const;
149 template <
typename T>
153 return g_coordinateSystem3dType;
156 template <
typename T>
160 return g_entity3dType;
163 template <
typename T>
166 const T majorRadius,
const T mediumRadius,
const T minorRadius,
169 _centerPt = centerPt;
170 _majorRadius = majorRadius;
171 _mediumRadius = mediumRadius;
172 _minorRadius = minorRadius;
173 setOrientation(chi, beta, alpha);
176 template <
typename T>
179 const T majorRadius,
const T mediumRadius,
const T minorRadius,
183 _majorRadius = majorRadius;
184 _mediumRadius = mediumRadius;
185 _minorRadius = minorRadius;
186 setOrientation(chi, beta, alpha);
189 template <
typename T>
192 const T majorRadius,
const T mediumRadius,
const T minorRadius,
195 _centerPt.setCoords(xCenter, yCenter, zCenter);
196 _majorRadius = majorRadius;
197 _mediumRadius = mediumRadius;
198 _minorRadius = minorRadius;
199 setOrientation(chi, beta, alpha);
202 template <
typename T>
206 _centerPt = centerPt;
209 template <
typename T>
216 template <
typename T>
220 _centerPt.setCoords(xCenter, yCenter, zCenter);
223 template <
typename T>
227 _majorRadius = majorRadius;
230 template <
typename T>
234 _mediumRadius = mediumRadius;
237 template <
typename T>
241 _minorRadius = minorRadius;
244 template <
typename T>
254 template <
typename T>
261 template <
typename T>
268 template <
typename T>
275 template <
typename T>
282 template <
typename T>
289 template <
typename T>
296 template <
typename T>
300 return _mediumRadius;
303 template <
typename T>
310 template <
typename T>
317 template <
typename T>
324 template <
typename T>
331 template <
typename T>
338 template <
typename T>
345 template <
typename T>
352 template <
typename T>
359 template <
typename T>
368 template <
typename T>
374 _majorRadius, _mediumRadius, _minorRadius,
388 #pragma warning (pop) 390 #endif // __IPSDKGEOMETRY_ELLIPSOID3D_H__ ipReal64 _alpha
orientation angle along the x axis
Definition: Ellipsoid3d.h:134
3d ellipsoid associated to cartesian 3d coordinates For a non rotated ellipse, the major radius follo...
Definition: Ellipsoid3d.h:39
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
ipReal64 area() const
retrieve ellipsoid area
Definition: Ellipsoid3d.h:340
eCoordinateSystem3dType
Enumerate describing coordinate system 3d type.
Definition: GeometryEntity3dTypes.h:74
ipReal64 getChi() const
access to the sphere parameters
Definition: Ellipsoid3d.h:326
IPSDK_FORCEINLINE void eulerToMatrix(const T cosChi, const T sinChi, const T cosBeta, const T sinBeta, const T cosAlpha, const T sinAlpha, T &rxx, T &rxy, T &rxz, T &ryx, T &ryy, T &ryz, T &rzx, T &rzy, T &rzz)
Convertion from euler angles to rotation matrix.
Definition: Angles3d.h:99
void setMinorRadius(const T minorRadius)
access to the sphere parameters
Definition: Ellipsoid3d.h:239
Point class associated to cartesian 3d coordinates.
Definition: GeometryEntity3dTypes.h:29
T getMinorRadius() const
access to the sphere parameters
Definition: Ellipsoid3d.h:305
Utility functions used to handle ellipsoid 3d.
ipReal64 excentricity() const
retrieve ellipsoid excentricity
Definition: Ellipsoid3d.h:354
T getMediumRadius() const
access to the sphere parameters
Definition: Ellipsoid3d.h:298
#define IPSDK_DECLARE_GEOMETRY_ENTITY_3D(libraryName, className)
Macro allowing to declare a geometry entity 3d.
Definition: GeometryEntity3dHdrMacros.h:131
IPSDKMATH_API ipReal64 ellipsoidVolume(const ipReal64 a, const ipReal64 b, const ipReal64 c)
function allowing to compute ellipsoid volume
T _x
x coordinate of point
Definition: Point3dData.h:69
ipReal64 radius(const ipReal64 theta, const ipReal64 phi) const
retrieve ellipsoid radius for a given orientation (see Points and vectors 3d representation) ...
Definition: Ellipsoid3d.h:361
eEntity3dType getEntity3dType() const
method allowing to retrieve entity 3d type
Definition: Ellipsoid3d.h:158
void setCoords(const Point3dData< T > ¢erPt, const T majorRadius, const T mediumRadius, const T minorRadius, const ipReal64 chi, const ipReal64 beta, const ipReal64 alpha)
access to the sphere parameters
Definition: Ellipsoid3d.h:165
T centerY() const
access to the sphere parameters
Definition: Ellipsoid3d.h:263
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
const Point3dData< T > & getCoords() const
access to point coordinates
Definition: Point3d.h:142
T getMajorRadius() const
access to the sphere parameters
Definition: Ellipsoid3d.h:291
Ellipsoid.
Definition: GeometryEntity3dTypes.h:50
Definition of import/export macro for library.
T _mediumRadius
medium radius
Definition: Ellipsoid3d.h:128
void setCenter(const Point3dData< T > ¢erPt)
access to the sphere parameters
Definition: Ellipsoid3d.h:204
#define IPSDKGEOMETRY_API
Import/Export macro for library IPSDKGeometry.
Definition: IPSDKGeometryExports.h:25
T _majorRadius
major radius
Definition: Ellipsoid3d.h:125
T _minorRadius
minor radius
Definition: Ellipsoid3d.h:131
IPSDKMATH_API ipReal64 ellipsoidRadius(const ipReal64 a, const ipReal64 b, const ipReal64 c, const ipReal64 theta, const ipReal64 phi)
function allowing to compute axis aligned ellipsoid 'radius' for a given orientation (see Points and ...
Basic operators used for ellipsoid 3d management.
ipReal64 getBeta() const
access to the sphere parameters
Definition: Ellipsoid3d.h:319
Point3dData< T > _centerPt
center of the ellipsoid
Definition: Ellipsoid3d.h:122
IPSDKMATH_API ipReal64 ellipsoidExcentricity(const ipReal64 a, const ipReal64 b, const ipReal64 c)
function allowing to compute ellipsoid excentricity
eEntity3dType
Enumerate describing entity 3d type.
Definition: GeometryEntity3dTypes.h:38
T centerZ() const
access to the sphere parameters
Definition: Ellipsoid3d.h:270
boost::numeric::ublas::bounded_matrix< ipReal64, 3, 3 > Matrix3d
3d matrix (3x3) type associated to library
Definition: LinearAlgebraTypes.h:54
T _y
y coordinate of point
Definition: Point3dData.h:72
Utility functions used to handle angles 3d.
ipReal64 getAlpha() const
access to the sphere parameters
Definition: Ellipsoid3d.h:312
eCoordinateSystem3dType getCoordinateSystem3dType() const
method allowing to retrieve coordinate system 3d type
Definition: Ellipsoid3d.h:151
ipReal64 volume() const
retrieve ellipsoid volume
Definition: Ellipsoid3d.h:347
ipReal64 _chi
orientation angle along the z axis
Definition: Ellipsoid3d.h:140
void setMediumRadius(const T mediumRadius)
access to the sphere parameters
Definition: Ellipsoid3d.h:232
void setMajorRadius(const T majorRadius)
access to the sphere parameters
Definition: Ellipsoid3d.h:225
Point3dData< ipReal64 > boundaryPoint(const ipReal64 theta, const ipReal64 phi) const
retrieve ellipsoid boundary point for a given orientation (see Points and vectors 3d representation) ...
Definition: Ellipsoid3d.h:370
T centerX() const
access to the sphere parameters
Definition: Ellipsoid3d.h:256
Base class for typed 3d geometry entities.
Definition: BaseTypedGeometryEntity3d.h:27
Cartesian coordinate system.
Definition: GeometryEntity3dTypes.h:76
T _z
z coordinate of point
Definition: Point3dData.h:75
const math::Matrix3d & getMatRot() const
access to the sphere parameters
Definition: Ellipsoid3d.h:333
const Point3dData< T > & center() const
access to the sphere parameters
Definition: Ellipsoid3d.h:277
ipReal64 _beta
orientation angle along the y axis
Definition: Ellipsoid3d.h:137
Lightweight structure used to store Point3d data.
Definition: GeometryEntity3dTypes.h:27
IPSDKMATH_API void ellipsoidPoint(const ipReal64 xc, const ipReal64 yc, const ipReal64 zc, const ipReal64 a, const ipReal64 b, const ipReal64 c, const Matrix3d &matRot, const ipReal64 theta, const ipReal64 phi, ipReal64 &ptX, ipReal64 &ptY, ipReal64 &ptZ)
function allowing to compute ellipsoid boundary point for a given angle
math::Matrix3d _matRot
orientation matrix associated to ellipsoid
Definition: Ellipsoid3d.h:143
IPSDKMATH_API ipReal64 ellipsoidArea(const ipReal64 a, const ipReal64 b, const ipReal64 c)
function allowing to compute ellipsoid area
void setOrientation(const ipReal64 chi, const ipReal64 beta, const ipReal64 alpha)
access to the sphere parameters
Definition: Ellipsoid3d.h:246