Unigine::Ellipsoid Class
Header: | #include <UnigineEllipsoid.h> |
Ellipsoid Class
Members
static EllipsoidPtr create(double semimajor_axis, double flattening)
Arguments
- double semimajor_axis
- double flattening
static EllipsoidPtr create()
Constructor. Creates a new Ellipsoid class instance (WGS84 Ellipsoid).Math::dvec3 getENUSurfacePoint(const Math::dvec3 & geodetic_origin, const Math::dvec3 & tangent_point)
Arguments
- const Math::dvec3 & geodetic_origin
- const Math::dvec3 & tangent_point
Math::dvec3 getENUTangentPoint(const Math::dvec3 & geodetic_origin, const Math::dvec3 & surface_point)
Arguments
- const Math::dvec3 & geodetic_origin
- const Math::dvec3 & surface_point
Math::quat getENUWorldRotation(const Math::dvec3 & geodetic_origin)
Returns the world rotation quaternion in ENU coordinates.Arguments
- const Math::dvec3 & geodetic_origin - The origin in ellipsoid coordinates (latitude (degrees), longitude (degrees) and altitude (meters).
Return value
World rotation in ENU coordinates.Math::dmat4 getENUWorldTransform(const Math::dvec3 & geodetic_origin)
Returns the world transformation matrix in ENU coordinates.Arguments
- const Math::dvec3 & geodetic_origin - The origin in ellipsoid coordinates (latitude (degrees), longitude (degrees) and altitude (meters).
Return value
World transformation matrix in ENU coordinates.void setFlattening(double flattening)
Sets new flattening for the ellipsoid.Arguments
- double flattening - Flattening coefficient of the ellipsoid. If the value is 0, the ellipsoid has a sphere shape, for 1 the ellipsoid has a circle (completely flat) shape.
double getFlattening()
Returns flattening coefficient of the ellipsoid.Return value
Flattening coefficient of the ellipsoid.double getMeanRadius()
Returns the mean radius of the ellipsoid.Return value
The mean radius of the ellipsoid.void setMode(int mode)
Sets the calculation mode.Arguments
- int mode - The variable of the calculation mode. It can be one of the following:
int getMode()
Returns the calculation mode int value: 1 if the mode is MODE_ACCURATE, 0 if the mode is MODE_FAST.Return value
1 if the mode is MODE_ACCURATE, 0 if the mode is MODE_FAST.Math::vec3 getNEDSurfacePoint(const Math::dvec3 & geodetic_origin, const Math::dvec3 & tangent_point)
Returns surface point by using tangent point coordinates.Arguments
- const Math::dvec3 & geodetic_origin - The origin in ellipsoid coordinates (latitude (degrees), longitude (degrees) and altitude (meters).
- const Math::dvec3 & tangent_point - Tangent point coordinates to converted (curved) to surface coordinates (offset related to point of junction).
Return value
Surface point coordinates.Math::vec3 getNEDTangentPoint(const Math::dvec3 & geodetic_origin, const Math::dvec3 & surface_point)
Returns tangent point NED coordinates based on the geographical coordinates.Arguments
- const Math::dvec3 & geodetic_origin - The origin in ellipsoid coordinates (latitude (degrees), longitude (degrees) and altitude (meters).
- const Math::dvec3 & surface_point - Surface point coordinates to be converted (flatten) to tangent point (offset related to point of junction).
Return value
Tangent point coordinates.Math::quat getNEDWorldRotation(const Math::dvec3 & geodetic_origin)
Returns the world rotation quaternion in NED coordinates.Arguments
- const Math::dvec3 & geodetic_origin - The origin in ellipsoid coordinates (latitude (degrees), longitude (degrees) and altitude (meters).
Return value
World rotation in NED coordinates.Math::dmat4 getNEDWorldTransform(const Math::dvec3 & geodetic_origin)
Returns the world transformation matrix in NED coordinates.Arguments
- const Math::dvec3 & geodetic_origin - The origin in ellipsoid coordinates (latitude (degrees), longitude (degrees) and altitude (meters).
Return value
World transformation matrix in NED coordinates.void setSemimajorAxis(double axis)
Sets new semimajor axis of the ellipsoid.Arguments
- double axis - Semimajor axis length in units.
double getSemimajorAxis()
Returns semimajor axis length of the ellipsoid in units.Return value
Semimajor axis of the ellipsoid.double getSemimajorEccentricitySqr()
Returns the squared eccentricity calculated along the semimajor axis.Return value
Squared eccentricity calculated along the semimajor axis.double getSemiminorAxis()
Returns semiminor axis of the ellipsoid in units.Return value
Semiminor axis of the ellipsoid in units.double getSemiminorEccentricitySqr()
Returns the squared eccentricity calculated along the semiminor axis.Return value
Squared eccentricity calculated along the semiminor axis.Math::dvec3 solveGeodeticDirect(const Math::dvec3 & geodetic_start, double bearing, double distance)
Arguments
- const Math::dvec3 & geodetic_start
- double bearing
- double distance
void solveGeodeticInverse(const Math::dvec3 & geodetic_start, const Math::dvec3 & geodetic_end, double & bearing, double & distance)
Arguments
- const Math::dvec3 & geodetic_start
- const Math::dvec3 & geodetic_end
- double & bearing
- double & distance
Math::dvec3 toECF(const Math::dvec3 & geodetic_coords)
Converts geodetic coordinates to Cartesian (ECF).Arguments
- const Math::dvec3 & geodetic_coords - Ellipsoid coordinates (latitude (degrees), longitude (degrees) and altitude (meters)) to be converted to Cartesian.
Return value
Cartesian coordinates.Math::dvec3 toENU(const Math::dvec3 & geodetic_origin, const Math::dvec3 & geodetic_coords)
Converts geodetic coordinates to ENU (East, North, Up).Arguments
- const Math::dvec3 & geodetic_origin - The origin in ellipsoid coordinates (latitude (degrees), longitude (degrees) and altitude (meters).
- const Math::dvec3 & geodetic_coords - Coordinates to be converted to ENU.
Return value
ENU coordinates.Math::dvec3 toGeodetic(const Math::dvec3 & ecf_coords)
Converts Cartesian (ECF) coordinates to Ellipsoid.Arguments
- const Math::dvec3 & ecf_coords - Cartesian ECF coordinates to be converted.
Return value
Ellipsoid coordinates (latitude (degrees), longitude (degrees) and altitude (meters)Math::dvec3 toNED(const Math::dvec3 & geodetic_origin, const Math::dvec3 & geodetic_coords)
Converts geodetics coordinates to NED (North, East, Down).Arguments
- const Math::dvec3 & geodetic_origin - The origin in ellipsoid coordinates (latitude (degrees), longitude (degrees) and altitude (meters).
- const Math::dvec3 & geodetic_coords - Coordinates to be converted to NED.
Return value
NED coordinates.int MODE_ACCURATE
Description
A calculation mode uses Vincenty's formula to calculate distances on the surface of the ellipsoid with a millimeter precision. It takes more time for calculation, but the accuracy of positioning is awesome.int MODE_FAST
Description
A calculation mode is computed by using Great-circle distance formula. It works pretty fast, but you'll get positioning errors on big (~80000x80000 units) distances.Last update: 2017-07-03
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)