mirror of
https://github.com/storytold/craft-libs.git
synced 2026-11-11 04:52:13 +00:00
sonarcloud.yml runs on every pull request, so a change only under vendor/linesweeper starts a workflow; it does not start pdf.yml.
linesweeper: a robust sweep-line algorithm
This rust crate implements a "robust" version of the Bentley-Ottmann sweep-line algorithm, and uses it to provide various two-dimensional geometric primitives like boolean operations on sets bounded by Bézier paths. It is currently in an early beta state.
Basic usage
To compute binary operations between curves, use the binary_op function, which
takes in two paths and computes some binary operation on them:
use kurbo::Shape;
use linesweeper::{binary_op, FillRule, BinaryOp};
let square = kurbo::Rect::from_center_size((0.0, 0.0), (2.0, 2.0)).to_path(1e-6);
let circle = kurbo::Circle::new((0.0, 0.0), 1.2).to_path(1e-6);
binary_op(&square, &circle, FillRule::EvenOdd, BinaryOp::Intersection);
Advanced usage
For more advanced usage (like custom n-ary operations) see Topology, or
the example in examples/bus.rs.