Use GeographicLib

This commit is contained in:
Dan Paulat 2021-07-18 10:22:34 -05:00
parent c3037d6d38
commit 5ff7202c3e
3 changed files with 9 additions and 18 deletions

View file

@ -13,10 +13,10 @@ set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
include(${PROJECT_SOURCE_DIR}/external/cmake-conan/conan.cmake) include(${PROJECT_SOURCE_DIR}/external/cmake-conan/conan.cmake)
conan_cmake_configure(REQUIRES boost/1.76.0 conan_cmake_configure(REQUIRES boost/1.76.0
geographiclib/1.52
glm/0.9.9.8 glm/0.9.9.8
gtest/cci.20210126 gtest/cci.20210126
openssl/1.1.1k openssl/1.1.1k
proj/8.1.0
vulkan-loader/1.2.172 vulkan-loader/1.2.172
GENERATORS cmake GENERATORS cmake
cmake_find_package cmake_find_package

View file

@ -12,8 +12,8 @@ set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Boost) find_package(Boost)
find_package(geographiclib)
find_package(glm) find_package(glm)
find_package(proj)
# QtCreator supports the following variables for Android, which are identical to qmake Android variables. # QtCreator supports the following variables for Android, which are identical to qmake Android variables.
# Check https://doc.qt.io/qt/deployment-android.html for more information. # Check https://doc.qt.io/qt/deployment-android.html for more information.
@ -105,5 +105,5 @@ target_link_libraries(scwx-qt PRIVATE Qt${QT_VERSION_MAJOR}::Widgets
Boost::log Boost::log
qmapboxgl qmapboxgl
opengl32 opengl32
glm::glm GeographicLib::GeographicLib
PROJ::proj) glm::glm)

View file

@ -1,9 +1,8 @@
#include <scwx/qt/map/radar_range_layer.hpp> #include <scwx/qt/map/radar_range_layer.hpp>
#include <boost/log/trivial.hpp> #include <boost/log/trivial.hpp>
#include <geodesic.h> #include <GeographicLib/Geodesic.hpp>
#include <glm/glm.hpp> #include <glm/glm.hpp>
#include <mbgl/util/constants.hpp>
namespace scwx namespace scwx
{ {
@ -12,14 +11,12 @@ namespace qt
static const std::string logPrefix_ = "[scwx::qt::map::radar_range_layer] "; static const std::string logPrefix_ = "[scwx::qt::map::radar_range_layer] ";
static constexpr double EARTH_FLATTENING = 1 / 298.257223563;
void RadarRangeLayer::Add(std::shared_ptr<QMapboxGL> map, const QString& before) void RadarRangeLayer::Add(std::shared_ptr<QMapboxGL> map, const QString& before)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Add()"; BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Add()";
geod_geodesic g; GeographicLib::Geodesic geodesic(GeographicLib::Constants::WGS84_a(),
geod_init(&g, mbgl::util::EARTH_RADIUS_M, EARTH_FLATTENING); GeographicLib::Constants::WGS84_f());
constexpr float range = 460.0f * 1000.0f; constexpr float range = 460.0f * 1000.0f;
@ -37,14 +34,8 @@ void RadarRangeLayer::Add(std::shared_ptr<QMapboxGL> map, const QString& before)
double latitude; double latitude;
double longitude; double longitude;
geod_direct(&g, geodesic.Direct(
radar.first, radar.first, radar.second, angle, range, latitude, longitude);
radar.second,
angle,
range,
&latitude,
&longitude,
nullptr);
geometry.append({latitude, longitude}); geometry.append({latitude, longitude});