mirror of
git://projects.qi-hardware.com/cae-tools.git
synced 2025-04-21 12:27:27 +03:00
poly2d/: Yet another 2D polygon library (WIP)
This commit is contained in:
54
poly2d/README
Normal file
54
poly2d/README
Normal file
@@ -0,0 +1,54 @@
|
||||
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 clockwise closed polygons that don't self-intersect.
|
||||
The table below shows the capabilities
|
||||
|
||||
Open Counter-clockwise
|
||||
| Concave Min. vertices
|
||||
| | Self-intersect
|
||||
| | | | |
|
||||
Y Y Y Y 0 p2d_contains_poly(b), p2d_free, p2d_free_all,
|
||||
p2d_is_closed, p2d_copy, p2d_reverse, p2d_vertices,
|
||||
p2d_write_gnuplog, p2d_write_gnuplot_all
|
||||
Y Y Y Y 1 p2d_read_gnuplot
|
||||
- Y Y Y 0 p2d_simplify
|
||||
- Y - Y 3 p2d_is_cw
|
||||
- Y - - 3 p2d_contains_point, p2d_contains_poly (a),
|
||||
- Y - # 3 p2d_area*, p2d_offset*
|
||||
|
||||
# CGAL uses ccw, poly2d uses cw. Need to switch.
|
||||
|
||||
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
|
||||
- change ccw to cw
|
||||
- make sure CGAL is only fed ccw ploygons and cw holes
|
||||
- transform CGAL's idea of outer polygons into something we can use
|
||||
- use more meaningful offset/overlap model for area fill
|
||||
- check for memory leaks
|
||||
- try to generate dependencies also for *.cpp
|
||||
|
||||
Prerequisite:
|
||||
libcgal-dev
|
||||
Reference in New Issue
Block a user