#include void opnpinc(int argc, char *argv[]); int premsg(char *str); void gparmi(char *str, int *iv); void gparmd2(char *str, double *dv1, double *dv2); int cvinit(int nca, double gi, double gk, double sp1, double sp2); int prompt(char *str); int cvenik(double ye, double xn, double *fi, double *fk); void clspin(); int main(int argc, char *argv[]) { int ncc=100, nc, ido, kdo; double gi, gk, sp1, sp2, xn, ye, latd, latf, lond, lonf; char cns, cew; opnpinc(argc, argv); premsg("\n Easting/Northing to Lat./Lon. [deg.:min.] Conversion\n"); gparmi("Enter coordinates number (+800 for Old-TOKYO) ==> ", &ncc); nc = ncc; if (ncc >= 800) nc -= 800; if ((060) { gi = ((nc==61)? +5400.: -5400.); gk = 0; } } else if (nc == 65) { gparmd2(" Origin Longitude ? (deg. min.) ==> ", &lond, &lonf); gi = 0.; gk = lond*60. + lonf; } else { gparmd2(" Origin Latitude ? (deg. min.) ==> ", &latd, &latf); gparmd2(" Longitude ? (deg. min.) ==> ", &lond, &lonf); gi = latd*60. + latf; gk = lond*60. + lonf; } if (gi < 0.) { cns = 'S'; latf = -gi; } else { cns = 'N'; latf = gi; } if (gk < 0.) { cew = 'W'; lonf = -gk; } else { cew = 'E'; lonf = gk; } ido = (int)(latf/60.); latf = latf - ido*60.; kdo = (int)(lonf/60.); lonf = lonf - kdo*60.; sp1 = 0.; sp2 = 0.; if (nc == 72) gparmd2(" Two std.parallel Latitudes (deg.) ==> ", &sp1,&sp2); cvinit(ncc, gi, gk, sp1*60., sp2*60.); printf("\ncxenik: nc = %d\n", ncc); printf(" Origin=(%3d: %6.3f\' %c, %3d: %6.3f\' %c)", ido, latf, cns, kdo, lonf, cew); if ((sp1 != 0.) || (sp2 != 0.)) printf(" SP=(%6.2f,%6.2f)", sp1, sp2); printf("\n\n"); while (1) { ye = 99999.; xn = 0.; prompt(" Easting (ye) and Northing (xn) ? [in km]\n"); gparmd2(" < Hit RETURN to Quit > ==> ", &ye,&xn); if (ye == 99999.) { fputc('\n',stderr); break; } cvenik(ye, xn, &latf, &lonf); if (latf < 0.) { cns = 'S'; latf = -latf; } else cns = 'N'; if (lonf < 0.) { cew = 'W'; lonf = -lonf; } else cew = 'E'; ido = (int)(latf/60.); latf = latf - ido*60.; kdo = (int)(lonf/60.); lonf = lonf - kdo*60.; printf(" ye =%9.3f xn =%9.3f :", ye, xn); printf(" %3d: %6.3f\' %c", ido, latf, cns); printf(" %3d: %6.3f\' %c\n\n", kdo, lonf, cew); } clspin(); return(0); }