Skip to content

Memory and Geometry Extensions

Philipp Seiwald requested to merge memory_extensions into dev-v2

Extensions for the memory and geometry module.

New Features

  • [memory]:
    • Added PoolAllocator class
      • Generic pool-allocator for user-defined classes - also supports Eigen alignment
    • Added ImplicitDaryHeap class
      • Generalization of a binary heap for arbitrary branching factors d>1 (d-ary heap)
      • Internally uses pool-allocator
      • Optimized for maximum performance when used in Dijkstra algorithm
      • Supports various optimized helper methods (finding/updating elements, pre-allocation, etc.)
    • Added DefaultInitializationAllocator adaptor
      • Adaptor for allocators to replace value-initialization with default-initialization
    • MultiVector
      • Added reserve method to allow memory allocation for the underlying std::vector
      • Added resize(std::array<size_t, N>, T) method to allow resizing with copy-construction for elements
  • [geometry]
    • Added Triangle2D and Triangle3D classes
      • Generic abstraction of a triangle in the two- and three-dimensional space
      • Contains various pre-computed auxillary parameters for accelerated distance and intersection tests
      • Provides explicit methods for point-triangle distance and (ray-)intersection tests
    • Improvements for SSVDistanceEvaluator
      • Improved point-triangle test (matching implementation of TriangleND) for speedup

Non-breaking Changes

  • [io]:
    • PNMFileData now uses DefaultInitializationAllocator for its raster representations (keeps data uninitialized on resize() which increases performance in some use cases - e.g. for deserialization of the raster)
Edited by Philipp Seiwald

Merge request reports