crates.io Documentation Workflow Workflow dependency status license

2d and 3d polylines for cgmath

This crate 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)

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

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