For a polyhedron P in R d , denote by |P | its combinatorial complexity, i.e., the number of faces of all dimensions of the polyhedra. In this paper, we revisit the classic problem of preprocessing polyhedra independently so that given two preprocessed polyhedra P and Q in R d , each translated and rotated, their intersection can be tested rapidly.For d = 3 we show how to perform such a test in O(log |P | + log |Q|) time after linear preprocessing time and space. This running time is the best possible and improves upon the last best known query time of O(log |P | log |Q|) by Dobkin and Kirkpatrick (1990).We then generalize our method to any constant dimension d, achieving the same optimal O(log |P |+log |Q|) query time using a representation of size O(|P | d/2 +ε ) for any ε > 0 arbitrarily small. This answers an even older question posed by Dobkin and Kirkpatrick 30 years ago.In addition, we provide an alternative O(log |P | + log |Q|) algorithm to test the intersection of two convex polygons P and Q in the plane.
IntroductionConstructing or detecting the intersection between geometric objects has been an important subject of study in computational geometry. It was one of the main questions addressed in Shamos' seminal paper that lay the grounds of computational geometry [23], the first application of the plane sweep technique [24], and is still the topic of several volumes being published today.Extensive research has focused on finding efficient algorithms for intersection testing or collision detection as this class of problems has countless applications in motion planning, robotics, computer graphics, Computer-Aided Design, VLSI design and more. For information on collision detection refer to surveys [16,17] and to Chapter 38 of the Handbook of Computational Geometry [15].The first problem to be addressed is to compute the intersection of two convex objects. In this paper we focus on convex polygons and convex polyhedra (or simply polyhedra). Let P and Q be two polyhedra to be tested for intersection. Let |P | and |Q| denote the combinatorial complexities of P and Q, respectively, i.e., the number of faces of all dimensions of the polygon or polyhedra (vertices are 0-dimensional faces while edges are 1-dimensional faces). Let n = |P | + |Q| denote the total complexity.In the plane, Shamos [23] presented an optimal Θ(n)-time algorithm to construct the intersection of a pair of convex polygons. Another linear time algorithm was later presented by O'Rourke et al. [22]. In 3D space, Muller and Preparata [20] proposed an O(n log n) time algorithm to test whether two polyhedra in three-dimensional space intersect. Their algorithm has a second phase which computes the intersection of these polyhedra within the same running time using geometric dualization. Dobkin and Kirkpatrick [9] introduced a hierarchical data structure to represent a polyhedron that allows them to test if two polyhedra intersect in linear time. In a subsequent paper, Chazelle [2] presented an optimal linear time algorithm to compute the...