offset-polygon

Crates.iooffset-polygon
lib.rsoffset-polygon
version0.1.0
sourcesrc
created_at2019-07-03 00:12:24.061258
updated_at2019-07-03 00:12:24.061258
descriptionAn implementation of the polygon offsetting algorithm using winding numbers
homepage
repositoryhttps://github.com/anlumo/offset_polygon
max_upload_size
id145540
size42,183
Andreas Monitzer (anlumo)

documentation

README

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

Commit count: 6

cargo fmt