Linear Data Structures for Fast Ray-Shooting amidst Convex Polyhedra
We consider the problem of ray shooting in a three-dimensional scene consisting of k (possibly intersecting) convex polyhedra with a total of n facets. That is, we want to preprocess them into a data structure, so that the first intersection point of a query ray and the given polyhedra can be determined quickly. We describe data structures that require (O) over tilde (n . poly(k)) preprocessing time and storage (where the (O) over bar(.) notation hides polylogarithmic factors), and have polylogarithmic query time, for several special instances of the problem. These include the case when the ray origins are restricted to lie on a fixed line l(0), but the directions of the rays are arbitrary, the more general case when the supporting lines of the rays pass through l(0), and the case of rays orthogonal to some fixed line with arbitrary origins and orientations. We also present a simpler solution for the case of vertical ray-shooting with arbitrary origins. In all cases, this is a significant improvement over previously known techniques (which require Omega(n(2)) storage, even when k << n).
ray-shooting convex polyhedra computational geometry lines in space