SpatiumLib
Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
spatium::geom3d::Ellipsoid Class Reference

Ellipsoid geometry. More...

#include <Ellipsoid.h>

Inheritance diagram for spatium::geom3d::Ellipsoid:
Inheritance graph
[legend]
Collaboration diagram for spatium::geom3d::Ellipsoid:
Collaboration graph
[legend]

Public Member Functions

 Ellipsoid (const Point3 &origin, double axisX, double axisY, double axisZ)
 Constructor. More...
 
 Ellipsoid (double axisX, double axisY, double axisZ)
 Constructor. More...
 
 Ellipsoid (const Ellipsoid &other)=default
 Copy constructor. More...
 
Ellipsoidoperator= (const Ellipsoid &other)=default
 Assignment operator. More...
 
virtual ~Ellipsoid ()=default
 Destructor. More...
 
void origin (const Point3 &origin)
 Set origin of ellipsoid. More...
 
Point3 origin () const
 Get origin of ellipsoid. More...
 
void axisX (double axisX)
 Set the X axis length. More...
 
double axisX () const
 Get the X axis length. More...
 
void axisY (double axisY)
 Set the Y axis length. More...
 
double axisY () const
 Get the Y axis length. More...
 
void axisZ (double axisZ)
 Set the Z axis length. More...
 
double axisZ () const
 Get the Z axis length. More...
 
double distanceTo (const Point3 &point) const override
 Compute Euclidean distance to point. More...
 
Point3 projectPoint (const Point3 &point) const override
 Project point onto ellipsoid. More...
 
bool intersectLine (const Point3 &origin, const Vector3 &direction, Point3 &intersection) const override
 Intersect line with ellipsoid. More...
 
Vector3 surfaceNormal (const Point3 &point) const
 Compute surface normal at given point. More...
 
Point3 pointOnHorizon (const Point3 &point, double direction, bool poleLimit=false)
 Compute point on horizon in a given direction. More...
 
- Public Member Functions inherited from spatium::geom3d::Geometry
 Geometry ()=default
 
virtual ~Geometry ()=default
 

Protected Member Functions

void updateTransformation ()
 Update the transformation parameters that transform a sphere into this ellipsoid. These parameters are internally used to represent the ellipsoid as a transformed sphere. More...
 

Protected Attributes

Matrix4x4 m_ellipsoidalTransformation
 
Matrix4x4 m_ellipsoidalTransformationInverse
 
Point3 m_origin
 
double m_axisX
 
double m_axisY
 
double m_axisZ
 

Friends

std::ostream & operator<< (std::ostream &os, const Ellipsoid &ellipsoid)
 Output to ostream. More...
 

Detailed Description

Ellipsoid geometry.

An ellipsoid is defined by a point (origin) and three radii; one for each axis.

Parametric description = x^2 / a^2 + y^2 / b^2 + z^2 / c^2 = 1

The ellipsoid is implemented by a sphere with an ellipsoidal transformation applied to it.

Constructor & Destructor Documentation

◆ Ellipsoid() [1/3]

spatium::geom3d::Ellipsoid::Ellipsoid ( const Point3 origin,
double  axisX,
double  axisY,
double  axisZ 
)
inline

Constructor.

◆ Ellipsoid() [2/3]

spatium::geom3d::Ellipsoid::Ellipsoid ( double  axisX,
double  axisY,
double  axisZ 
)
inline

Constructor.

◆ Ellipsoid() [3/3]

spatium::geom3d::Ellipsoid::Ellipsoid ( const Ellipsoid other)
default

Copy constructor.

◆ ~Ellipsoid()

virtual spatium::geom3d::Ellipsoid::~Ellipsoid ( )
virtualdefault

Destructor.

Member Function Documentation

◆ axisX() [1/2]

void spatium::geom3d::Ellipsoid::axisX ( double  axisX)
inline

Set the X axis length.

Parameters
[in]axisXX axis length

◆ axisX() [2/2]

double spatium::geom3d::Ellipsoid::axisX ( ) const
inline

Get the X axis length.

Returns
X axis length

