lwgeom_free(out);
lwfree(str);
+ in = lwgeom_from_text("LINESTRING(10 10,0 10,0 0,10 0)");
+ out = lwgeom_desegmentize(in);
+ str = lwgeom_to_wkt(out, WKT_ISO, 8, NULL);
+ CU_ASSERT_STRING_EQUAL(str, "LINESTRING(10 10,0 10,0 0,10 0)");
+ printf("%s\n", str);
+ lwgeom_free(in);
+ lwgeom_free(out);
+ lwfree(str);
+
+ in = lwgeom_from_text("LINESTRING(0 0,10 0,10 10,0 10)");
+ out = lwgeom_desegmentize(in);
+ str = lwgeom_to_wkt(out, WKT_ISO, 8, NULL);
+ CU_ASSERT_STRING_EQUAL(str, "LINESTRING(0 0,10 0,10 10,0 10)");
+ printf("%s\n", str);
+ lwgeom_free(in);
+ lwgeom_free(out);
+ lwfree(str);
+
// See http://trac.osgeo.org/postgis/ticket/2412
in = lwgeom_from_text("LINESTRING(0 0, 1 1)");
out = lwgeom_desegmentize(in);
lw_arc_center((POINT2D*)&first, (POINT2D*)&b, (POINT2D*)&a1, (POINT2D*)¢er);
angle = lw_arc_angle((POINT2D*)&first, (POINT2D*)¢er, (POINT2D*)&b);
int p2_side = lw_segment_side((POINT2D*)&first, (POINT2D*)&a1, (POINT2D*)&b);
- if ( p2_side != -1 ) angle = -angle;
+ if ( p2_side >= 0 ) angle = -angle;
if ( angle < 0 ) angle = 2 * M_PI + angle;
num_quadrants = ( 4 * angle ) / ( 2 * M_PI );
- LWDEBUGF(4, "arc angle is %g, quandrants:%g", angle, num_quadrants);
+ LWDEBUGF(4, "arc angle (%g %g, %g %g, %g %g) is %g (side is %d), quandrants:%g", first.x, first.y, center.x, center.y, b.x, b.y, angle, p2_side, num_quadrants);
}
/* a1 is first point, b is last point */
if ( arc_edges < min_quad_edges * num_quadrants ) {