A Simple Primal Algorithm for Intersecting 3-Polyhedra in Linear Time

ID
TR-91-16
Authors
Andrew K. Martin
Publishing date
July 1991
Length
44 pages
Abstract
This thesis presents, in full, a simple linear time algorithm for intersecting two convex 3-polyhedra P and Q. This differs from the first such algorithm -- due to Chazelle -- in that it operates entirely in primal space, whereas Chazelle's algorithm relies heavily on duality transforms. We use the hierarchical representations of polyhedra due to Dobkin and Kirkpatrick to induce a cell complexes between coarse approximations, P^k and P_k of P satisfying P_k subset-of P subset-of P^k, and similar approximations Q^k and Q_k of Q satisfying Q_k subset-of Q subset-of Q^k. We show that the structure of such complexes allows intersection queries to be answered efficiently. In particular, the sequence of cells intersected by a ray can be identified in time proportional to the length of the sequence. The algorithm operates by recursively computing the intersections: P^k intersect Q_k and P_k intersect Q^k . Then edges of the union of approximations P intersect Q^k and Q intersect P^k are traversed by tracing their intersection with the two cell complexes. We show that each such edge can be traversed in constant time. In the process, most of the edges of P intersect Q which lie simultaneously on the boundary of P and Q will be traced. We show that the total time needed to construct those which remain is linear in the size of P and Q . Though based on the same general principles, the algorithm presented here is somewhat simpler than that described by Chazelle, which uses only the cell complexes induced by the inner hierarchical representations of P and Q . By extending Chazelle's search structure to the space exterior to the given polyhedra, we avoid having to operate simultaneously in primal and dual spaces. This permits us to conceptualise the algorithm as traversing the edges of the boundary of (P intersect Q^k) union (Q intersect P^k). As a side effect, we avoid one half of Chazelle's recursive calls, which leads to a modest improvement in the asymptotic constants.