#include <iostream>
#include <cmath>
/*
Convert latitude/longitude differences (in degrees) into distances (in meters).
Explanation:
- The Earth is approximately spherical, so we can convert degrees → radians
and multiply by Earth's radius to get arc lengths.
- Latitude degrees always correspond to the same distance.
- Longitude degrees shrink as you move toward the poles, so we multiply by cos(latitude).
Formula:
meters_lat = deg_lat * (π/180) * R
meters_lon = deg_lon * (π/180) * R * cos(lat_in_radians)
Where:
R = 6378137 meters (WGS‑84 Earth radius)
*/
/* Convert degrees to radians */
double degToRad(double deg) {
return deg * M_PI / 180.0;
}
/* Convert latitude difference (degrees) to meters */
double latDegToMeters(double latDeg) {
constexpr double R = 6378137.0; // WGS‑84 Earth radius
return degToRad(latDeg) * R;
}
/* Convert longitude difference (degrees) to meters, requires latitude */
double lonDegToMeters(double lonDeg, double latitudeDeg) {
constexpr double R = 6378137.0;
double latRad = degToRad(latitudeDeg);
return degToRad(lonDeg) * R * std::cos(latRad);
}
int main() {
// Example input: difference in degrees and reference latitude
double latDeg = 0.01; // 0.01° latitude difference
double lonDeg = 0.01; // 0.01° longitude difference
double latitude = 32.0; // Example latitude
double latMeters = latDegToMeters(latDeg);
double lonMeters = lonDegToMeters(lonDeg, latitude);
std::cout << "Latitude difference in meters: " << latMeters << "\n";
std::cout << "Longitude difference in meters: " << lonMeters << "\n";
}
/*
run:
Latitude difference in meters: 1113.19
Longitude difference in meters: 944.043
*/