Unigine::GeodeticPivot Class
Header: | #include <UnigineGeodetics.h> |
Inherits: | Node |
This class is used to create and modify a geodetic pivot object that is used to place world objects on their real world positions (latitude, longitude and altitude).
Notice
The geodetic pivot contains an ellipsoid with a pivot point.
Geodetic pivot object works only in Sim version of Unigine Engine. In other editions it's equivalent to NodeDummy.
GeodeticPivot Class
Members
static GeodeticPivotPtr create()
GeodeticPivot constructor. Creates a GeodeticPivot instance with the default settings:- The origin is set to dvec3(0.0,0.0,0.0).
- The size of the curving region is 2048000×2048000 km.
- The resolution of the region texture is 2048.
Ptr<GeodeticPivot> cast(const Ptr<Node> & node)
Casts a GeodeticPivot out of the Node instance.Arguments
- const Ptr<Node> & node - Pointer to Node.
Return value
Pointer to GeodeticPivot.void setEllipsoid(const Ptr<Ellipsoid> & ellipsoid)
Sets an Ellipsoid for the GeodeticPivot object.Arguments
- const Ptr<Ellipsoid> & ellipsoid - An Ellipsoid.
const Ptr<Ellipsoid> & getEllipsoid()
Returns the Ellipsoid set for the GeodeticPivot object.void setOrigin(const Math::dvec3 & origin)
Sets a new position (latitude, longitude and altitude) on the ellipsoid.Source code (C++)
// the GeodeticPivot will use WGS84 reference ellipsoid by default
GeodeticPivotPtr pivot = GeodeticPivot::create();
// update the origin
dvec3 new_york_origin = dvec3(40.71427,-74.00597,57.0);
pivot->setOrigin(new_york_origin);
ObjectMeshStaticPtr flat_new_york_ground = ObjectMeshStatic::create("flat_new_york_ground.mesh");
pivot->addChild(flat_new_york_ground); // the mesh will be bent once ObjectMeshStatic become a child of GeodeticPivot
Arguments
- const Math::dvec3 & origin - Origin vector in ellipsoid coordinates.
Math::dvec3 getOrigin()
Returns the position (latitude, longitude and altitude) on the ellipsoid.Return value
Origin vector in ellipsoid coordinates.void setOriginBasis(int basis)
Sets a new origin basis for the GeodeticPivot object:- If ORIGIN_BASIS_LOCAL is set, the binding to geo-coordinates is disabled. GeodeticPivot can be placed everywhere.
- If ORIGIN_BASIS_ENU is set, GeodeticPivot is placed to the world ECF position with ENU (East - North - Up) orientation according to the given latitude / longitude / altitude. The GeodeticPivot position is blocked.
Arguments
- int basis - One of the ORIGIN_BASIS_* variables.
int getOriginBasis()
Returns the origin basis set for the GeodeticPivot object:- If ORIGIN_BASIS_LOCAL is set, the binding to geo-coordinates is disabled. GeodeticPivot can be placed everywhere.
- If ORIGIN_BASIS_ENU is set, GeodeticPivot is placed to the world ECF position with ENU (East - North - Up) orientation according to the given latitude / longitude / altitude. The GeodeticPivot position is blocked.
Return value
One of the ORIGIN_BASIS_* variables.void mapEllipsoidToFlat(const Math::vec3 & ellipsoid_point, Math::vec3 & ret_flat_point, Math::vec3 & ret_ellipsoid_normal)
Maps ellipsoid coordinates of a point to flat plane coordinates (using latitude and longitude as X and Y coordinates and altitude as Z).Arguments
- const Math::vec3 & ellipsoid_point - Ellipsoid coordinates of the point
- Math::vec3 & ret_flat_point - Flat plane coordinates of the point.
- Math::vec3 & ret_ellipsoid_normal - Ellipsoid point normal coordinates.
void mapEllipsoidToFlat(const Math::dvec3 & ellipsoid_point, Math::dvec3 & ret_flat_point, Math::dvec3 & ret_ellipsoid_normal)
Maps ellipsoid coordinates of a point to flat plane coordinates (using latitude and longitude as X and Y coordinates and altitude as Z).Arguments
- const Math::dvec3 & ellipsoid_point - Ellipsoid coordinates of the point
- Math::dvec3 & ret_flat_point - Flat plane coordinates of the point.
- Math::dvec3 & ret_ellipsoid_normal - Ellipsoid point normal coordinates.
Math::mat4 mapEllipsoidToFlat(const Math::mat4 & ellipsoid_transform)
Maps ellipsoid transformation to the flat plane transformation (using latitude and longitude as X and Y coordinates and altitude as Z).Arguments
- const Math::mat4 & ellipsoid_transform - Ellipsoid transformation.
Return value
Flat plane transformation.Math::dmat4 mapEllipsoidToFlat(const Math::dmat4 & ellipsoid_transform)
Maps ellipsoid transformation to the flat plane transformation (using latitude and longitude as X and Y coordinates and altitude as Z).Arguments
- const Math::dmat4 & ellipsoid_transform - Ellipsoid transformation.
Return value
Flat plane transformation.void mapFlatToEllipsoid(const Math::vec3 & flat_point, Math::vec3 & ret_ellipsoid_point, Math::vec3 & ret_ellipsoid_normal)
Maps flat plane coordinates to the ellipsoid (uses X and Y coordinates as latitude and longitude, and Z as altitude).Arguments
- const Math::vec3 & flat_point - Flat plane coordinates of the point.
- Math::vec3 & ret_ellipsoid_point - Ellipsoid coordinates of the point
- Math::vec3 & ret_ellipsoid_normal - Ellipsoid point normal coordinates.
void mapFlatToEllipsoid(const Math::dvec3 & flat_point, Math::dvec3 & ret_ellipsoid_point, Math::dvec3 & ret_ellipsoid_normal)
Maps flat plane coordinates to the ellipsoid (uses X and Y coordinates as latitude and longitude, and Z as altitude).Arguments
- const Math::dvec3 & flat_point - Flat plane coordinates of the point.
- Math::dvec3 & ret_ellipsoid_point - Ellipsoid coordinates of the point
- Math::dvec3 & ret_ellipsoid_normal - Ellipsoid point normal coordinates.
Math::mat4 mapFlatToEllipsoid(const Math::mat4 & flat_transform)
Maps flat plane transformation to the ellipsoid transformation (uses X and Y coordinates as latitude and longitude, and Z as altitude).Arguments
- const Math::mat4 & flat_transform - Flat plane transformation.
Return value
Ellipsoid transformation.Math::dmat4 mapFlatToEllipsoid(const Math::dmat4 & flat_transform)
Maps flat plane transformation to the ellipsoid transformation (uses X and Y coordinates as latitude and longitude, and Z as altitude).Arguments
- const Math::dmat4 & flat_transform - Flat plane transformation.
Return value
Ellipsoid transformation.Math::dvec3 mapFlatToGeodetic(const Math::dvec3 & flat_point)
Maps flat plane coordinates to geodetic latitude / longitude / altitude coordinates according to pivot's origin.Arguments
- const Math::dvec3 & flat_point - Flat plane coordinates.
Return value
Geodetic coordinates.Math::dvec3 mapFlatToGeodetic(const Math::vec3 & flat_point)
Maps flat plane coordinates to geodetic latitude / longitude / altitude coordinates according to pivot's origin.Arguments
- const Math::vec3 & flat_point - Flat plane coordinates.
Return value
Geodetic coordinates.void mapFlatsToGeodetic(const double * src_x, const double * src_y, int size, double * ret_lat, double * ret_lon)
Pefrorms batch mapping of flat plane coordinates to geodetic latitude / longitude coordinates according to pivot's origin and puts the result to the corresponding output arrays.Arguments
- const double * src_x - Array of flat plane X coordinates.
- const double * src_y - Array of flat plane Y coordinates.
- int size - Array size.
- double * ret_lat - Output array of geodetic latitude coordinates.
- double * ret_lon - Output array of geodetic longitude coordinates.
Math::dvec3 mapGeodeticToFlat(const Math::dvec3 & geodetic_coords)
Maps geodetic latitude / longitude / altitude coordinates to flat plane coordinates according to pivot's latitude / longitude / altitude origin.Arguments
- const Math::dvec3 & geodetic_coords - Geodetic coordinates.
Return value
Flat plane coordinates.Math::mat4 mapMeshEllipsoidToFlat(Ptr<Mesh> & mesh, const Math::mat4 & ellipsoid_transform)
Maps a curved mesh to the flat plane (using latitude / longitude / altitude as X / Y / Z coordinates).Arguments
- Ptr<Mesh> & mesh - Mesh to be mapped.
- const Math::mat4 & ellipsoid_transform - Mesh ellipsoid transformation.
Return value
Position on the flat plane, where the node is to be placed.Math::dmat4 mapMeshEllipsoidToFlat(Ptr<Mesh> & mesh, const Math::dmat4 & ellipsoid_transform)
Maps a curved mesh to the flat plane (using latitude / longitude / altitude as X / Y / Z coordinates).Arguments
- Ptr<Mesh> & mesh - Mesh to be mapped.
- const Math::dmat4 & ellipsoid_transform - Mesh ellipsoid transformation.
Return value
Position on the flat plane, where the node is to be placed.Math::mat4 mapMeshFlatToEllipsoid(Ptr<Mesh> & mesh, const Math::mat4 & flat_transform)
Maps a flat mesh to the ellipsoid (uses X and Y coordinates as latitude and longitude, and Z as altitude).Arguments
- Ptr<Mesh> & mesh - Mesh to be mapped.
- const Math::mat4 & flat_transform - Mesh flat plane transformation.
Return value
Position on the ellipsoid, where the node is to be placed.Math::dmat4 mapMeshFlatToEllipsoid(Ptr<Mesh> & mesh, const Math::dmat4 & flat_transform)
Maps a flat mesh to the ellipsoid (uses X and Y coordinates as latitude and longitude, and Z as altitude).Arguments
- Ptr<Mesh> & mesh - Mesh to be mapped.
- const Math::dmat4 & flat_transform - Mesh flat plane transformation.
Return value
Position on the ellipsoid, where the node is to be placed.Math::dvec3 toGeodetic(const Math::mat4 & world_transform)
Returns geodetic coordinates for a given world transformation matrix.Arguments
- const Math::mat4 & world_transform - World transformation.
Return value
Geodetic coordinates.Math::dvec3 toGeodetic(const Math::dmat4 & world_transform)
Returns geodetic coordinates for a given world transformation matrix.Arguments
- const Math::dmat4 & world_transform - World transformation.
Return value
Geodetic coordinates.Math::dmat4 toWorld(const Math::dvec3 & geodetic_coords)
Returns world transformation matrix for given geodetic coordinates.Arguments
- const Math::dvec3 & geodetic_coords - Geodetic coordinates.
Return value
World transformation.Math::mat4 toWorldPreserveRotation(const Math::mat4 & world_transform, const Math::dvec3 & geodetic_coords)
Returns new world transformation matrix preserving rotation relative to normal.Arguments
- const Math::mat4 & world_transform - World transformation.
- const Math::dvec3 & geodetic_coords - Geodetic coordinates.
Return value
New world transformation.Math::dmat4 toWorldPreserveRotation(const Math::dmat4 & world_transform, const Math::dvec3 & geodetic_coords)
Returns new world transformation matrix preserving rotation relative to normal.Arguments
- const Math::dmat4 & world_transform - World transformation.
- const Math::dvec3 & geodetic_coords - Geodetic coordinates.
Return value
New world transformation.int type()
Returns the type of the object.Return value
GeodeticPivot type identifier.int ORIGIN_BASIS_ENU
Description
The origin basis East - North - Up (Earth-Centric) is used for the GeodeticPivot object. It is used to place the pivot to the world ECF position with ENU orientation according to latitude / longitude / altitude. The position of the GeodeticPivot object is blocked when this basis is used.int ORIGIN_BASIS_LOCAL
Description
The local (X - Y - Z) origin basis is used for the GeodeticPivot object. The pivot doesn't bind to geo-coordinates and can be placed anywhere.Last update: 2017-10-20
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)