Summer of Code - Getting Started: Difference between revisions

Line 312: Line 312:
=== Mapping or Geometry package: Implement boolean operations on polygons ===
=== Mapping or Geometry package: Implement boolean operations on polygons ===


The goal is to implement a Matlab-compatible set of boolean operations and supporting function for acting on polygons. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR.
The goal is to implement a Matlab-compatible set of boolean operations and supporting function for acting on polygons, allowing users to choose from several polygon clipping libraries. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR.
 
There is already an octave-forge package that implements a large part of this (the [http://octave.sourceforge.net/octclip/index.html octclip package]); however that does not do XOR; processing polygons with holes could be done better; and maintainability is hampered because all code comments etc. are in Spanish. Other than that, octclip performs fine.
There is already an octave-forge package that implements a large part of this (the [http://octave.sourceforge.net/octclip/index.html octclip package]); however that does not do XOR; processing polygons with holes could be done better; and maintainability is hampered because all code comments etc. are in Spanish. Other than that, octclip performs fine.


There are a variety of existing polygon libraries that implement much of the functionality and thus this would be incorporating the library into GNU Octave. The libraries with acceptable licenses are [http://www.angusj.com/delphi/clipper.php ClipperLib], [http://www.boost.org/doc/libs/1_60_0/libs/polygon/doc/index.htm Boost::Polygon], [https://github.com/boostorg/geometry Boost::Geometry], or [http://boolean.klaasholwerda.nl/bool.html kbool]. This would include implementing the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit. A partial implementation with ClipperLib and GPC can be found [https://sites.google.com/site/ulfgri/numerical/polybool here].
In the OF geometry-3.0.0 package a first implementation based on Clipperlib has been added. Another implemenation based on Boost was made during GSoC 2016 but that one needs significant additional work before it can be integrated into the geometry package.
 
There are a variety of existing polygon libraries that implement much of the functionality and thus this would be incorporating the library into GNU Octave. The libraries with acceptable licenses are [http://www.angusj.com/delphi/clipper.php ClipperLib] (now implemented), [http://www.boost.org/doc/libs/1_60_0/libs/polygon/doc/index.htm Boost::Polygon] (partly implemented), [https://github.com/boostorg/geometry Boost::Geometry], or [http://boolean.klaasholwerda.nl/bool.html kbool]. This would include implementing the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit. Another, partial, implementation with ClipperLib and GPC can be found [https://sites.google.com/site/ulfgri/numerical/polybool here].


* '''Required skills'''
* '''Required skills'''
99

edits