diff options
| author | Kristian Evers <kristianevers@gmail.com> | 2017-06-21 11:06:51 +0200 |
|---|---|---|
| committer | Kristian Evers <kristianevers@gmail.com> | 2017-06-21 11:06:51 +0200 |
| commit | 1e8e527c4a4066443946ebf3edb83c43cd60a6e0 (patch) | |
| tree | ecd9d059673ad3a32432cb4b9b9df01030ca3715 | |
| parent | f1e06f966edf49700bfe01dd90a82a60db27a90b (diff) | |
| download | PROJ-1e8e527c4a4066443946ebf3edb83c43cd60a6e0.tar.gz PROJ-1e8e527c4a4066443946ebf3edb83c43cd60a6e0.zip | |
Correct calculation of meridian convergence for non-conformal projections. Fixes #526.
| -rw-r--r-- | src/pj_deriv.c | 16 | ||||
| -rw-r--r-- | src/pj_factors.c | 2 |
2 files changed, 9 insertions, 9 deletions
diff --git a/src/pj_deriv.c b/src/pj_deriv.c index 6e9e3b82..1c969a9d 100644 --- a/src/pj_deriv.c +++ b/src/pj_deriv.c @@ -17,8 +17,8 @@ int pj_deriv(LP lp, double h, PJ *P, struct DERIVS *der) { der->x_l = t.x; der->y_p = t.y; - der->x_p = -t.x; - der->y_l = -t.y; + der->x_p = t.x; + der->y_l = t.y; lp.phi -= h; if (fabs(lp.phi) > M_HALFPI) return 1; @@ -29,8 +29,8 @@ int pj_deriv(LP lp, double h, PJ *P, struct DERIVS *der) { der->x_l += t.x; der->y_p -= t.y; - der->x_p += t.x; - der->y_l -= t.y; + der->x_p -= t.x; + der->y_l += t.y; lp.lam -= h; t = (*P->fwd)(lp, P); if (t.x == HUGE_VAL) @@ -38,8 +38,8 @@ int pj_deriv(LP lp, double h, PJ *P, struct DERIVS *der) { der->x_l -= t.x; der->y_p -= t.y; - der->x_p += t.x; - der->y_l += t.y; + der->x_p -= t.x; + der->y_l -= t.y; lp.phi += h; t = (*P->fwd)(lp, P); if (t.x == HUGE_VAL) @@ -47,8 +47,8 @@ int pj_deriv(LP lp, double h, PJ *P, struct DERIVS *der) { der->x_l -= t.x; der->y_p += t.y; - der->x_p -= t.x; - der->y_l += t.y; + der->x_p += t.x; + der->y_l -= t.y; der->x_l /= (h += h); der->y_p /= h; der->x_p /= h; diff --git a/src/pj_factors.c b/src/pj_factors.c index fb4a1dd4..6c1b4978 100644 --- a/src/pj_factors.c +++ b/src/pj_factors.c @@ -72,7 +72,7 @@ int pj_factors(LP lp, PJ *P, double h, struct FACTORS *fac) { /* convergence */ if (!(fac->code & IS_ANAL_CONV)) { - fac->conv = - atan2(fac->der.y_l, fac->der.x_l); + fac->conv = - atan2(fac->der.x_p, fac->der.y_p); if (fac->code & IS_ANAL_XL_YL) fac->code |= IS_ANAL_CONV; } |
