Trait libreda_pnr::db::WindingNumber[][src]

pub trait WindingNumber<T> {
    fn winding_number(&self, point: Point<T>) -> isize;

    fn contains_point_non_oriented(&self, point: Point<T>) -> bool { ... }
fn contains_point(&self, point: Point<T>) -> bool { ... } }
Expand description

Compute the winding number of a geometrical object around a point. The winding number is used to check if a point is contained in a shape.

Required methods

Calculate the winding number of the polygon around this point.

TODO: Define how point on edges and vertices is handled.

See: http://geomalgorithms.com/a03-_inclusion.html

Provided methods

Check if point is inside the polygon, i.e. the polygons winds around the point a non-zero number of times.

For points on edges the following convention is used: Points on left or bottom edges are inside, points on right or top edges outside.

Check if point is inside the polygon, i.e. the polygon winds around the point an odd number of times.

For points on edges the following convention is used: Points on left or bottom edges are inside, points on right or top edges outside.

Implementors