GeodeticsPlugin
Мир, созданный в Unigine, использует декартовы координаты, тогда как симуляторы реального мира обычно используют геопространственные данные. Чтобы обеспечить соответствие двух этих миров друг другу, в UNIGINE есть GeodeticsPlugin.
Этот плагин позволяет переводить координаты GPS широты, долготы и высоты в X, Y и Z и наоборот. Решение применимо как для плоских прямоугольных участков местности, так и для планеты Terrain Global.
Смотрите также#
- Класс GeodeticsTransformer.
Запуск плагина GeodeticsPlugin#
Чтобы использовать GeodeticsPlugin, укажите опцию командной строки extern_plugin при запуске приложения:
main_x64 -extern_plugin "UnigineGeodetics"
Использование GeodeticsPlugin#
Вот пример кода, который показывает, как разместить объект в мире с помощью геодезических координат:
#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);
}
Последнее обновление:
13.12.2024
Помогите сделать статью лучше
Была ли эта статья полезной?
(или выберите слово/фразу и нажмите Ctrl+Enter