Annotation of researchv10no/cmd/map/map.h, revision 1.1.1.1

1.1       root        1: #include <math.h>
                      2: #include <stdlib.h>
                      3: #include <stdio.h>
                      4: #include <string.h>
                      5: #ifdef PLOT
                      6: #include PLOT
                      7: #else
                      8: #include "iplot.h"
                      9: #endif
                     10: 
                     11: #ifndef PI
                     12: #define PI     3.1415926535897932384626433832795028841971693993751
                     13: #endif
                     14: 
                     15: #define TWOPI (2*PI)
                     16: #define RAD (PI/180)
                     17: double hypot(double, double);  /* sqrt(a*a+b*b) */
                     18: double tan(double);            /* not in K&R library */
                     19: 
                     20: #define ECC .08227185422       /* eccentricity of earth */
                     21: #define EC2 .006768657997
                     22: 
                     23: #define FUZZ .0001
                     24: #define UNUSED 0.0             /* a dummy double parameter */
                     25: 
                     26: struct coord {
                     27:        double l;       /* lat or lon in radians*/
                     28:        double s;       /* sin */
                     29:        double c;       /* cos */
                     30: };
                     31: struct place {
                     32:        struct coord nlat;
                     33:        struct coord wlon;
                     34: };
                     35: 
                     36: typedef int (*proj)(struct place *, double *, double *);
                     37: 
                     38: struct index {         /* index of known projections */
                     39:        char *name;     /* name of projection */
                     40:        proj (*prog)(double, double);
                     41:                        /* pointer to projection function */
                     42:        int npar;       /* number of params */
                     43:        int (*cut)(struct place *, struct place *, double *);
                     44:                        /* function that handles cuts--eg longitude 180 */
                     45:        int poles;      /*1 S pole is a line, 2 N pole is, 3 both*/
                     46:        int spheroid;   /* poles must be at 90 deg if nonzero */
                     47:        int (*limb)(double *lat, double *lon, double resolution);
                     48:                        /* get next place on limb */
                     49:                        /* return -1 if done, 0 at gap, else 1 */
                     50: };
                     51: 
                     52: 
                     53: proj   aitoff(void);
                     54: proj   albers(double, double);
                     55: int    Xazequalarea(struct place *, double *, double *);
                     56: proj   azequalarea(void);
                     57: int    Xazequidistant(struct place *, double *, double *);
                     58: proj   azequidistant(void);
                     59: proj   bicentric(double);
                     60: proj   bonne(double);
                     61: proj   conic(double);
                     62: proj   cylequalarea(double);
                     63: int    Xcylindrical(struct place *, double *, double *);
                     64: proj   cylindrical(void);
                     65: proj   elliptic(double);
                     66: proj   fisheye(double);
                     67: proj   gall(double);
                     68: proj   globular(void);
                     69: proj   gnomonic(void);
                     70: int    guycut(struct place *, struct place *, double *);
                     71: int    Xguyou(struct place *, double *, double *);
                     72: proj   guyou(void);
                     73: proj   harrison(double, double);
                     74: int    hexcut(struct place *, struct place *, double *);
                     75: proj   hex(void);
                     76: proj   homing(double);
                     77: int    hlimb(double*, double*, double resolution);
                     78: proj   lagrange(void);
                     79: proj   lambert(double, double);
                     80: proj   laue(void);
                     81: proj   loxodromic(double);     /* not in library */
                     82: proj   mecca(double);
                     83: int    mlimb(double*, double*, double resolution);
                     84: proj   mercator(void);
                     85: proj   mollweide(void);
                     86: proj   newyorker(double);
                     87: proj   ortelius(double, double);       /* not in library */
                     88: int    Xorthographic(struct place *place, double *x, double *y);
                     89: proj   orthographic(void);
                     90: int    olimb(double*, double*, double);
                     91: proj   perspective(double);
                     92: int    plimb(double*, double*, double resolution);
                     93: int    Xpolyconic(struct place *, double *, double *);
                     94: proj   polyconic(void);
                     95: proj   rectangular(double);
                     96: proj   simpleconic(double, double);
                     97: int    Xsinusoidal(struct place *, double *, double *);
                     98: proj   sinusoidal(void);
                     99: proj   sp_albers(double, double);
                    100: proj   sp_mercator(void);
                    101: proj   square(void);
                    102: int    Xstereographic(struct place *, double *, double *);
                    103: proj   stereographic(void);
                    104: int    Xtetra(struct place *, double *, double *);
                    105: int    tetracut(struct place *, struct place *, double *);
                    106: proj   tetra(void);
                    107: proj   trapezoidal(double, double);
                    108: proj   vandergrinten(void);
                    109: proj   wreath(double, double); /* not in library */
                    110: 
                    111: void   findxy(double, double *, double *);
                    112: void   albscale(double, double, double, double);
                    113: void   invalb(double, double, double *, double *);
                    114: 
                    115: void   cdiv(double, double, double, double, double *, double *);
                    116: void   cmul(double, double, double, double, double *, double *);
                    117: void   csq(double, double, double *, double *);
                    118: void   csqrt(double, double, double *, double *);
                    119: void   ccubrt(double, double, double *, double *);
                    120: double cubrt(double);
                    121: int    elco2(double, double, double, double, double, double *, double *);
                    122: void   cdiv2(double, double, double, double, double *, double *);
                    123: void   csqr(double, double, double *, double *);
                    124: 
                    125: void   orient(double, double, double);
                    126: void   latlon(double, double, struct place *);
                    127: void   deg2rad(double, struct coord *);
                    128: void   sincos(struct coord *);
                    129: void   normalize(struct place *);
                    130: void   invert(struct place *);
                    131: void   norm(struct place *, struct place *, struct coord *);
                    132: void   printp(struct place *);
                    133: void   copyplace(struct place *, struct place *);
                    134: 
                    135: int    picut(struct place *, struct place *, double *);
                    136: int    ckcut(struct place *, struct place *, double);
                    137: double reduce(double);
                    138: 
                    139: void   getsyms(char *);
                    140: int    putsym(struct place *, char *, double, int);
                    141: void   filerror(char *s, char *f);
                    142: void   error(char *s);
                    143: int    doproj(struct place *, int *, int *);
                    144: int    cpoint(int, int, int);
                    145: int    plotpt(struct place *, int);
                    146: int    nocut(struct place *, struct place *, double *);
                    147: 
                    148: extern int (*projection)(struct place *, double *, double *);

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.