Voronoi diagram

The Voronoi diagram is a geometric structure used to partition space based on proximity to a set of points. Named after Russian mathematician Georgy Voronoy, it has applications in fields such as computer graphics, urban planning, biology, and physics.

In this Answer, we look into the intricacies of Voronoi diagrams, unraveling their mathematical foundations and diverse applications.

Understanding Voronoi diagrams

At its essence, a Voronoi diagram serves as a spatial partitioning tool, outlining a space into regions, each chained to a specific point termed a seed or generator. These delineated regions, known as Voronoi cells, encapsulate all points in proximity to their corresponding seed, surpassing any other point in distance.

An example Voronoi diagram
An example Voronoi diagram

The process entails the segmentation of the plane into cells surrounding each seed, forming tessellating polygonsTessellating polygons are shapes that can cover a plane without any gaps or overlaps, fitting together like puzzle pieces to form a continuous pattern. that span the entire spatial expanse. This geometric arrangement guarantees that each point within a cell maintains equidistance from neighboring seeds.

As more points are added, a cell expands its influence, indicating closeness to the original seed. Voronoi diagrams have various applications in various fields and can often be observed in natural patterns, effectively explaining spatial distributions.

The mathematical equations to calculate the distance between the points are given below:

  • Euclidean distance:

  • Manhattan distance:

Representation of Voronoi diagram
Representation of Voronoi diagram

Code example

You can plot the Voronoi diagram through the following code:

import numpy as np
from scipy.spatial import Voronoi, voronoi_plot_2d
import matplotlib.pyplot as plt
np.random.seed(42)
points = np.random.rand(10, 2)
vor = Voronoi(points)
fig, axe = plt.subplots(dpi=800)
voronoi_plot_2d(vor, ax=axe)
plt.scatter(points[:, 0], points[:, 1], c='red', marker='o')
plt.title('Voronoi Diagram')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
fig.savefig("output/voronoi_diagram.png")
plt.close(fig)
  • Lines 1–3: The code begins by importing the necessary libraries: numpy, scipy.spatial and matplotlib.pyplot.

  • Line 5: np.random.seed(42) sets the random seed for reproducibility. This ensures that every time the code is run, the same random numbers are generated.

  • Line 6: points = np.random.rand(10, 2) creates an array of 10 random points in a 2D space. Each point has x and y coordinates generated using np.random.rand().

  • Line 8: vor = Voronoi(points) computes the Voronoi diagram for the given set of points.

  • Lines 10–13:

    • fig, axe = plt.subplots(dpi=800): This line creates a figure and axis object for plotting. dpi=800 sets the resolution of the plot.

    • voronoi_plot_2d(vor, ax=axe): This function plots the Voronoi diagram computed earlier on the specified axis (axe).

    • plt.scatter(points[:, 0], points[:, 1], c='red', marker='o'): This line plots the original points on the diagram with red color and circular markers.

  • Lines 15–20:

    • plt.title('Voronoi Diagram'): Sets the title of the plot.

    • plt.xlabel('X-axis') and plt.ylabel('Y-axis'): Sets the labels for the x-axis and y-axis, respectively.

    • fig.savefig("output/voronoi_diagram.png"): Saves the plot as a png image file named “voronoi_diagram.png” in the “output” directory. The plt.close(fig) line closes the figure object to free up memory.

Applications in computer science

Voronoi diagrams are widely used in computer science and computer graphics.

They are valuable for solving proximity-related problems such as nearest-neighbor searches, mesh generation, and image segmentation. In computer graphics, Voronoi diagrams help create realistic textures, simulate natural patterns, and generate terrain landscapes.

  • Urban planning and architecture: Voronoi diagrams have significantly contributed to urban planning and architecture. When designing public spaces, city layouts, or infrastructure, understanding the distribution of amenities and resources is crucial. Voronoi diagrams help optimize resource allocation, determine service areas, and ensure equitable facility access.

  • Natural sciences and biology: Voronoi diagrams are used in biology and ecology to study spatial patterns and distributions. In plant ecology, they can model species distribution based on the locations of individual plants. In molecular biology, Voronoi diagrams help analyze protein structures and understand molecular interactions.

  • Physics and material science: In physics and material science, Voronoi diagrams are used to study the microstructures of materials. By analyzing the spatial arrangement of grains or particles in a material, researchers can gain insights into its mechanical properties, thermal conductivity, and other characteristics. This application is particularly valuable in materials engineering and the development of advanced materials.

Real world applications
Real world applications

Conclusion

The Voronoi diagram is a foundational concept in computational geometry with applications across multiple disciplines. It is used in fields such as computer science, urban planning, and biology to solve spatial problems and optimize resource allocation. As technology advances, its role continues to expand in addressing complex proximity-based challenges.

Free Resources

Copyright ©2025 Educative, Inc. All rights reserved