** [https://www.epa.gov/water-research/epanet Official page]
* '''Mentor and co-mentor'''
: [[User:oheim|Oliver Heimlich]], [[User:Siko1056|Kai T. Ohlhus]]
=== 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, 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.
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'''
: Knowledge of C++; C; familiarity with boolean logic; polygons, windings, and geometry
: Easy to Medium.
* '''Potential mentor'''
: John Swensen
== Infrastructure ==