Function buffer_polygon

Source
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())