### 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 |

#**166** in Algorithms

**3,749** downloads per month

Used in **5** crates

**ISC**license

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

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``::``{`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

~1MB

~22K SLoC