Crate linestring[][src]

Expand description

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.

Modules

Enums