This library contains data structures and methods that deals with lines in 2D and 3D space.
There are 3D and 2D implementations of:
- LineString, a sequence of points, aka Polyline.
- Line, a finite two-point struct (no rays).
- Ramer–Douglas-Peucker and
- Visvalingam-Whyatt line simplification algorithms.
- Sampling of boostvoronoi parabolic arc curves.
- Rudimentary functionality to save to .obj file
There are 2D implementations of:
- LineString2 convex hull calculation (gift wrapping & Graham scan)
- Aabb axis aligned bounding box.
- Self intersection tests for line strings, or groups of lines O( n log n + i log n).
- Convex hull containment test (single threaded or multi-threaded with ryon)
- Simple affine transformation (pan, zoom)
The library is implemented for a couple of independent 2d/3d packages:nalgebra,cgmath,vecmath,mint and plain vectors. Those implementations are feature gated so you only need to import the package you really use.