11个版本 (7个破坏性版本)
0.8.0 | 2023年10月19日 |
---|---|
0.7.3 | 2022年3月16日 |
0.7.1 | 2021年11月13日 |
0.7.0 | 2021年7月10日 |
0.1.0 | 2019年8月19日 |
#215 在 算法
5,713 每月下载量
在 7 crates 中使用
45KB
1K SLoC
geo-clipper
此crate允许对多边形执行布尔和偏移操作。
它使用clipper-sys,这是Clipper C++版本的绑定。
示例
以下示例展示了如何计算两个多边形的交集。提供了intersection
方法(以及difference
、union
和xor
)由Clipper
trait提供,该trait实现了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);
依赖项
~1MB
~23K SLoC