mirror of
git://projects.qi-hardware.com/cae-tools.git
synced 2024-12-23 00:41:10 +02:00
53fe70950d
cameo encountered spurious aborts with the following message: terminate called after throwing an instance of 'CGAL::Precondition_exception what(): CGAL ERROR: precondition violation! Expr: is_simple_2(first, last, traits) File: /usr/include/CGAL/Polygon_2/Polygon_2_algorithms_impl.h Line: 420 These aborts come and go even if just the coordinate origin is slightly changed. Setting CGAL_POLYGON_NO_PRECONDITIONS in p2d_area_holes.cpp made them go away in some cases, but cameo could still run into an assertion violation (in CGAL). We now check all the polygons, outer boundary and holes, being sent to CGAL::create_interior_skeleton_and_offset_polygons_with_holes_2 for simplicity, and stop recursing if there is any hint of a problem. This seems to avoid trouble for now, but the issue deserves further investigation. |
||
---|---|---|
.. | ||
test | ||
cgal_helper.h | ||
Makefile | ||
p2d_area_holes.cpp | ||
p2d_area.c | ||
p2d_attrib.c | ||
p2d_contains_point.c | ||
p2d_contains_poly.c | ||
p2d_copy.c | ||
p2d_free.c | ||
p2d_gnuplot.c | ||
p2d_hsort.c | ||
p2d_hsort.h | ||
p2d_make.c | ||
p2d_offset.cpp | ||
poly2d.h | ||
README | ||
util.h | ||
v2d_intersect.c | ||
v2d_line_distance.c |
poly2d - Yet another 2D polygon library ======================================= Why do we need another 2D polygon library, if there are already CGAL, Boost, Clipper, GPC, ... ? All the above are either written in a weird language, are under a non-Free license, or simply don't provide the feature set we need here. poly2d is written in C, doesn't depend on non-standard libraries, and is licensed under the GPL (will change to LGPL). poly2d serves itself liberally from code already in cameo but provides a simpler and cleaner interface. The first objective is to provide the tools to replace the (badly broken) area filling operation in cameo. Later, poly2d could replace more parts of cameo. poly2d puts more emphasis on simplicity than on performance. Some functions expect closed polygons that don't self-intersect. For now, it doesn't matter whether polygons are clockwise or counter-clockwise. The table below shows the capabilities Open Min. vertices | Concave | | Self-intersect | | | | Y Y Y 0 p2d_contains_poly(b), p2d_copy, p2d_free, p2d_free_all, p2d_is_closed, p2d_no_intersect, p2d_reverse, p2d_vertices, p2d_write_gnuplot, p2d_write_gnuplot_all Y Y Y 1 p2d_read_gnuplot - Y Y 0 p2d_simplify - Y - 3 p2d_is_cw - Y - 3 p2d_contains_point, p2d_contains_poly (a), - Y - 3 p2d_area*, p2d_offset* Not yet implemented: - p2d_simplify (low priority - the offsetting from CGAL already covers the main use case) Not yet specified: - subtraction (do we actually need it ?) Other: - change the license from GPL to LGPL - transform CGAL's idea of outer polygons into something we can use - check for memory leaks Prerequisite: libcgal-dev