diff options
| author | Kristian Evers <kristianevers@gmail.com> | 2020-02-07 11:53:37 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-07 11:53:37 +0100 |
| commit | ab68913e5b407861ae7d5aaeb876a64711805cb2 (patch) | |
| tree | b5faf4c6cc02578a00cb640c8a57612a20b58610 /src | |
| parent | bd6148db5f5b9a0a13f3dc2d2c35a066c15a57ed (diff) | |
| parent | 55112033a4131cc9e5a0f6b2a40cec555d87955a (diff) | |
| download | PROJ-ab68913e5b407861ae7d5aaeb876a64711805cb2.tar.gz PROJ-ab68913e5b407861ae7d5aaeb876a64711805cb2.zip | |
Merge pull request #1912 from kbevers/fix-1906
cart: Avoid discontinuity at poles in the inverse case (partial fix to #1906)
Diffstat (limited to 'src')
| -rw-r--r-- | src/conversions/cart.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/conversions/cart.cpp b/src/conversions/cart.cpp index a7817443..537fc29f 100644 --- a/src/conversions/cart.cpp +++ b/src/conversions/cart.cpp @@ -165,8 +165,9 @@ static PJ_LPZ geodetic (PJ_XYZ cart, PJ *P) { if( fabs(lpz.phi) > M_HALFPI ) { // this happen on non-sphere ellipsoid when x,y,z is very close to 0 // there is no single solution to the cart->geodetic conversion in - // that case, so arbitrarily pickup phi = 0. - lpz.phi = 0; + // that case, clamp to -90/90 deg and avoid a discontinuous boundary + // near the poles + lpz.phi = copysign(M_HALFPI, lpz.phi); } lpz.lam = atan2 (cart.y, cart.x); N = normal_radius_of_curvature (P->a, P->es, lpz.phi); |
