pub fn buffer_polygon(input_polygon: &Polygon, distance: f64) -> MultiPolygon
Expand description
This function returns the buffered (multi-)polygon of the given polygon. This function creates a miter-joint-like corners around each convex vertex.
§Arguments
input_polygon
:Polygon
to buffer.distance
: determine how distant from each edge of original polygon to each edge of the result polygon. The sign will be:+
to inflate (to add paddings, make bigger) the given polygon, and,-
to deflate (to add margins, make smaller) the given polygon.
§Example
use geo_buffer::buffer_polygon;
use geo::{Polygon, MultiPolygon, LineString};
let p1 = Polygon::new(
LineString::from(vec![(0., 0.), (1., 0.), (1., 1.), (0., 1.)]), vec![],
);
let p2: MultiPolygon = buffer_polygon(&p1, -0.2);
let expected_exterior = LineString::from(vec![(0.2, 0.2), (0.8, 0.2), (0.8, 0.8), (0.2, 0.8), (0.2, 0.2)]);
assert_eq!(&expected_exterior, p2.0[0].exterior())