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