#include void opnpinc(int argc, char *argv[]); int prompt(char *str); void gparmd2(char *str, double *dv1, double *dv2); void gparmd(char *str, double *dv); void xw84t(double wlat, double wlon, double walt, double *tlat, double *tlon, double *talt); void clspin(); int main(int argc, char *argv[]) { double latd, latf, lond, lonf, wlat, wlon, walt, tlat, tlon, talt; int lat, lon; char cns, cew; opnpinc(argc, argv); printf("\nWGS84 to TOKYO Lat/Lon/Alt Conversion\n\n"); while (1) { latd = 99999.; latf = 0.; lond = 0.; lonf = 0.; walt = 0.; prompt (" WGS84 Latitude ? [deg. min.]\n"); gparmd2(" < Hit RETURN to Quit > ==> ", &latd,&latf); if (latd == 99999.) { fputc('\n',stderr); break; } gparmd2(" Longitude ? [deg. min.] ==> ", &lond,&lonf); gparmd (" Altitude ? [in meters] ==> ", &walt); wlat = latd*60.+latf; wlon = lond*60.+lonf; if (wlat < 0.) { cns = 'S'; wlat = -wlat; } else cns = 'N'; if (wlon < 0.) { cew = 'W'; wlon = -wlon; } else cew = 'E'; lat = (int)(wlat/60.); latf = wlat - lat*60.; lon = (int)(wlon/60.); lonf = wlon - lon*60.; printf(" WGS84 %3d: %6.3f\' %c %3d: %6.3f\' %c %7.1f m\n", lat, latf, cns, lon, lonf, cew, walt); xw84t(wlat, wlon, walt, &tlat, &tlon, &talt); if (tlat < 0.) { cns = 'S'; tlat = -tlat; } else cns = 'N'; if (tlon < 0.) { cew = 'W'; tlon = -tlon; } else cew = 'E'; lat = (int)(tlat/60.); latf = tlat - lat*60.; lon = (int)(tlon/60.); lonf = tlon - lon*60.; printf(" TOKYO %3d: %6.3f\' %c %3d: %6.3f\' %c %7.1f m\n\n", lat, latf, cns, lon, lonf, cew, talt); } clspin(); return(0); }