Go to the documentation of this file.
63 static void print_info
65 const TRANSFORMATION *trans
73 "Scale Factor at C. Meridian: ");
76 if (cache_ptr->
mode == 0)
80 "Longitude of First Point: ");
82 "Latitude of First Point: ");
84 "Longitude of Second Point: ");
86 "Latitude of Second Point: ");
92 "Azimuth of Central Line: ");
109 static int common_init
111 TRANSFORMATION *trans
138 const GCTP_PROJECTION *proj = &trans->proj;
140 int spheroid = proj->spheroid;
150 "from DMS to degrees: %f", proj->parameters[5]);
155 if (proj->parameters[12] != 0)
165 "8 from DMS to degrees: %f", proj->parameters[8]);
173 "9 from DMS to degrees: %f", proj->parameters[9]);
181 "10 from DMS to degrees: %f", proj->parameters[10]);
189 "11 from DMS to degrees: %f", proj->parameters[11]);
202 "parameter 3 from DMS to degrees: %f", proj->parameters[3]);
210 "parameter 4 from DMS to degrees: %f", proj->parameters[4]);
228 trans->cache =
cache;
249 com = sqrt(1.0 -
cache->es);
251 / (1.0 -
cache->es));
278 g = .5 * (
f - 1.0/
f);
313 l = pow(ts2,
cache->bl);
315 g = .5 * (
f - 1.0/
f);
317 p = (l -
h) / (l +
h);
327 gama = atan(sin(
cache->bl * dlon) /
g);
371 trans->print_info = print_info;
385 static int inverse_transform
387 const TRANSFORMATION *trans,
398 double vs,us,
q,
s,ts1;
405 us = us + cache_ptr->
u;
406 q = exp(-cache_ptr->
bl * vs / cache_ptr->
al);
407 s = .5 * (
q - 1.0/
q);
408 t = .5 * (
q + 1.0/
q);
409 vl = sin(cache_ptr->
bl * us / cache_ptr->
al);
421 con = 1.0 / cache_ptr->
bl;
422 ts1 = pow((cache_ptr->
el / sqrt((1.0 + ul) / (1.0 - ul))), con);
425 con = cos(cache_ptr->
bl * us /cache_ptr->
al);
427 * cache_ptr->
singam), con) / cache_ptr->
bl;
443 static int forward_transform
445 const TRANSFORMATION *trans,
464 vl = sin(cache_ptr->
bl * dlon);
468 q = cache_ptr->
el / (pow(ts1, cache_ptr->
bl));
469 s = .5 * (
q - 1.0 /
q);
470 t = .5 * (
q + 1.0/
q);
472 con = cos(cache_ptr->
bl * dlon);
473 if (
fabs(con) < .0000001)
475 us = cache_ptr->
al * dlon;
479 us = cache_ptr->
al * atan((
s * cache_ptr->
cosgam + vl
480 * cache_ptr->
singam) / con)/cache_ptr->
bl;
482 us = us +
PI * cache_ptr->
al / cache_ptr->
bl;
491 us = cache_ptr->
al *
lat / cache_ptr->
bl;
498 vs = .5 * cache_ptr->
al * log((1.0 - ul)/(1.0 + ul)) / cache_ptr->
bl;
499 us = us - cache_ptr->
u;
501 + us * cache_ptr->
sinaz;
503 - vs * cache_ptr->
sinaz;
520 TRANSFORMATION *trans
527 "Error initializing oblique mercator inverse projection");
531 trans->transform = inverse_transform;
547 TRANSFORMATION *trans
554 "Error initializing oblique mercator forward projection");
558 trans->transform = forward_transform;
void gctp_print_title(const char *proj_name)
void gctp_print_cenlon(double A)
README for MOD_PR02AQUA(AQUA) Version to set to For disabling creating and output data sets when in night mode
#define GCTP_PRINT_ERROR(format,...)
double adjust_lon(double x)
double precision function f(R1)
def cache(filename, recache=False)
int gctp_calc_phi2(double eccent, double ts, double *phi2)
int gctp_om_forward_init(TRANSFORMATION *trans)
double gctp_calc_small_t(double eccent, double phi, double sinphi)
void gctp_print_offsetp(double A, double B)
int gctp_dms2degrees(double angle, double *degrees)
void gctp_print_genrpt(double A, const char *S)
#define gctp_get_spheroid
int gctp_om_inverse_init(TRANSFORMATION *trans)
void gctp_print_radius2(double radius1, double radius2)
void gctp_print_cenlat(double A)