Blame


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