|
- #pragma once
-
- #include <cstddef>
- #include <limits>
- #include <string>
- #include <vector>
-
- namespace kraftort::geo {
-
- struct Place {
- std::string name;
- double lat = 0.0;
- double lon = 0.0;
- float radius_m = 100.0f;
- };
-
- double haversineMeters(double lat1_deg, double lon1_deg, double lat2_deg, double lon2_deg);
- double initialBearingDeg(double lat1_deg, double lon1_deg, double lat2_deg, double lon2_deg);
- double angleDeltaDeg(double from_deg, double to_deg);
- float proximityScore(float distance_m, float target_radius_m, float max_distance_m);
- int bearingToLedIndex(double bearing_deg, double heading_deg, int led_count);
-
- std::size_t findNearestPlaceIndex(
- const std::vector<Place>& places,
- double lat_deg,
- double lon_deg,
- double* out_distance_m = nullptr);
-
- } // namespace kraftort::geo
|