From d209e4ab62e9ab6f1c3825acd518bec421aebf12 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 15 Sep 2021 06:41:23 +0200 Subject: Inverse ellipsoidal orthographic projection (oblique case): fix convergence at pole --- src/projections/ortho.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/projections') diff --git a/src/projections/ortho.cpp b/src/projections/ortho.cpp index d2d113ef..c334f398 100644 --- a/src/projections/ortho.cpp +++ b/src/projections/ortho.cpp @@ -261,8 +261,16 @@ static PJ_LP ortho_e_inverse (PJ_XY xy, PJ *P) { /* Ellipsoidal, inver const double dphi = (J22 * dx - J12 * dy) / D; const double dlam = (-J21 * dx + J11 * dy) / D; lp.phi += dphi; - if( lp.phi > M_PI_2) lp.phi = M_PI_2; - else if( lp.phi < -M_PI_2) lp.phi = -M_PI_2; + if( lp.phi > M_PI_2) + { + lp.phi = M_PI_2 - (M_PI_2 - lp.phi); + lp.lam = adjlon(lp.lam + 180); + } + else if( lp.phi < -M_PI_2) + { + lp.phi = -M_PI_2 + (-M_PI_2 - lp.phi); + lp.lam = adjlon(lp.lam + 180); + } lp.lam += dlam; if( fabs(dphi) < 1e-12 && fabs(dlam) < 1e-12 ) { -- cgit v1.2.3