1
/*---------------------------------------------------------------------------------
2
| Copyright (C) 1999 Emergent IT Inc. and Raytheon Systems Company |
3
| Permission to use, modify, and distribute this software and its documentation |
4
| for any purpose without fee is hereby granted, provided that the above |
5
| copyright notice appear in all copies and that both that copyright notice and |
6
| this permission notice appear in supporting documentation. |
12
| This file contains function prototypes that are specific to the GCTP |
14
| Alex Muslimov / Emergent Information Tecnologies, Inc. |
16
| 14-May-01 AM Initial version |
18
----------------------------------------------------------------------------------
21
#ifndef HE5_GctpFunc_h
22
#define HE5_GctpFunc_h
24
/*****************************************************************
26
*****************************************************************/
28
int stplnfor(double lon, double lat, double *x, double *y);
29
int stplninv(double x, double y, double *lon, double *lat);
30
int stplnforint(long zone, long sphere, char *fn27, char *fn83);
31
int stplninvint(long zone, long sphere, char *fn27, char *fn83);
32
int alberfor(double lon, double lat, double *x, double *y);
33
int alberinv(double x, double y, double *lon, double *lat);
34
int alberforint(double r_maj, double r_min, double lat1, double lat2,
35
double lon0, double lat0, double false_east,
37
int alberinvint(double r_maj, double r_min, double lat1, double lat2,
38
double lon0, double lat0, double false_east,
40
int lamccfor(double lon, double lat, double *x, double *y);
41
int lamccinv(double x, double y, double *lon, double *lat);
42
int lamccforint(double r_maj, double r_min, double lat1, double lat2,
43
double c_lon, double c_lat, double false_east,
45
int lamccinvint(double r_maj, double r_min, double lat1, double lat2,
46
double c_lon, double c_lat, double false_east,
48
int merfor(double lon, double lat, double *x, double *y);
49
int merinv(double x, double y, double *lon, double *lat);
50
int merforint(double r_maj, double r_min, double center_lon,
51
double center_lat, double false_east, double false_north);
52
int merinvint(double r_maj, double r_min, double center_lon,
53
double center_lat, double false_east, double false_north);
54
int psfor(double lon, double lat, double *x, double *y);
55
int psinv(double x, double y, double *lon, double *lat);
56
int psforint(double r_maj, double r_min, double c_lon, double c_lat,
57
double false_east, double false_north);
58
int psinvint(double r_maj, double r_min, double c_lon, double c_lat,
59
double false_east, double false_north);
60
int polyfor(double lon, double lat, double *x, double *y);
61
int polyinv(double x, double y, double *lon, double *lat);
62
int polyforint(double r_maj, double r_min, double center_lon,
63
double center_lat, double false_east, double false_north);
64
int polyinvint(double r_maj, double r_min, double center_lon,
65
double center_lat, double false_east, double false_north);
66
int eqconfor(double lon, double lat, double *x, double *y);
67
int eqconinv(double x, double y, double *lon, double *lat);
68
int eqconforint(double r_maj, double r_min, double lat1, double lat2,
69
double center_lon, double center_lat, double false_east,
70
double false_north, long mode);
71
int eqconinvint(double r_maj, double r_min, double lat1, double lat2,
72
double center_lon, double center_lat, double false_east,
73
double false_north, long mode);
74
int tmfor(double lon, double lat, double *x, double *y);
75
int tminv(double x, double y, double *lon, double *lat);
76
int tmforint(double r_maj, double r_min, double scale_fact,
77
double center_lon, double center_lat, double false_east,
79
int tminvint(double r_maj, double r_min, double scale_fact,
80
double center_lon, double center_lat, double false_east,
82
int sterfor(double lon, double lat, double *x, double *y);
83
int sterinv(double x, double y, double *lon, double *lat);
84
int sterforint(double r_maj, double center_lon, double center_lat,
85
double false_east, double false_north);
86
int sterinvint(double r_maj, double center_lon, double center_lat,
87
double false_east, double false_north);
88
int lamazfor(double lon, double lat, double *x, double *y);
89
int lamazinv(double x, double y, double *lon, double *lat);
90
int lamazforint(double r, double center_long, double center_lat,
91
double false_east, double false_north);
92
int lamazinvint(double r, double center_long, double center_lat,
93
double false_east, double false_north);
94
int azimfor(double lon, double lat, double *x, double *y);
95
int aziminv(double x, double y, double *lon, double *lat);
96
int azimforint(double r_maj, double center_lon, double center_lat,
97
double false_east, double false_north);
98
int aziminvint(double r_maj, double center_lon, double center_lat,
99
double false_east, double false_north);
100
int gnomfor(double lon, double lat, double *x, double *y);
101
int gnominv(double x, double y, double *lon, double *lat);
102
int gnomforint(double r, double center_long, double center_lat,
103
double false_east, double false_north);
104
int gnominvint(double r, double center_long, double center_lat,
105
double false_east, double false_north);
106
int orthfor(double lon, double lat, double *x, double *y);
107
int orthinv(double x, double y, double *lon, double *lat);
108
int orthforint(double r_maj, double center_lon, double center_lat,
109
double false_east, double false_north);
110
int orthinvint(double r_maj, double center_lon, double center_lat,
111
double false_east, double false_north);
112
int gvnspfor(double lon, double lat, double *x, double *y);
113
int gvnspinv(double x, double y, double *lon, double *lat);
114
int gvnspforint(double r, double h, double center_long, double center_lat,
115
double false_east, double false_north);
116
int gvnspinvint(double r, double h, double center_long, double center_lat,
117
double false_east, double false_north);
118
int sinfor(double lon, double lat, double *x, double *y);
119
int sininv(double x, double y, double *lon, double *lat);
120
int sinforint(double r, double center_long, double false_east,
122
int sininvint(double r, double center_long, double false_east,
124
int equifor(double lon, double lat, double *x, double *y);
125
int equiinv(double x, double y, double *lon, double *lat);
126
int equiforint(double r_maj, double center_lon, double lat1,
127
double false_east, double false_north);
128
int equiinvint(double r_maj, double center_lon, double lat1,
129
double false_east, double false_north);
130
int millfor(double lon, double lat, double *x, double *y);
131
int millinv(double x, double y, double *lon, double *lat);
132
int millforint(double r, double center_long, double false_east,
134
int millinvint(double r, double center_long, double false_east,
136
int vandgfor(double lon, double lat, double *x, double *y);
137
int vandginv(double x, double y, double *lon, double *lat);
138
int vandgforint(double r, double center_long, double false_east,
140
int vandginvint(double r, double center_long, double false_east,
142
int omerfor(double lon, double lat, double *x, double *y);
143
int omerinv(double x, double y, double *lon, double *lat);
144
int omerforint(double r_maj, double r_min, double scale_fact,
145
double azimuth, double lon_orig, double lat_orig,
146
double false_east, double false_north, double lon1,
147
double lat1, double lon2, double lat2, long mode);
148
int omerinvint(double r_maj, double r_min, double scale_fact,
149
double azimuth, double lon_orig, double lat_orig,
150
double false_east, double false_north, double lon1,
151
double lat1, double lon2, double lat2, long mode);
152
int somfor(double lon, double lat, double *x, double *y);
153
int sominv(double x, double y, double *lon, double *lat);
154
int somforint(double r_major, double r_minor, long satnum, long path,
155
double alf_in, double lon, double false_east,
156
double false_north, double time, long start1, long flag,
158
int sominvint(double r_major, double r_minor, long satnum, long path,
159
double alf_in, double lon, double false_east,
160
double false_north, double time, long start1, long flag,
162
int hamfor(double lon, double lat, double *x, double *y);
163
int haminv(double x, double y, double *lon, double *lat);
164
int hamforint(double r, double center_long, double false_east,
166
int haminvint(double r, double center_long, double false_east,
168
int robfor(double lon, double lat, double *x, double *y);
169
int robinv(double x, double y, double *lon, double *lat);
170
int robforint(double r, double center_long, double false_east,
172
int robinvint(double r, double center_long, double false_east,
174
int goodfor(double lon, double lat, double *x, double *y);
175
int goodinv(double x, double y, double *lon, double *lat);
176
int goodforint(double r);
177
int goodinvint(double r);
178
int molwfor(double lon, double lat, double *x, double *y);
179
int molwinv(double x, double y, double *lon, double *lat);
180
int molwforint(double r, double center_long, double false_east,
182
int molwinvint(double r, double center_long, double false_east,
184
int imolwfor(double lon, double lat, double *x, double *y);
185
int imolwinv(double x, double y, double *lon, double *lat);
186
int imolwforint(double r);
187
int imolwinvint(double r);
188
int alconfor(double lon, double lat, double *x, double *y);
189
int alconinv(double x, double y, double *lon, double *lat);
190
int alconforint(double r_maj, double r_min, double false_east,
192
int alconinvint(double r_maj, double r_min, double false_east,
194
int wivfor(double lon, double lat, double *x, double *y);
195
int wivinv(double x, double y, double *lon, double *lat);
196
int wivforint(double r, double center_long, double false_east,
198
int wivinvint(double r, double center_long, double false_east,
200
int wviifor(double lon, double lat, double *x, double *y);
201
int wviiinv(double x, double y, double *lon, double *lat);
202
int wviiforint(double r, double center_long, double false_east,
204
int wviiinvint(double r, double center_long, double false_east,
206
int obleqfor(double lon, double lat, double *x, double *y);
207
int obleqinv(double x, double y, double *lon, double *lat);
208
int obleqforint(double r, double center_long, double center_lat,
209
double shape_m, double shape_n, double angle,
210
double false_east, double false_north);
211
int obleqinvint(double r, double center_long, double center_lat,
212
double shape_m, double shape_n, double angle,
213
double false_east, double false_north);
214
int isinusfor(double lon, double lat, double *x, double *y);
215
int isinusinv(double x, double y, double *lon, double *lat);
216
long isinusforinit(double sphere, double lon_cen_mer, double false_east,
217
double false_north, double dzone, double djustify);
218
long isinusinvinit(double sphere, double lon_cen_mer, double false_east,
219
double false_north, double dzone, double djustify);
220
int utmfor(double lon, double lat, double *x, double *y);
221
int utminv(double x, double y, double *lon, double *lat);
222
int utmforint(double r_maj, double r_min, double scale_fact, long zone);
223
int utminvint(double r_maj, double r_min, double scale_fact, long zone);
224
long calc_utm_zone(double lon);
225
int bceaforint(double r_maj, double center_lon, double center_lat,
226
double false_east, double false_north);
227
int bceafor(double lon, double lat, double *x, double *y);
228
int bceainvint(double r_maj, double center_lon, double center_lat,
229
double false_east, double false_north);
230
int bceainv(double x, double y, double *lon, double *lat);
231
void p_error(char *what, char *where);
232
void ptitle(char *A);
233
void tsincos(double val, double *sin_val, double *cos_val);
234
double msfnz(double eccent, double sinphi, double cosphi);
235
double qsfnz(double eccent, double sinphi, double cosphi);
236
double tsfnz(double eccent, double phi, double sinphi);
237
void radius2(double A, double B);
238
void radius(double A);
239
void stanparl(double A, double B);
240
void cenlonmer(double A);
241
void cenlon(double A);
242
void cenlat(double A);
243
void origin(double A);
244
void offsetp(double A, double B);
245
double adjust_lon(double x);
246
double phi1z(double eccent, double qs, long *flag);
247
double phi2z(double eccent, double ts, long *flag);
248
double phi3z(double ml, double e0, double e1, double e2,
249
double e3, long *flag);
250
double phi4z(double eccent, double e0, double e1, double e2,
251
double e3, double a, double b, double *c, double *phi);
252
double asinz(double con);
254
double e0fn(double x);
255
double e1fn(double x);
256
double e2fn(double x);
257
double e3fn(double x);
258
double e4fn(double x);
259
double mlfn(double e0, double e1, double e2, double e3, double phi);
260
double paksz(double ang, long *iflg);
261
double pakcz(double pak);
262
void stparl1(double A);
263
void genrpt(double A, char *S);
264
void genrpt_long(long A, char *S);
268
void for_init(int a, int b, double c[], int d, char *str1, char *str2, int *e, int (**func)(double, double, double *, double *));
270
void inv_init(int a,int b,double *c,int d,char *str1,char *str2,int *e,int (**func)(double, double, double*, double*));
272
void for_init(long a, long b, double c[], long d, char *str1, char *str2, long *e, long (**func)(double, double, double *, double *));
274
void inv_init(long a,long b,double *c,long d,char *str1,char *str2,long *e,long (**func)(double, double, double*, double*));