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).
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.// 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)