### An optimal algorithm for intersecting three-dimensional convex polyhedra

B. Chazelle
1989 30th Annual Symposium on Foundations of Computer Science
This paper describes a linear-time algorithm for computing the intersection of two convex polyhedra in 3-space. Applications of this result to computing intersections, convex hulls, and Voronoi diagrams are also given. 1. Introduction. Given two convex polyhedra in 3-space, how fast can we compute their intersection? Over a decade ago, Muller and Preparata  gave the first efficient solution to this problem by reducing it to a combination of intersection detection and convex hull
more » ... Another route was followed in 1984 by Hertel et al., who solved the problem by using space sweep  . In both cases, a running time of (R)(n log n) was achieved, where n is the combined number of vertices in the two polyhedra. Resolving the true complexity of the problem, however, remained elusive. The different but related problem of detecting whether two convex polyhedra intersect, by using preprocessing, was studied by Chazelle and Dobkin , Dobkin and Munro , and Dobkin and Kirkpatrick . More germane to our concerns here is the off-line version of the detection problem. Dobkin and Kirkpatrick  have shown that detecting whether two convex polyhedra intersect can be done in a linear number of operations. By stating the problem as a linear program over three variables, other linear-time algorithms originate in the works of Megiddo  and Dyer 10]. Previous results also include an efficient algorithm for intersecting two polyhedra, one of which is convex (Mehlhorn and Simon ). Optimal solutions for intersecting convex polygons are given in Shamos and Hoey  and O'Rourke et al. . For additional background material on polyhedral intersections, the reader should consult Edelsbrunner , Mehlhorn , and Preparata and Shamos . Our main result is an algorithm for constructing the intersection between two convex polyhedra in linear time. The algorithm does not use any complicated data structure and seems a good candidate for practical implementation. As is customary, our result assumes that the input conforms with any one of the standard (linear-time equivalent) polyhedral representations given in the literature  , , . This is not a minor point, because nonstandard representations can easily make the problem more difficult. (For example, think how much more difficult the problem would be if we were given only the vertices without any other facial information.) From our algorithm for pairwise intersections we immediately derive an efficient method for intersecting k convex polyhedra. The complexity of the algorithm is O(n log k), where n is the total number of vertices, which is provably optimal. Other applications include merging Voronoi diagrams in two dimensions and computing convex hulls in 3-space. 2. Polyhedra and shields. At the heart of Dobkin and Kirkpatrick's detection  and separation algorithms  is an ingenious hierarchical representation of a convex