#include #include #include "geo/GeoLocalFrame.hpp" using geopro::core::GeoLocalFrame; namespace { constexpr double kPi = 3.14159265358979323846; } // 原点投影到 (0,0)。 TEST(GeoFrame, OriginMapsToZero) { GeoLocalFrame f(22.5, 114.16); auto p = f.toLocal(22.5, 114.16); EXPECT_NEAR(p.x, 0.0, 1e-9); EXPECT_NEAR(p.y, 0.0, 1e-9); } // 东向 0.01 度经度:x>0,约 0.01*111320*cos(22.5°)≈1028m(5% 容差)。 TEST(GeoFrame, EastwardLongitudeGivesPositiveX) { GeoLocalFrame f(22.5, 114.16); auto p = f.toLocal(22.5, 114.17); const double expected = 0.01 * 111320.0 * std::cos(22.5 * kPi / 180.0); EXPECT_GT(p.x, 0.0); EXPECT_NEAR(p.x, expected, expected * 0.05); EXPECT_NEAR(p.y, 0.0, 1e-9); } // 北向 0.01 度纬度:y≈0.01*110540≈1105m(5% 容差)。 TEST(GeoFrame, NorthwardLatitudeGivesPositiveY) { GeoLocalFrame f(22.5, 114.16); auto p = f.toLocal(22.51, 114.16); const double expected = 0.01 * 110540.0; EXPECT_GT(p.y, 0.0); EXPECT_NEAR(p.y, expected, expected * 0.05); EXPECT_NEAR(p.x, 0.0, 1e-9); }