Skip to content

A Rust crate for offsetting (shrinking/expanding) polygons.

Notifications You must be signed in to change notification settings

JonathanPlasse/offset_polygon

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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 [email protected].

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

About

A Rust crate for offsetting (shrinking/expanding) polygons.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%