Home

Awesome

offset-polygon

An implementation of the algorithm explained in Xiaorui Chen, Sara McMains: Polygon Offsetting Using Winding Numbers.

The winding number algorithm was adapted from this page, but read the Notes section.

The code itself was written by Andreas Monitzer andreas@monitzer.com.

What does it do?

It allows you to shrink and expand a polygon, like drawing an outline around it. It is also adding arcs to sharp corners with a parameter to control the number of arc points to add, since it outputs polygons only.

Dependencies

The crate uses geo-types in version 0.4 for its data types. The reason is that the author needs to integrate with geo-booleanop, but it's not really necessary for the operation itself.

Notes

There are a few magic numbers in the algorithm right now, including the winding number calculation. Initially I used the value returned by epsilon(), but it turns out that this fails for a lot of cases (some of which are included as test cases). I don't know why this is, and this might be a problem for different scales. The values right now are optimized for the scale of pixels on a normal screen.

How can I help?

Just open up a ticket and/or a pull request on this github project. Make sure you explain what you want to do and why.

License

Licensed under either of

at your option.

Dual MIT/Apache2 is strictly more permissive