/*************************************************************** POS_TO_M.C Routines for converting latitude and longitude differences into meters. They use the first few terms in the approximations given in: American Practical Navigator, Vol II, 1975 Edition, p 5 ***************************************************************/ #include #ifndef M_PI #define M_PI 3.14159265358979323846 #endif double dlon_to_meters(double dlon, double lat) { double rlat, p; while (dlon > 180.0) dlon -= 360.0; while (dlon <= -180.0) dlon += 360.0; rlat = lat * M_PI/180; p = 111415.13 * cos(rlat) - 94.55 * cos(3*rlat); return(dlon * p); } double dlat_to_meters(double dlat, double lat) { double rlat, m; rlat = lat * M_PI/180; m = 111132.09 - 566.05 * cos(2*rlat) + 1.2 * cos(4*rlat); return(dlat * m); }