### 10 releases (6 breaking)

0.7.3 | Mar 16, 2022 |
---|---|

0.7.1 | Nov 13, 2021 |

0.7.0 | Jul 10, 2021 |

0.4.0 | Sep 26, 2020 |

0.1.0 | Aug 19, 2019 |

#**120** in Algorithms

**2,052** downloads per month

Used in **4** crates

**ISC**license

44KB

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

method (as well as `intersection`

, `difference`

and `union`

) is provided by the `xor`

trait which is implemented for some geo-types.`Clipper`

`use` `geo_types``::``{`Coordinate`,` LineString`,` Polygon`}``;`
`use` `geo_clipper``::`Clipper`;`
`let` subject `=` `Polygon``::`new`(`
LineString`(``vec!``[`
Coordinate `{` x`:` `180.``0``,` y`:` `200.``0` `}``,`
Coordinate `{` x`:` `260.``0``,` y`:` `200.``0` `}``,`
Coordinate `{` x`:` `260.``0``,` y`:` `150.``0` `}``,`
Coordinate `{` x`:` `180.``0``,` y`:` `150.``0` `}``,`
`]``)``,`
`vec!``[`LineString`(``vec!``[`
Coordinate `{` x`:` `215.``0``,` y`:` `160.``0` `}``,`
Coordinate `{` x`:` `230.``0``,` y`:` `190.``0` `}``,`
Coordinate `{` x`:` `200.``0``,` y`:` `190.``0` `}``,`
`]``)``]``,`
`)``;`
`let` clip `=` `Polygon``::`new`(`
LineString`(``vec!``[`
Coordinate `{` x`:` `190.``0``,` y`:` `210.``0` `}``,`
Coordinate `{` x`:` `240.``0``,` y`:` `210.``0` `}``,`
Coordinate `{` x`:` `240.``0``,` y`:` `130.``0` `}``,`
Coordinate `{` x`:` `190.``0``,` y`:` `130.``0` `}``,`
`]``)``,`
`vec!``[``]``,`
`)``;`
`let` result `=` subject`.``intersection``(``&`clip`,` `1.``0``)``;`

#### Dependencies

~435–640KB

~13K SLoC