diff options
Diffstat (limited to 'src/projections/sts.cpp')
| -rw-r--r-- | src/projections/sts.cpp | 65 |
1 files changed, 32 insertions, 33 deletions
diff --git a/src/projections/sts.cpp b/src/projections/sts.cpp index 4d682a53..cbc36b7d 100644 --- a/src/projections/sts.cpp +++ b/src/projections/sts.cpp @@ -23,49 +23,48 @@ struct pj_opaque { static PJ_XY sts_s_forward (PJ_LP lp, PJ *P) { /* Spheroidal, forward */ PJ_XY xy = {0.0,0.0}; struct pj_opaque *Q = static_cast<struct pj_opaque*>(P->opaque); - double c; - - xy.x = Q->C_x * lp.lam * cos(lp.phi); - xy.y = Q->C_y; - lp.phi *= Q->C_p; - c = cos(lp.phi); - if (Q->tan_mode) { - xy.x *= c * c; - xy.y *= tan (lp.phi); - } else { - xy.x /= c; - xy.y *= sin (lp.phi); - } - return xy; + + xy.x = Q->C_x * lp.lam * cos(lp.phi); + xy.y = Q->C_y; + lp.phi *= Q->C_p; + const double c = cos(lp.phi); + if (Q->tan_mode) { + xy.x *= c * c; + xy.y *= tan (lp.phi); + } else { + xy.x /= c; + xy.y *= sin (lp.phi); + } + return xy; } static PJ_LP sts_s_inverse (PJ_XY xy, PJ *P) { /* Spheroidal, inverse */ PJ_LP lp = {0.0,0.0}; struct pj_opaque *Q = static_cast<struct pj_opaque*>(P->opaque); - double c; - - xy.y /= Q->C_y; - c = cos (lp.phi = Q->tan_mode ? atan (xy.y) : aasin (P->ctx, xy.y)); - lp.phi /= Q->C_p; - lp.lam = xy.x / (Q->C_x * cos(lp.phi)); - if (Q->tan_mode) - lp.lam /= c * c; - else - lp.lam *= c; - return lp; + + xy.y /= Q->C_y; + lp.phi = Q->tan_mode ? atan (xy.y) : aasin (P->ctx, xy.y); + const double c = cos (lp.phi); + lp.phi /= Q->C_p; + lp.lam = xy.x / (Q->C_x * cos(lp.phi)); + if (Q->tan_mode) + lp.lam /= c * c; + else + lp.lam *= c; + return lp; } static PJ *setup(PJ *P, double p, double q, int mode) { - P->es = 0.; - P->inv = sts_s_inverse; - P->fwd = sts_s_forward; - static_cast<struct pj_opaque*>(P->opaque)->C_x = q / p; - static_cast<struct pj_opaque*>(P->opaque)->C_y = p; - static_cast<struct pj_opaque*>(P->opaque)->C_p = 1/ q; - static_cast<struct pj_opaque*>(P->opaque)->tan_mode = mode; - return P; + P->es = 0.; + P->inv = sts_s_inverse; + P->fwd = sts_s_forward; + static_cast<struct pj_opaque*>(P->opaque)->C_x = q / p; + static_cast<struct pj_opaque*>(P->opaque)->C_y = p; + static_cast<struct pj_opaque*>(P->opaque)->C_p = 1/ q; + static_cast<struct pj_opaque*>(P->opaque)->tan_mode = mode; + return P; } |
