Table of Contents
Fetching ...

Efficient Computation of Voronoi Diagrams Using Point-in-Cell Tests

Yanyang Xiao, Juan Cao, Zhonggui Chen

TL;DR

This paper proposes a novel yet efficient method to compute Voronoi diagrams bounded by a given domain, i.e., the clipped or restricted Voronoi diagrams, and extends the proposed method to the GPUs for computing Voronoi diagrams in parallel.

Abstract

Since the Voronoi diagram appears in many applications, the topic of improving its computational efficiency remains attractive. We propose a novel yet efficient method to compute Voronoi diagrams bounded by a given domain, i.e., the clipped or restricted Voronoi diagrams. The intersection of the domain and a Voronoi cell (domain-cell intersection) is generated by removing the part outside the cell from the domain, which can be accomplished by several clippings. Different from the existing methods, we present an edge-based search scheme to find clipping planes (bisectors). A test called point-in-cell is first set up to tell whether a space point is in a target Voronoi cell or not. Then, for each edge of the intermediate domain-cell intersection, we will launch a clipping only if its two endpoints are respectively inside and outside the corresponding Voronoi cell, where the bisector for the clipping can be found by using a few times of point-in-cell tests. Therefore, our method only involves the clippings that contribute to the final results, which is a great advantage over the state-of-the-art methods. Additionally, because each domain-cell intersection can be generated independently, we extend the proposed method to the GPUs for computing Voronoi diagrams in parallel. The experimental results show the best performance of our method compared to state-of-the-art ones, regardless of site distribution. This paper was first submitted to SIGGRAPH Asia 2025.

Efficient Computation of Voronoi Diagrams Using Point-in-Cell Tests

TL;DR

This paper proposes a novel yet efficient method to compute Voronoi diagrams bounded by a given domain, i.e., the clipped or restricted Voronoi diagrams, and extends the proposed method to the GPUs for computing Voronoi diagrams in parallel.

Abstract

Since the Voronoi diagram appears in many applications, the topic of improving its computational efficiency remains attractive. We propose a novel yet efficient method to compute Voronoi diagrams bounded by a given domain, i.e., the clipped or restricted Voronoi diagrams. The intersection of the domain and a Voronoi cell (domain-cell intersection) is generated by removing the part outside the cell from the domain, which can be accomplished by several clippings. Different from the existing methods, we present an edge-based search scheme to find clipping planes (bisectors). A test called point-in-cell is first set up to tell whether a space point is in a target Voronoi cell or not. Then, for each edge of the intermediate domain-cell intersection, we will launch a clipping only if its two endpoints are respectively inside and outside the corresponding Voronoi cell, where the bisector for the clipping can be found by using a few times of point-in-cell tests. Therefore, our method only involves the clippings that contribute to the final results, which is a great advantage over the state-of-the-art methods. Additionally, because each domain-cell intersection can be generated independently, we extend the proposed method to the GPUs for computing Voronoi diagrams in parallel. The experimental results show the best performance of our method compared to state-of-the-art ones, regardless of site distribution. This paper was first submitted to SIGGRAPH Asia 2025.

Paper Structure

This paper contains 31 sections, 3 equations, 19 figures, 5 algorithms.

Figures (19)

  • Figure 1: Computing 5M 3D Voronoi cells bounded by a cube, where the given sites are white noise (a) and blue noise (b), respectively. Tested on an NVIDIA RTX 3080 GPU, the runtimes of two parallel implementations Ray2018-MeshlessVoronoiBasselin2021-GPUknnRPD of the kNN-based method and our method are (a): 3.12, 2.81, 0.49 seconds and (b): 0.34, 0.42, 0.26 seconds, respectively. Only a subset of the cells are rendered, each shrunk for visualization.
  • Figure 2: Each edge/face flag indicates the adjacent domain simplex ($<0$) or the neighboring Voronoi cell ($>0$). (a) edge/face flags of a domain simplex $\mathcal{T}_a \in \mathcal{M}$; (b) edge/face flags of the intersection $\mathcal{P}_{a,i}$ (light green) of $\mathcal{T}_a$ and Voronoi cell $\Omega_i$, where the large disks are sites (red, purple, grey), and the small black disks are corner points of $\mathcal{P}_{a,i}$.
  • Figure 3: In our method, the point-in-cell test only needs to examine two types of points: the corner points of a polygon/polytope (a–b) and the intersecting points between a bisector and an edge (c). Each blue arrow shows the nearest site $\mathbf{v}$ of a point $\mathbf{q}$.
  • Figure 4: Illustration of the edge-based bisector search, i.e., find a target bisector on edge $\mathbf{p}_s\mathbf{p}_t$ from a polygon/polytope. Initially, $\mathbf{p}_s \in \Omega_i, \mathbf{p}_t \in \Omega_j$ (a), we iteratively compute the intersecting point $\mathbf{q}$ (yellow) of $\mathbf{p}_s\mathbf{p}_t$ (pink) and the bisector $B_{i,j}$ (purple), and update $j$ as the index of the nearest site of $\mathbf{q}$ (b-c), until $\mathbf{q} \in \Omega_i$, then the target bisector is found (d). Using the target bisector to clip the polygon/polytope, the two endpoints of the rest of the edge are both in $\Omega_i$ (e). Each blue arrow shows the nearest site $\mathbf{v}$ of a point $\mathbf{p}$. $i = 1$ in this figure.
  • Figure 5: Illustration of computing the intersection $\mathcal{P}$ of a simplex $\mathcal{T} \in \mathcal{M}$ and a Voronoi cell $\Omega_i$. At least one corner point of $\mathcal{T}$ should be in $\Omega_i$. $\mathcal{P}$ is first initialized as $\mathcal{T}$. Select an edge whose starting point is in $\Omega_i$ but the end point is not, then find a bisector by using the proposed edge-based search scheme to clip $\mathcal{P}$. Repeat the selection and clipping steps until all the corner points are in $\Omega_i$. $i = 1$ in this figure.
  • ...and 14 more figures