GeodeticsPlugin
在 Unigine 中创建的世界使用笛卡尔坐标,而现实世界的模拟器通常使用地理空间数据。为了使这两个 Universe 匹配,UNIGINE 提供了 GeodeticsPlugin。
该插件允许将 GPS 纬度、经度和高度坐标转换为 X、Y 和 Z,反之亦然。该解决方案适用于平坦矩形地形区域和行星状 Terrain Global。
也可以看看#
启动测地学插件#
要使用 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);
}
最新更新:
2024-12-13
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)