]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/map/map.h
etheriwl: don't break controller on command flush timeout
[plan9front.git] / sys / src / cmd / map / map.h
1 #pragma lib     "/sys/src/cmd/map/libmap/libmap.a$O"
2 #pragma src     "/sys/src/cmd/map/libmap"
3
4 #ifndef PI
5 #define PI      3.1415926535897932384626433832795028841971693993751
6 #endif
7
8 #define TWOPI (2*PI)
9 #define RAD (PI/180)
10
11 #define ECC .08227185422        /* eccentricity of earth */
12 #define EC2 .006768657997
13
14 #define FUZZ .0001
15 #define UNUSED 0.0              /* a dummy double parameter */
16
17 struct coord {
18         double l;       /* lat or lon in radians*/
19         double s;       /* sin */
20         double c;       /* cos */
21 };
22 struct place {
23         struct coord nlat;
24         struct coord wlon;
25 };
26
27 typedef int (*proj)(struct place *, double *, double *);
28
29 struct index {          /* index of known projections */
30         char *name;     /* name of projection */
31         proj (*prog)(double, double);
32                         /* pointer to projection function */
33         int npar;       /* number of params */
34         int (*cut)(struct place *, struct place *, double *);
35                         /* function that handles cuts--eg longitude 180 */
36         int poles;      /*1 S pole is a line, 2 N pole is, 3 both*/
37         int spheroid;   /* poles must be at 90 deg if nonzero */
38         int (*limb)(double *lat, double *lon, double resolution);
39                         /* get next place on limb */
40                         /* return -1 if done, 0 at gap, else 1 */
41 };
42
43
44 proj    aitoff(void);
45 proj    albers(double, double);
46 int     Xazequalarea(struct place *, double *, double *);
47 proj    azequalarea(void);
48 int     Xazequidistant(struct place *, double *, double *);
49 proj    azequidistant(void);
50 proj    bicentric(double);
51 proj    bonne(double);
52 proj    conic(double);
53 proj    cylequalarea(double);
54 int     Xcylindrical(struct place *, double *, double *);
55 proj    cylindrical(void);
56 proj    elliptic(double);
57 proj    fisheye(double);
58 proj    gall(double);
59 proj    gilbert(void);
60 proj    globular(void);
61 proj    gnomonic(void);
62 int     guycut(struct place *, struct place *, double *);
63 int     Xguyou(struct place *, double *, double *);
64 proj    guyou(void);
65 proj    harrison(double, double);
66 int     hexcut(struct place *, struct place *, double *);
67 proj    hex(void);
68 proj    homing(double);
69 int     hlimb(double*, double*, double resolution);
70 proj    lagrange(void);
71 proj    lambert(double, double);
72 proj    laue(void);
73 proj    lune(double, double);
74 proj    loxodromic(double);     /* not in library */
75 proj    mecca(double);
76 int     mlimb(double*, double*, double resolution);
77 proj    mercator(void);
78 proj    mollweide(void);
79 proj    newyorker(double);
80 proj    ortelius(double, double);       /* not in library */
81 int     Xorthographic(struct place *place, double *x, double *y);
82 proj    orthographic(void);
83 int     olimb(double*, double*, double);
84 proj    perspective(double);
85 int     plimb(double*, double*, double resolution);
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    cpow(double, double, double *, double *, double);
111 void    csq(double, double, double *, double *);
112 void    csqrt(double, double, double *, double *);
113 void    ccubrt(double, double, double *, double *);
114 double  cubrt(double);
115 int     elco2(double, double, double, double, double, double *, double *);
116 void    cdiv2(double, double, double, double, double *, double *);
117 void    csqr(double, double, double *, double *);
118
119 void    orient(double, double, double);
120 void    latlon(double, double, struct place *);
121 void    deg2rad(double, struct coord *);
122 void    sincos(struct coord *);
123 void    normalize(struct place *);
124 void    invert(struct place *);
125 void    norm(struct place *, struct place *, struct coord *);
126 void    printp(struct place *);
127 void    copyplace(struct place *, struct place *);
128
129 int     picut(struct place *, struct place *, double *);
130 int     ckcut(struct place *, struct place *, double);
131 double  reduce(double);
132
133 void    getsyms(char *);
134 int     putsym(struct place *, char *, double, int);
135 void    filerror(char *s, char *f);
136 void    error(char *s);
137 int     doproj(struct place *, int *, int *);
138 int     cpoint(int, int, int);
139 int     plotpt(struct place *, int);
140 int     nocut(struct place *, struct place *, double *);
141
142 extern int (*projection)(struct place *, double *, double *);