# Functor Delaunay.Make

    module Make: functor (S : CCC) -> Triangulation  with module S = S

Generic Delaunay triangulation

Parameters:

`S` | : | `CCC`

    module S: Delaunay.CCC

    type triangulation

    val triangulate : S.point array -> triangulation

`triangulate a` computes the Delaunay triangulation of a set of points, given as an array `a`. If `N` is the number of points (that is `Array.length a`), then the running time is $O(N \log N)$ on the average and $O(N^2)$ on the worst-case. The space used is always $O(N)$.

    val iter : (S.point -> S.point -> unit) -> triangulation -> unit

`iter f t` iterates over all edges of the triangulation `t`. `f u v` is called once for each undirected edge `(u,v)`.

    val fold : (S.point -> S.point -> 'a -> 'a) ->
           triangulation -> 'a -> 'a

    val iter_triangles : (S.point -> S.point -> S.point -> unit) ->
           triangulation -> unit