crates.io Documentation Workflow dependency status license

Lackadaisical 2d and 3d polylines for cgmath

Data structures and methods for polylines/segments 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 * Simple affine transformation (pan, zoom)

If you want to use this library in your cgmath project you add this to your Cargo.toml: cargo linestring = {version="0.8"}

Rust toolchains

This crate uses #![feature(map_first_last)] if compiled by +nightly. This is functionality is only emulated when run on +stable.

Demo GUI

Run the line simplification example with : fish cargo run --example fltk_gui

Todo