This page has been translated automatically.
Video Tutorials
Interface
Essentials
Advanced
How To
Basics
Rendering
Professional (SIM)
UnigineEditor
Interface Overview
Assets Workflow
Version Control
Settings and Preferences
Working With Projects
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Lighting
Sandworm
Using Editor Tools for Specific Tasks
Extending Editor Functionality
Built-in Node Types
Nodes
Objects
Effects
Decals
Light Sources
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
Programming
Fundamentals
Setting Up Development Environment
Usage Examples
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
Materials and Shaders
Rebuilding the Engine Tools
GUI
Double Precision Coordinates
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Content Creation
Content Optimization
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials

Unigine::GeodeticPivot Class

Warning
The functionality described in this article is not available in the Community SDK edition.
You should upgrade to Engineering / Sim SDK edition to use it.
Header: #include <UnigineGeodetics.h>
Inherits from: 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). The geodetic pivot contains an ellipsoid with a pivot point.

Notice
In UNIGINE SDK editions other than Engineering and Sim, the geodetic pivot object is equivalent to NodeDummy.

See also#

A UnigineScript API sample <UnigineSDK>/data/samples/geodetics/pivot_00

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.

void setEllipsoid ( const Ptr<Ellipsoid> & ellipsoid ) #

Sets an Ellipsoid to be used for the Geodetic Pivot.
Notice
Modifying the ellipsoid of the Geodetic Pivot directly makes the pivot's state inconsistent. You should force the GeodeticPivot node to update its internal state according to the modified ellipsoid by setting it via the setEllipsoid() method.
Source code (C++)
// Creating a new geodetic pivot
GeodeticPivotPtr pivot = GeodeticPivot::create();

// setting the local (X - Y - Z) origin basis for it
pivot->setOriginBasis(GeodeticPivot::ORIGIN_BASIS_LOCAL);

// getting an ellipsoid currently used by the geodetic pivot
EllipsoidPtr ellipsoid = pivot->getEllipsoid();

// setting a fast calculation mode for the ellipsoid
ellipsoid->setMode(Ellipsoid::MODE_FAST);

// setting a new semimajor axis for the ellipsoid
ellipsoid->setSemimajorAxis(6378137.0f - 500.0f);

/* ... */

// force updating the geodetic pivot according to the modified ellipsoid
pivot->setEllipsoid(ellipsoid);

Arguments

Ptr<Ellipsoid> getEllipsoid ( ) #

Returns the Ellipsoid currently used by the Geodetic Pivot.
Notice
Modifying the ellipsoid of the Geodetic Pivot directly makes the pivot's state inconsistent. You should force the GeodeticPivot node to update its internal state according to the modified ellipsoid by setting it via the setEllipsoid() method.
Source code (C++)
// Creating a new geodetic pivot
GeodeticPivotPtr pivot = GeodeticPivot::create();

// setting the local (X - Y - Z) origin basis for it
pivot->setOriginBasis(GeodeticPivot::ORIGIN_BASIS_LOCAL);

// getting an ellipsoid currently used by the geodetic pivot
EllipsoidPtr ellipsoid = pivot->getEllipsoid();

// setting a fast calculation mode for the ellipsoid
ellipsoid->setMode(Ellipsoid::MODE_FAST);

// setting a new semimajor axis for the ellipsoid
ellipsoid->setSemimajorAxis(6378137.0f - 500.0f);

/* ... */

// force updating the geodetic pivot according to the modified ellipsoid
pivot->setEllipsoid(ellipsoid);

Return value

Ellipsoid currently used by the Geodetic Pivot.

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.
    Notice
    The Up-axis (Z+) direction in ENU points upward along the ellipsoid normal, while in UNIGINE implementation of ENU it goes from the Earth's center.

Arguments

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.
    Notice
    The Up-axis (Z+) direction in ENU points upward along the ellipsoid normal, while in UNIGINE implementation of ENU it goes from the Earth's center.

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 * OUT_ret_lat, double * OUT_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 * OUT_ret_lat - Output array of geodetic latitude coordinates.
    Notice
    This output buffer is to be filled by the Engine as a result of executing the method.
  • double * OUT_ret_lon - Output array of geodetic longitude coordinates.
    Notice
    This output buffer is to be filled by the Engine as a result of executing the method.

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.

void mapGeodeticsToFlat ( const double * lat, const double * lon, int size, double * OUT_ret_x, double * OUT_ret_y ) #

Pefrorms batch mapping of geodetic latitude / longitude coordinates to flat plane coordinates according to pivot's latitude / longitude origin and puts the result to the corresponding output arrays.

Arguments

  • const double * lat - Array of geodetic latitude coordinates.
  • const double * lon - Array of geodetic longitude coordinates.
  • int size - Array size.
  • double * OUT_ret_x - Output array of flat plane X coordinates.
    Notice
    This output buffer is to be filled by the Engine as a result of executing the method.
  • double * OUT_ret_y - Output array of flat plane Y coordinates.
    Notice
    This output buffer is to be filled by the Engine as a result of executing the method.

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.

static int type ( ) #

Returns the type of the object.

Return value

GeodeticPivot type identifier.
Last update: 2021-04-01
Build: ()