From: Paul Ramsey Date: Mon, 18 Dec 2017 23:53:53 +0000 (+0000) Subject: Use original vertex values where available in contructing new pointarray (references... X-Git-Tag: 2.4.3rc1~22 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0a0d350990628fd12e6af5602da24a9b71b81479;p=postgis Use original vertex values where available in contructing new pointarray (references #3941) git-svn-id: http://svn.osgeo.org/postgis/branches/2.4@16163 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/liblwgeom/lwgeodetic.c b/liblwgeom/lwgeodetic.c index 865c0f4ea..eddca5d82 100644 --- a/liblwgeom/lwgeodetic.c +++ b/liblwgeom/lwgeodetic.c @@ -1545,17 +1545,17 @@ static int ptarray_segmentize_sphere_edge_recursive ( double d, double max_seg_length, /* current segment length and segment limit */ POINTARRAY *pa) /* write out results here */ { + GEOGRAPHIC_POINT g; /* Reached the terminal leaf in recursion. Add */ /* the left-most point to the pointarray here */ /* We recurse down the left side first, so outputs should */ /* end up added to the array in order this way */ if (d <= max_seg_length) { - GEOGRAPHIC_POINT g; POINT4D p; cart2geog(p1, &g); - p.x = rad2deg(g.lon); - p.y = rad2deg(g.lat); + p.x = v1->x; + p.y = v1->y; p.z = v1->z; p.m = v1->m; return ptarray_append_point(pa, &p, LW_FALSE); @@ -1571,8 +1571,10 @@ static int ptarray_segmentize_sphere_edge_recursive ( normalize(&mid); /* Calculate z/m mid-values */ - /* (ignore x/y, we get those from the 3-space calculations) */ POINT4D midv; + cart2geog(&mid, &g); + midv.x = rad2deg(g.lon); + midv.y = rad2deg(g.lat); midv.z = (v1->z + v2->z) / 2.0; midv.m = (v1->m + v2->m) / 2.0; /* Recurse on the left first */