GeodeticsPlugin
Чтобы использовать этот функционал вам необходимо получить лицензию на
A world created in Unigine uses Cartesian coordinates, whereas real-world simulators normally use geospatial data. To make these two universes match, UNIGINE provides GeodeticsPlugin.Мир, созданный в Unigine, использует декартовы координаты, тогда как симуляторы реального мира обычно используют геопространственные данные. Чтобы обеспечить соответствие двух этих миров друг другу, в UNIGINE есть GeodeticsPlugin.
This plugin allows translating GPS latitude, longitude, and altitude coordinates to X, Y, and Z and vice versa. The solution is applicable for both flat rectangular terrain areas and the planet-shaped Terrain Global.Этот плагин позволяет переводить координаты GPS широты, долготы и высоты в X, Y и Z и наоборот. Решение применимо как для плоских прямоугольных участков местности, так и для планеты Terrain Global.
See alsoСмотрите также#
- GeodeticsTransformer classКласс GeodeticsTransformer.
Launching GeodeticsPluginЗапуск плагина GeodeticsPlugin#
To use GeodeticsPlugin, specify the extern_plugin command line option on the application start-up:Чтобы использовать GeodeticsPlugin, укажите опцию командной строки extern_plugin при запуске приложения:
main_x64 -extern_plugin "Geodetics"
Using GeodeticsPluginИспользование GeodeticsPlugin#
Here is an example code that illustrates how to position an object in a world using geodetic coordinates:Вот пример кода, который показывает, как разместить объект в мире с помощью геодезических координат:
#include <UnigineGeodeticsTransformer.h>
void init()
{
auto transformer = GeodeticsTransformer::get();
if (!transformer)
{
Log::warning("Can't get transformer\n");
return 0;
}
int epsg_code = 3857; // EPSG Geodetic Parameter Datase code
dvec3 geodetic_origin = dvec3_zero;
dvec3 original_geo_pos = dvec3(35.105580, -89.966775, 0.0);
dvec3 world_pos, geo_pos;
// setup projection
transformer->setProjectionEpsg(epsg_code, geodetic_origin);
// geodetic to world
world_pos = transformer->geodeticToWorld(original_geo_pos).getTranslate();
// world to geodetic
geo_pos = transformer->worldToGeodetic(world_pos);
Log::message("original geo_pos %f %f %f \n", original_geo_pos.x, original_geo_pos.y, original_geo_pos.z);
Log::message("world_pos %f %f %f \n", world_pos.x, world_pos.y, world_pos.z);
Log::message("geo_pos %f %f %f \n", geo_pos.x, geo_pos.y, geo_pos.z);
}