Crates.io | clipping |
lib.rs | clipping |
version | 0.1.1 |
source | src |
created_at | 2018-01-27 14:37:06.991102 |
updated_at | 2018-01-27 14:49:17.696715 |
description | Efficient clipping of arbitrary polygons |
homepage | https://gitlab.com/nyradr/clipping |
repository | https://gitlab.com/nyradr/clipping |
max_upload_size | |
id | 48531 |
size | 52,599 |
Efficient clipping of arbitrary polygons using the Greiner-Hormann algorithm. This implementation is based on this one : https://github.com/helderco/univ-polyclip
Cargo.toml :
clipping = "0.1.0"
main.rs :
extern crate clipping;
use clipping::CPolygon;
fn main() {
// two polygons
let poly_a: Vec<[f64; 2]> = vec![[40., 34.], [200., 66.], [106., 80.], [120., 175.]];
let poly_b = vec![[133., 120.], [80., 146.], [26., 106.], [40., 90.], [0., 53.], [80., 66.], [146., 0.]];
// Get the clipping polygons
let mut cp_a = CPolygon::from_vec(&poly_a);
let mut cp_b = CPolygon::from_vec(&poly_b);
// clip operation (intersection, union, difference)
let cp_ab = cp_a.intersection(&mut cp_b);
// handle the new polygons
for poly_c in cp_ab{
println!("Cliped polygon : {:?}", poly_c);
}
}