aboutsummaryrefslogtreecommitdiff
path: root/src/projections/aea.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/projections/aea.cpp')
-rw-r--r--src/projections/aea.cpp36
1 files changed, 22 insertions, 14 deletions
diff --git a/src/projections/aea.cpp b/src/projections/aea.cpp
index c9d24245..6ffb4fd6 100644
--- a/src/projections/aea.cpp
+++ b/src/projections/aea.cpp
@@ -111,7 +111,8 @@ static PJ_XY aea_e_forward (PJ_LP lp, PJ *P) { /* Ellipsoid/spheroid, forward
return xy;
}
Q->rho = Q->dd * sqrt(Q->rho);
- xy.x = Q->rho * sin( lp.lam *= Q->n );
+ lp.lam *= Q->n;
+ xy.x = Q->rho * sin( lp.lam );
xy.y = Q->rho0 - Q->rho * cos(lp.lam);
return xy;
}
@@ -120,7 +121,9 @@ static PJ_XY aea_e_forward (PJ_LP lp, PJ *P) { /* Ellipsoid/spheroid, forward
static PJ_LP aea_e_inverse (PJ_XY xy, PJ *P) { /* Ellipsoid/spheroid, inverse */
PJ_LP lp = {0.0,0.0};
struct pj_opaque *Q = static_cast<struct pj_opaque*>(P->opaque);
- if( (Q->rho = hypot(xy.x, xy.y = Q->rho0 - xy.y)) != 0.0 ) {
+ xy.y = Q->rho0 - xy.y;
+ Q->rho = hypot(xy.x, xy.y);
+ if( Q->rho != 0.0 ) {
if (Q->n < 0.) {
Q->rho = -Q->rho;
xy.x = -xy.x;
@@ -134,16 +137,20 @@ static PJ_LP aea_e_inverse (PJ_XY xy, PJ *P) { /* Ellipsoid/spheroid, inverse
proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION);
return lp;
}
- if ((lp.phi = phi1_(lp.phi, P->e, P->one_es)) == HUGE_VAL) {
+ lp.phi = phi1_(lp.phi, P->e, P->one_es);
+ if (lp.phi == HUGE_VAL) {
proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION);
return lp;
}
} else
lp.phi = lp.phi < 0. ? -M_HALFPI : M_HALFPI;
- } else if (fabs(lp.phi = (Q->c - lp.phi * lp.phi) / Q->n2) <= 1.)
- lp.phi = asin(lp.phi);
- else
- lp.phi = lp.phi < 0. ? -M_HALFPI : M_HALFPI;
+ } else {
+ lp.phi = (Q->c - lp.phi * lp.phi) / Q->n2;
+ if (fabs(lp.phi) <= 1.)
+ lp.phi = asin(lp.phi);
+ else
+ lp.phi = lp.phi < 0. ? -M_HALFPI : M_HALFPI;
+ }
lp.lam = atan2(xy.x, xy.y) / Q->n;
} else {
lp.lam = 0.;
@@ -155,8 +162,6 @@ static PJ_LP aea_e_inverse (PJ_XY xy, PJ *P) { /* Ellipsoid/spheroid, inverse
static PJ *setup(PJ *P) {
- double cosphi, sinphi;
- int secant;
struct pj_opaque *Q = static_cast<struct pj_opaque*>(P->opaque);
P->inv = aea_e_inverse;
@@ -166,13 +171,16 @@ static PJ *setup(PJ *P) {
return destructor(P, PJD_ERR_LAT_LARGER_THAN_90);
if (fabs(Q->phi1 + Q->phi2) < EPS10)
return destructor(P, PJD_ERR_CONIC_LAT_EQUAL);
- Q->n = sinphi = sin(Q->phi1);
- cosphi = cos(Q->phi1);
- secant = fabs(Q->phi1 - Q->phi2) >= EPS10;
- if( (Q->ellips = (P->es > 0.))) {
+ double sinphi = sin(Q->phi1);
+ Q->n = sinphi;
+ double cosphi = cos(Q->phi1);
+ const int secant = fabs(Q->phi1 - Q->phi2) >= EPS10;
+ Q->ellips = (P->es > 0.);
+ if( Q->ellips ) {
double ml1, m1;
- if (!(Q->en = pj_enfn(P->es)))
+ Q->en = pj_enfn(P->es);
+ if (Q->en == nullptr)
return destructor(P, 0);
m1 = pj_msfn(sinphi, cosphi, P->es);
ml1 = pj_qsfn(sinphi, P->e, P->one_es);