Annotation of researchv10dc/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: };
                     48: 
                     49: 
                     50: proj   aitoff(void);
                     51: proj   albers(double, double);
                     52: int    Xazequalarea(struct place *, double *, double *);
                     53: proj   azequalarea(void);
                     54: int    Xazequidistant(struct place *, double *, double *);
                     55: proj   azequidistant(void);
                     56: proj   bicentric(double);
                     57: proj   bonne(double);
                     58: proj   conic(double);
                     59: proj   cylequalarea(double);
                     60: int    Xcylindrical(struct place *, double *, double *);
                     61: proj   cylindrical(void);
                     62: proj   elliptic(double);
                     63: proj   fisheye(double);
                     64: proj   gall(double);
                     65: proj   globular(void);
                     66: proj   gnomonic(void);
                     67: int    guycut(struct place *, struct place *, double *);
                     68: int    Xguyou(struct place *, double *, double *);
                     69: proj   guyou(void);
                     70: proj   harrison(double, double);
                     71: int    hexcut(struct place *, struct place *, double *);
                     72: proj   hex(void);
                     73: proj   homing(double);
                     74: proj   lagrange(void);
                     75: proj   lambert(double, double);
                     76: proj   laue(void);
                     77: proj   loxodromic(double);     /* not in library */
                     78: proj   mecca(double);
                     79: proj   mercator(void);
                     80: proj   mollweide(void);
                     81: proj   newyorker(double);
                     82: proj   ortelius(double, double);       /* not in library */
                     83: int    Xorthographic(struct place *place, double *x, double *y);
                     84: proj   orthographic(void);
                     85: proj   perspective(double);
                     86: int    Xpolyconic(struct place *, double *, double *);
                     87: proj   polyconic(void);
                     88: proj   rectangular(double);
                     89: proj   simpleconic(double, double);
                     90: int    Xsinusoidal(struct place *, double *, double *);
                     91: proj   sinusoidal(void);
                     92: proj   sp_albers(double, double);
                     93: proj   sp_mercator(void);
                     94: proj   square(void);
                     95: int    Xstereographic(struct place *, double *, double *);
                     96: proj   stereographic(void);
                     97: int    Xtetra(struct place *, double *, double *);
                     98: int    tetracut(struct place *, struct place *, double *);
                     99: proj   tetra(void);
                    100: proj   trapezoidal(double, double);
                    101: proj   vandergrinten(void);
                    102: proj   wreath(double, double); /* not in library */
                    103: 
                    104: void   findxy(double, double *, double *);
                    105: void   albscale(double, double, double, double);
                    106: void   invalb(double, double, double *, double *);
                    107: 
                    108: void   cdiv(double, double, double, double, double *, double *);
                    109: void   cmul(double, double, double, double, double *, double *);
                    110: void   csq(double, double, double *, double *);
                    111: void   csqrt(double, double, double *, double *);
                    112: void   ccubrt(double, double, double *, double *);
                    113: double cubrt(double);
                    114: int    elco2(double, double, double, double, double, double *, double *);
                    115: void   cdiv2(double, double, double, double, double *, double *);
                    116: void   csqr(double, double, double *, double *);
                    117: 
                    118: void   orient(double, double, double);
                    119: void   latlon(double, double, struct place *);
                    120: void   deg2rad(double, struct coord *);
                    121: void   sincos(struct coord *);
                    122: void   normalize(struct place *);
                    123: void   invert(struct place *);
                    124: void   norm(struct place *, struct place *, struct coord *);
                    125: void   printp(struct place *);
                    126: void   copyplace(struct place *, struct place *);
                    127: 
                    128: int    picut(struct place *, struct place *, double *);
                    129: int    ckcut(struct place *, struct place *, double);
                    130: double reduce(double);
                    131: 
                    132: void   getsyms(char *);
                    133: int    putsym(struct place *, char *, double, int);
                    134: void   filerror(char *s, char *f);
                    135: void   error(char *s);
                    136: int    doproj(struct place *, int *, int *);
                    137: int    cpoint(int, int, int);
                    138: int    plotpt(struct place *, int);
                    139: int    nocut(struct place *, struct place *, double *);
                    140: 
                    141: 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.