11 releases (7 breaking)
0.8.0 | Oct 19, 2023 |
---|---|
0.7.3 | Mar 16, 2022 |
0.7.1 | Nov 13, 2021 |
0.7.0 | Jul 10, 2021 |
0.1.0 | Aug 19, 2019 |
#290 in Algorithms
7,988 downloads per month
Used in 7 crates
45KB
1K
SLoC
geo-clipper
This crate allows to perform boolean and offset operations on polygons.
It makes use of clipper-sys which is a binding to the C++ version of Clipper.
Example
The following example shows how to compute the intersection of two polygons.
The intersection
method (as well as difference
, union
and xor
) is provided by the Clipper
trait which is implemented for some geo-types.
use geo_types::{Coord, LineString, Polygon};
use geo_clipper::Clipper;
let subject = Polygon::new(
LineString(vec![
Coord { x: 180.0, y: 200.0 },
Coord { x: 260.0, y: 200.0 },
Coord { x: 260.0, y: 150.0 },
Coord { x: 180.0, y: 150.0 },
]),
vec![LineString(vec![
Coord { x: 215.0, y: 160.0 },
Coord { x: 230.0, y: 190.0 },
Coord { x: 200.0, y: 190.0 },
])],
);
let clip = Polygon::new(
LineString(vec![
Coord { x: 190.0, y: 210.0 },
Coord { x: 240.0, y: 210.0 },
Coord { x: 240.0, y: 130.0 },
Coord { x: 190.0, y: 130.0 },
]),
vec![],
);
let result = subject.intersection(&clip, 1.0);
Dependencies
~0.8–1.2MB
~25K SLoC