#pragma once #include #include #include #include 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& places, double lat_deg, double lon_deg, double* out_distance_m = nullptr); } // namespace kraftort::geo