◆ axisY() [1/2]

void spatium::geom3d::Ellipsoid::axisY ( double  axisY)
inline

Set the Y axis length.

Parameters
[in]axisYY axis length

◆ axisY() [2/2]

double spatium::geom3d::Ellipsoid::axisY ( ) const
inline

Get the Y axis length.

Returns
Y axis length

◆ axisZ() [1/2]

void spatium::geom3d::Ellipsoid::axisZ ( double  axisZ)
inline

Set the Z axis length.

Parameters
[in]axisZZ axis length

◆ axisZ() [2/2]

double spatium::geom3d::Ellipsoid::axisZ ( ) const
inline

Get the Z axis length.

Returns
Z axis length

◆ distanceTo()

double spatium::geom3d::Ellipsoid::distanceTo ( const Point3 point) const
inlineoverridevirtual

Compute Euclidean distance to point.

Parameters
[in]pointPoint
Returns
Distance to point

Implements spatium::geom3d::Geometry.

◆ intersectLine()

bool spatium::geom3d::Ellipsoid::intersectLine ( const Point3 origin,
const Vector3 direction,
Point3 intersection 
) const
inlineoverridevirtual

Intersect line with ellipsoid.

Parameters
[in]originOrigin of line
[in]directionDirection of line
[out]intersectionIntersection point
Returns
True if there is an intersection, otherwise false

Implements spatium::geom3d::Geometry.

◆ operator=()

Ellipsoid& spatium::geom3d::Ellipsoid::operator= ( const Ellipsoid other)
default

Assignment operator.

◆ origin() [1/2]

void spatium::geom3d::Ellipsoid::origin ( const Point3 origin)
inline

Set origin of ellipsoid.

Parameters
[in]originOrigin

◆ origin() [2/2]

Point3 spatium::geom3d::Ellipsoid::origin ( ) const
inline

Get origin of ellipsoid.

Returns
Origin

◆ pointOnHorizon()

Point3 spatium::geom3d::Ellipsoid::pointOnHorizon ( const Point3 point,
double  direction,
bool  poleLimit = false 
)
inline

Compute point on horizon in a given direction.

Parameters
[in]pointPoint above surface (Cartesian)
[in]directionDirection towards horizon as polar coordinate in radians. 0 = east, 1/2 pi = north, etc.
[in]poleLimitWhether or not to limit the latitude at the poles. It wil not exceed (shrink again) beyond the horizon of the pole.

◆ projectPoint()

Point3 spatium::geom3d::Ellipsoid::projectPoint ( const Point3 point) const
inlineoverridevirtual

Project point onto ellipsoid.

Parameters
[in]pointPoint
Returns
Projected point

Implements spatium::geom3d::Geometry.

◆ surfaceNormal()

Vector3 spatium::geom3d::Ellipsoid::surfaceNormal ( const Point3 point) const
inline

Compute surface normal at given point.

Parameters
[in]pointPoint with X, Y & Z coordinates
Returns
Surface normal

◆ updateTransformation()

void spatium::geom3d::Ellipsoid::updateTransformation ( )
inlineprotected

Update the transformation parameters that transform a sphere into this ellipsoid. These parameters are internally used to represent the ellipsoid as a transformed sphere.

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  os,
const Ellipsoid ellipsoid 
)
friend

Output to ostream.

Member Data Documentation

◆ m_axisX

double spatium::geom3d::Ellipsoid::m_axisX
protected

◆ m_axisY

double spatium::geom3d::Ellipsoid::m_axisY
protected

◆ m_axisZ

double spatium::geom3d::Ellipsoid::m_axisZ
protected

◆ m_ellipsoidalTransformation

Matrix4x4 spatium::geom3d::Ellipsoid::m_ellipsoidalTransformation
protected

◆ m_ellipsoidalTransformationInverse

Matrix4x4 spatium::geom3d::Ellipsoid::m_ellipsoidalTransformationInverse
protected

◆ m_origin

Point3 spatium::geom3d::Ellipsoid::m_origin
protected

The documentation for this class was generated from the following file: