Skip to content

SmartVector + SplineSplitter

Philipp Seiwald requested to merge smart_vector into dev-v2

Added SmartVector class.

New Features

  • [memory]:
    • Added SmartVector class as hybrid implementation of std::array and std::vector (uses a pre-allocated stack buffer for efficiency and a dynamically allocated heap buffer to extend the stack buffer (for flexibility)).

Non-Breaking Changes

  • [core]:
    • PlatformHelpers: fixed small bug in comment (namespace transfer from am2b to broccoli)
  • [curve]:
    • QuaternionBSplineCurve now internally uses SmartVector for evaluation (increases performance). However, the interface remains the same.
    • Added PolynomialSplineSplitter and PolynomialTrajectorySplitter classes for improved convenience

Breaking Changes

  • [core]:
    • math::faaDiBrunoTuples and math::generalLeibnizTuples now use SmartVector as output for better performance in most cases.
  • [geometry]:
    • The Polygon2D class now uses the new SmartVector for the list of vertices. Polygon2D thus is now a template class. This way we can avoid memory fragmentation through allocating many small Eigen::Vector2D elements on the heap (if we know the maximum vertex count at compile time).
    • The XML encoding of the Polygon2D class now uses the correct tag Polygon2D instead of Polygon.
Edited by Philipp Seiwald

Merge request reports