A 3D Sweep Hull Algorithm for computing Convex Hulls and Delaunay Triangulation

Reading time: 4 minute
...

📝 Original Info

  • Title: A 3D Sweep Hull Algorithm for computing Convex Hulls and Delaunay Triangulation
  • ArXiv ID: 1602.04707
  • Date: 2016-02-16
  • Authors: David Sinclair

📝 Abstract

This paper presents a new O(nlog(n)) algorithm for computing the convex hull of a set of 3 dimensional points. The algorithm first sorts the point in (x,y,z) then incrementally adds sorted points to the convex hull using the constraint that each new point added to the hull can 'see' at least one facet touching the last point added. The reduces the search time for adding new points. The algorithm belongs to the family of swept hull algorithms. While slower than q-hull for the general case it significantly outperforms q-hull for the pathological case where all of the points are on the 3D hull (as is the case for Delaunay triangulation). The algorithm has been named the 'Newton Apple Wrapper algorithm' and has been released under GPL in C++. keywords: Delaunay triangulation, 3D convex hull.

💡 Deep Analysis

Figure 1

📄 Full Content

This paper presents a new 3D convex hull algorithm (named the Newton Apple Wrapper algorithm or 'NAW' algorithm for short) that performs efficiently in the case were all of the points are on the hull. This paper is not intended as an introduction to convex hulls, Delaunay triangulation or computational geometry.

The NAW algorithm is primarily intended for Delaunay triangulation and is benchmarked against q-hull and sweep-line.

The NAW algorithm functions as follows:

  1. Sort a set of 3D point in ascending z (x (y)).

  2. Starting with the first of the sorted points add more points until a non-zero area triangle (or triangles) is created to form the seed hull. 3) Sequentially add new points to the hull. The facets of the hull are triangles, these are maintained as a list with adjacency information. The process of adding a new point to the hull involves determining which triangular facets (on the hull) are visible to the new point and replacing them with new triangles made using the new point and the occluding edges of the hull from the perspective of the new point.

The cleverness in the algorithm is in the maintenance of the list of facets and their adjacencies. The sorting of the points in z(x(y)) guarantees that when a new point is to be added to the hull the last point added will be the vertex of at least one ‘visible facet’ of the existing hull. Convexity of the hull guarantees that all of the facets visible to the new point will be single connected. When searching for the visible facets of the hull it is sufficient to start by testing the facets which have the last added point as a vertex until one is found and then neighbour relations can be used to find the complete set of visible facets.

The algorithm is dependent on the receiving a sorted set of 3D points, this bounds the algorithms performance by the time taken to sort the points and this typically will mean using QuickSort meaning the expected performance of the algorithm cannot exceed O(nlog(n)). The algorithm is primarily aimed at performing Delaunay triangulation of a set of 2D (x,y) points through mapping them into 3D as (x,y, xx+yy ) i.e. the points are constrained to lie on a parabola of revolution in 3D and ALL of the point will be on the resulting convex hull. Point insertion time is a function of the number of triangular facets visible to each new point. Figure 2 shows a graph of the number of insertions required as points in sets of 1000 and 10,000 points mapped into a hull.

a.

b.

Figure 2.

Graph of number of visible facets on the hull as points are inserted.

Figure 3 shows a graph of the mean number of visible facets as a function of log of the size of the point set. As can be seen the mean number of visible facets is linear in the exponent of the number of points which demonstrates that the NAW algorithm is O(nlog(n)) in complexity when used for Delaunay triangulation.

A series of random 2D points were generated with between 100 and 1,000,000 points and Delaunay triangulations computed

The NAW algorithm is faster than qhull Delaunay triangulation of larger sets of points. It is a conceptually simpler algorithm than Sweep-Line but numerically less stable. The algorithm is O(nlog(n)) where n is the number of points. There is very likely room to improve the performance of the code, which is released as GPL in C++.

📸 Image Gallery

cover.png

Reference

This content is AI-processed based on open access ArXiv data.

Start searching

Enter keywords to search articles

↑↓
ESC
⌘K Shortcut