Efficient hidden surface removal for objects with small union size
Matthew J. Katz, Mark H. Overmars, Micha Sharir · 1991
Let S be a set of n non-intersecting objects in space for which we want to determine the portions visible from some viewing point. We assume that the objects are ordered by depth from the viewing point (e.g., they are all horizontal and are viewed from infinity from above). In this paper we give an algorithm that computes the visible portions in time O((U(n)+ k)log 2 n), where U(n ) is a super-additive bound on the maximal complexity of the union of (the projections on a viewing plane of) any n objects from the family under consideration, and k is the complexity of the resulting visibility map. The algorithm uses O(U(n)logn) working storage. The algorithm is useful when the objects are "fat" in the sense that the union of the projection of any subset of them has small (i.e., subquadratic) complexity. We present three applications of this general technique: (i) For disks (or balls in space) we have U(n) = O(n), thus the visibility map can be computed in time O((n + k) log 2 n). (ii) For 'fat' triangles (where each internal angle is at least some fixed 0 degrees) we have U(n) = O(nloglogn) and the algorithm runs in time O((n log log n + k)log 2 n). (iii) The method also applies to computing the visibility map for a polyhedral terrain viewed from a fixed point, and yields an O((na(n)+ k)logn) algorithm.