#ifndef CMAPF_H #define CMAPF_H #undef HAVE_STRCASECMP #undef F77_FUNC #include #include #define MAXYMERC (M_LN2 + M_LN10 * (DBL_DIG +1 ) ) /* * cmapf.h - header file for conformal mapping function utility. * Written 12/21/94 by * Dr. Albion Taylor * NOAA / OAR / ARL Phone: (301) 713-0295 ext 132 * Rm. 3151, 1315 East-West Highway Fax: (301) 713-0119 * Silver Spring, MD 20910 E-mail: ADTaylor@arlrisc.ssmc.noaa.gov */ typedef struct { double arad,brad,eccen,gamma,reflon, x0,y0, crotate,srotate,gridszeq, npwarn,spwarn; } maparam; #define RADPDEG (M_PI/180.) #define DEGPRAD (180./M_PI) int stlmbr(maparam * stcprm,double tnglat,double reflon) ; int stcm2p(maparam * stcprm, double x1, double y1, double xlat1, double xlong1, double x2, double y2, double xlat2, double xlong2) ; int stcm1p(maparam * stcprm, double x1, double y1, double xlat1, double xlong1, double xlatg, double xlong,double gridsz, double orient) ; void cll2xy(maparam * stcprm,double lat,double longit, double * x,double * y) ; void ccrvll(maparam * stcprm,double lat, double longit, double * gx, double * gy) ; void cxy2ll(maparam * stcprm,double x, double y, double * lat, double * longit) ; void ccrvxy(maparam * stcprm,double x, double y, double * gx, double * gy) ; void cc2gll(maparam * stcprm,double lat,double longit, double ue,double vn, double * ug,double * vg) ; void cg2cll(maparam * stcprm,double lat,double longit, double ug,double vg, double * ue,double * vn) ; void cc2gxy(maparam * stcprm,double x,double y, double ue,double vn, double * ug,double * vg) ; void cg2cxy(maparam * stcprm,double x,double y, double ug,double vg, double * ue,double * vn) ; void cw2gll(maparam * stcprm,double lat,double longit, double ue,double vn, double * ug,double * vg) ; void cg2wll(maparam * stcprm,double lat,double longit, double ug,double vg, double * ue,double * vn) ; void cw2gxy(maparam * stcprm,double x,double y, double ue,double vn, double * ug,double * vg) ; void cg2wxy(maparam * stcprm,double x,double y, double ug,double vg, double * ue,double * vn) ; double log1pabovera(double a,double b) ; double cperiodic(double value,double begin,double end) ; double eqvlat(maparam * stcprm,double lat1,double lat2) ; double cgszll(maparam * stcprm,double lat,double longit) ; double cgszxy(maparam * stcprm,double x,double y) ; void cpolll(maparam * stcprm,double lat, double longit, double * enx,double * eny, double * enz) ; void cpolxy(maparam * stcprm,double x, double y, double * enx,double * eny, double * enz) ; /*Helping Functions for mercator Computations*/ void cmr2sc(maparam * stcprm,double ymerc,double * sinlat,double * coslat) ; double cl2ymr(maparam * stcprm,double lat) ; double cymr2l(maparam * stcprm,double ymerc) ; double ymrcInvScale (maparam * stcprm,double lat) ; double ymrcInvScaleT (maparam * stcprm,double slat,double clat); typedef enum {AF,AE,AB,BE,TST} GspecType; typedef struct { char * name; GspecType t; double arg1,arg2; } GeoidData; int mkGeoid(maparam * stcprm,GspecType t,double arg1,double arg2); int useGeoid (maparam * stcprm,char * name); int infoGeoids(GeoidData ** geoids); void lsGeoid(void); #endif /* CMAPF_H */