Skip to content

[v1.1.2] Performance improvements and overlapping boundaries support

Compare
Choose a tag to compare
@artem-ogre artem-ogre released this 28 Oct 12:18
· 175 commits to master since this release

This is a major release containing new features.

Performance Improvements

  • Vertex insertion order is now randomized by default. This results in better performance overall and avoids many worst-case situations.
  • Boost's RTree is replaced with a custom kd-tree implementation included into CDT sources.
    It outperforms boost::rtree and has a significantly smaller memory footprint.
  • Boost RTree and nearest-random point locators are removed.
  • Index types used by CDT are changed to 32-bit to reduce required memory. 64-bit indices can be enabled with CDT_USE_64_BIT_INDEX_TYPE.

Also see: Issue: #40 Pull-request: #45

Boost dependency is not necessary

As boost::rtree is replaced with custom kd-tree implementation, boost is mostly needed for c++98 compatibility and not for performance.
This means that most of the users will not need to enable boost.

Overlapping boundaries support

Enables handling overlaping boundaries in hole-removal algorithm.
Here is an example:
Sweden

Algorithm tracks edges that were constrained more than once in insertEdges.
New PeelLayer and CalculateTriangleDepth functions handle overlapping boundaries.
Peel layer can now return seeds for next layer and deeper layers (due to overlapping boundaries).

Also see: Issue: #42 Pull-request: #43

Other changes/fixes

  • README and doxygen docs are updated
  • #34 Do not allow flipping a fixed edge #44
  • Some fixes for broken c++98 compatibility
  • Fixes in verifyTopology and InitializeWithGrid: #47 #48
  • More fixes after 1.1.1: #51