2 releases
0.1.1 | Apr 15, 2020 |
---|---|
0.1.0 | Apr 15, 2020 |
#712 in Graphics APIs
Used in geo-svg-io
11KB
226 lines
rust-geo-normalized
Creates a new instance of the rust geo/geo-types Polygon/Multipolygon that follows the OGC winding rules.
The rust geo and geo-types crates are not as strict as the OGC guidelines, and allow for polygons with inner and outer rings in any winding order. This trait returns a Polygon/Multipolygon where all outer rings are clockwise, and all inner rings are anti-clockwise.
Examples
// Anti-clockwise winding order for outer ring
let bad = polygon![
(x: 1.0, y: 1.0),
(x: 4.0, y: 1.0),
(x: 4.0, y: 4.0),
(x: 1.0, y: 4.0),
(x: 1.0, y: 1.0),
];
// Clockwise winding order for outer ring
let good = polygon![
(x: 1.0, y: 1.0),
(x: 1.0, y: 4.0),
(x: 4.0, y: 4.0),
(x: 4.0, y: 1.0),
(x: 1.0, y: 1.0),
];
let norm = bad.normalized();
// norm should have the same points and shape as `bad` but in the valid winding order
assert_eq!(norm, good);
Dependencies
~2MB
~38K SLoC