# Voronoi diagram

In mathematics, a **Voronoi diagram** is a partition of a plane into regions close to each of a given set of objects. In the simplest case, these objects are just finitely many points in the plane (called seeds, sites, or generators). For each seed there is a corresponding region, called a **Voronoi cell**, consisting of all points of the plane closer to that seed than to any other. The Voronoi diagram of a set of points is dual to its Delaunay triangulation.

The Voronoi diagram is named after Georgy Voronoy, and is also called a **Voronoi tessellation**, a **Voronoi decomposition**, a **Voronoi partition**, or a **Dirichlet tessellation** (after Peter Gustav Lejeune Dirichlet). Voronoi cells are also known as **Thiessen polygons**.^{[1]}^{[2]}^{[3]} Voronoi diagrams have practical and theoretical applications in many fields, mainly in science and technology, but also in visual art.^{[4]}^{[5]}

In the particular case where the space is a finite-dimensional Euclidean space, each site is a point, there are finitely many points and all of them are different, then the Voronoi cells are convex polytopes and they can be represented in a combinatorial way using their vertices, sides, two-dimensional faces, etc. Sometimes the induced combinatorial structure is referred to as the Voronoi diagram. In general however, the Voronoi cells may not be convex or even connected.

For most cities, the distance between points can be measured using the familiar Euclidean distance:

The corresponding Voronoi diagrams look different for different distance metrics.

Informal use of Voronoi diagrams can be traced back to Descartes in 1644. Peter Gustav Lejeune Dirichlet used two-dimensional and three-dimensional Voronoi diagrams in his study of quadratic forms in 1850. British physician John Snow used a Voronoi-like diagram in 1854 to illustrate how the majority of people who died in the Broad Street cholera outbreak lived closer to the infected Broad Street pump than to any other water pump.

Voronoi diagrams are named after Georgy Feodosievych Voronoy who defined and studied the general *n*-dimensional case in 1908.^{[10]} Voronoi diagrams that are used in geophysics and meteorology to analyse spatially distributed data (such as rainfall measurements) are called Thiessen polygons after American meteorologist Alfred H. Thiessen. Other equivalent names for this concept (or particular important cases of it): Voronoi polyhedra, Voronoi polygons, domain(s) of influence, Voronoi decomposition, Voronoi tessellation(s), Dirichlet tessellation(s).

Voronoi tessellations of regular lattices of points in two or three dimensions give rise to many familiar tessellations.

For the set of points (*x*, *y*) with *x* in a discrete set *X* and *y* in a discrete set *Y*, we get rectangular tiles with the points not necessarily at their centers.

Although a normal Voronoi cell is defined as the set of points closest to a single point in *S*, an *n*th-order Voronoi cell is defined as the set of points having a particular set of *n* points in *S* as its *n* nearest neighbors. Higher-order Voronoi diagrams also subdivide space.

For a set of *n* points the (*n* − 1)^{th}-order Voronoi diagram is called a farthest-point Voronoi diagram.

The boundaries of the cells in the farthest-point Voronoi diagram have the structure of a topological tree, with infinite rays as its leaves. Every finite tree is isomorphic to the tree formed in this way from a farthest-point Voronoi diagram.^{[13]}

As implied by the definition, Voronoi cells can be defined for metrics other than Euclidean, such as the Mahalanobis distance or Manhattan distance. However, in these cases the boundaries of the Voronoi cells may be more complicated than in the Euclidean case, since the equidistant locus for two points may fail to be subspace of codimension 1, even in the two-dimensional case.

A weighted Voronoi diagram is the one in which the function of a pair of points to define a Voronoi cell is a distance function modified by multiplicative or additive weights assigned to generator points. In contrast to the case of Voronoi cells defined using a distance which is a metric, in this case some of the Voronoi cells may be empty. A power diagram is a type of Voronoi diagram defined from a set of circles using the power distance; it can also be thought of as a weighted Voronoi diagram in which a weight defined from the radius of each circle is added to the squared Euclidean distance from the circle's center.^{[14]}

Voronoi diagrams are also related to other geometric structures such as the medial axis (which has found applications in image segmentation, optical character recognition, and other computational applications), straight skeleton, and zone diagrams. Besides points, such diagrams use lines and polygons as seeds. By augmenting the diagram with line segments that connect to nearest points on the seeds, a planar subdivision of the environment is obtained.^{[16]} This structure can be used as a navigation mesh for path-finding through large spaces. The navigation mesh has been generalized to support 3D multi-layered environments, such as an airport or a multi-storey building.^{[17]}

Several efficient algorithms are known for constructing Voronoi diagrams, either directly (as the diagram itself) or indirectly by starting with a Delaunay triangulation and then obtaining its dual.
Direct algorithms include Fortune's algorithm, an O(*n* log(*n*)) algorithm for generating a Voronoi diagram from a set of points in a plane.
Bowyer–Watson algorithm, an O(*n* log(*n*)) to O(*n*^{2}) algorithm for generating a Delaunay triangulation in any number of dimensions, can be used in an indirect algorithm for the Voronoi diagram. The Jump Flooding Algorithm can generate approximate Voronoi diagrams in constant time and is suited for use on commodity graphics hardware. ^{[39]}^{[40]}

Lloyd's algorithm and its generalization via the Linde–Buzo–Gray algorithm (aka k-means clustering), use the construction of Voronoi diagrams as a subroutine. These methods alternate between steps in which one constructs the Voronoi diagram for a set of seed points, and steps in which the seed points are moved to new locations that are more central within their cells. These methods can be used in spaces of arbitrary dimension to iteratively converge towards a specialized form of the Voronoi diagram, called a Centroidal Voronoi tessellation, where the sites have been moved to points that are also the geometric centers of their cells.

Voronoi diagrams require a computational step before showing the results. An efficient tool therefore would process the computation in real-time to show a direct result to the user. Many commercial and free applications exist. A particularly practical type of tools are the web-based ones. Web-based tools are easier to access and reference. Also, SVG being a natively supported format by the web, allows at the same time an efficient (GPU accelerated) rendering and is a standard format supported by multiple CAD tools (e.g. Autodesk Fusion360).

Although voronoi is a very old concept, the currently available tools do lack multiple mathematical functions that could add values to these programs.^{[opinion]} Examples could be usage of a different cost distance than Euclidean, and mainly 3d voronoi algorithms. Although not being software tools themselves, the first reference explains the concept of 3d voronoi and the second is a 3d voronoi library.