sixit/geometry provides geometrical primitives and algorithms (both 2D and 3D), with support for cross-platform deterministic from sixit/dmath.
We are currently at version 0.0.1, and we will NOT commit to APIs being stable at least until v0.1.0...
- 2D geometry primitives, with not-so-trivial classes and algos including:
- curve2 - curves incl. Bezier segments
- incl. things which are important for pathfinding - finding the shortest curve2 given boundary conditions and other restrictions (such as minimum radius).
- incl. rendering of SVG-like primitives (proper anti-aliasing and optimizations pending)
- 2D polygon math - OR-ing, ADD-ing, XOR-ing
- TBD
- curve2 - curves incl. Bezier segments
- 3D geometry primitives, with not-so-trivial classes and algos including:
- finding the best plane to approximate N>3 3D points best (SVD-based)
- TBD
ALL the classes and algos in sixit/geometry are templatized and support ALL the fp classes provided by sixit/dmath.
Our geometry lib uses sixit::units::physical_dimension all over the place, and is therefore dimensional safe. In other words, adding meters to square meters, or meters to radians is not possible (sigh of relief).
- oh, and yes - cross-product of two linear vectors has magnitude of square (hey, it is a product to start with).
In our speak, "platform" = "CPU+Compiler+OS". Currently, we're supporting {x64|ARM64|RISC-V64|WASM32}, {Clang|MSVC|GCC}, and {Android|iOS|Linux|MacOS|Windows|WASM}. For details, please refer to Supported platforms for sixit C++ Libs.
Dependencies:
Install: just put all sixit libs under the same sixit folder.
Building: sixit/geometry is a HEADER-ONLY LIB, no build is really necessary.
- code cleanup
- fixing commented-out tests, and adding more tests (incl. exhaustive ones)
- replacing numerically-unstable algorithms wherever feasible.