]> granicus.if.org Git - postgis/commitdiff
Use original vertex values where available in contructing new pointarray (references...
authorPaul Ramsey <pramsey@cleverelephant.ca>
Mon, 18 Dec 2017 23:53:53 +0000 (23:53 +0000)
committerPaul Ramsey <pramsey@cleverelephant.ca>
Mon, 18 Dec 2017 23:53:53 +0000 (23:53 +0000)
git-svn-id: http://svn.osgeo.org/postgis/branches/2.4@16163 b70326c6-7e19-0410-871a-916f4a2858ee

liblwgeom/lwgeodetic.c

index 865c0f4ea649195d6edcc123b99fffc1e0552ec5..eddca5d822ff017c40f9386f0e2ae9292d8e0be9 100644 (file)
@@ -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 */