logo
pub trait Area<T> where
    T: CoordNum
{ fn signed_area(&self) -> T; fn unsigned_area(&self) -> T; }
Expand description

Signed and unsigned planar area of a geometry.

Examples

use geo::polygon;
use geo::Area;

let mut polygon = polygon![
    (x: 0., y: 0.),
    (x: 5., y: 0.),
    (x: 5., y: 6.),
    (x: 0., y: 6.),
    (x: 0., y: 0.),
];

assert_eq!(polygon.signed_area(), 30.);
assert_eq!(polygon.unsigned_area(), 30.);

polygon.exterior_mut(|line_string| {
    line_string.0.reverse();
});

assert_eq!(polygon.signed_area(), -30.);
assert_eq!(polygon.unsigned_area(), 30.);

Required Methods

Implementors

Note. The implementation is a straight-forward summation of the signed areas of the individual polygons. In particular, unsigned_area is not necessarily the sum of the unsigned_area of the constituent polygons unless they are all oriented the same.

Note. The implementation handles polygons whose holes do not all have the same orientation. The sign of the output is the same as that of the exterior shell.

Because a Rect has no winding order, the area will always be positive.