1
0
mirror of git://projects.qi-hardware.com/cae-tools.git synced 2024-12-23 00:16:27 +02:00
cae-tools/poly2d
Werner Almesberger 385bd601a6 poly2d/p2d_attrib.c (p2d_is_cw): check that the angle isn't NaN
Been had by this a little too often ...
2015-01-19 02:59:43 -03:00
..
test test/bugs: add regression tests for p2d_no_intersect and angle_3 bugs 2015-01-18 20:57:09 -03:00
cgal_helper.h poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
f2d_tri_holes.cpp poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
f2d_tri.c poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
Makefile poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
p2d_area_holes.cpp poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
p2d_area.c poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
p2d_attrib.c poly2d/p2d_attrib.c (p2d_is_cw): check that the angle isn't NaN 2015-01-19 02:59:43 -03:00
p2d_contains_point.c poly2d (p2d_contains_point): use "bool" instead of "int" 2015-01-10 21:21:29 -03:00
p2d_contains_poly.c poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
p2d_copy.c poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
p2d_free.c poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
p2d_gnuplot.c poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
p2d_hsort.c poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
p2d_hsort.h poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
p2d_make.c poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
p2d_offset.cpp poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
poly2d.h poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
README poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
util.h poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
v2d_intersect.c poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00
v2d_line_distance.c poly2d/: change license from GPLv2+ to LGPLv2.1+ 2015-01-18 20:45:44 -03:00

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:
- transform CGAL's idea of outer polygons into something we can use
- check for memory leaks

Prerequisite:
libcgal-dev