clipping

Crates.ioclipping
lib.rsclipping
version0.1.1
sourcesrc
created_at2018-01-27 14:37:06.991102
updated_at2018-01-27 14:49:17.696715
descriptionEfficient clipping of arbitrary polygons
homepagehttps://gitlab.com/nyradr/clipping
repositoryhttps://gitlab.com/nyradr/clipping
max_upload_size
id48531
size52,599
(nyradr)

documentation

README

Clipping

Efficient clipping of arbitrary polygons using the Greiner-Hormann algorithm. This implementation is based on this one : https://github.com/helderco/univ-polyclip

Usage

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);
  }
}
Commit count: 15

cargo fmt