pub trait DelaunayKernel<D: SpadeNum>: Sized + Clone {
    fn contained_in_circumference<V: TwoDimensional<Scalar = D>>(
        pa: &V,
        pb: &V,
        pc: &V,
        pd: &V
    ) -> bool { ... } fn side_query<Ve: TwoDimensional<Scalar = D>>(
        edge: &SimpleEdge<Ve>,
        position: &Ve
    ) -> EdgeSideInfo<D> { ... } fn is_ordered_ccw<V: TwoDimensional<Scalar = D>>(
        v0: &V,
        v1: &V,
        v2: &V
    ) -> bool { ... } fn point_on_edge<V: TwoDimensional<Scalar = D>>(
        edge: &SimpleEdge<V>,
        position: &V
    ) -> bool { ... } }
Expand description

Determines how a delaunay triangulation performs its basic geometry computations.

Every delaunay triangulation is based on two basic geometry operations: orientation tests (on which side of a line lies a point?) and in-circle tests (is a point contained in the circumference of a triangle?). These questions can be answered approximately or precisely, their calculation can or cannot take overflow issues for integer coordinates into account.

Since each application has different needs, a DelaunayKernel will define how these geometric queries are calculated for a triangulation. It is recommended to use one of the predefined kernels that fits your needs.

Provided Methods

Returns true if pd is contained in the circumference of the triangle spanned by pa, pb, pc.

pa, pb, pc have to be ordered clockwise, otherwise the result is inverted.

Returns an EdgeSideInfo yielding on which side of a line a point lies.

Another formulation of side_query, will return true if v0, v1 and v2 are ordered counterclockwise.

Returns true if a point lies on the infinite edge going through edge.from and edge.to.

Implementors