4,739 research outputs found

    Planar Visibility: Testing and Counting

    Full text link
    In this paper we consider query versions of visibility testing and visibility counting. Let SS be a set of nn disjoint line segments in R2\R^2 and let ss be an element of SS. Visibility testing is to preprocess SS so that we can quickly determine if ss is visible from a query point qq. Visibility counting involves preprocessing SS so that one can quickly estimate the number of segments in SS visible from a query point qq. We present several data structures for the two query problems. The structures build upon a result by O'Rourke and Suri (1984) who showed that the subset, VS(s)V_S(s), of R2\R^2 that is weakly visible from a segment ss can be represented as the union of a set, CS(s)C_S(s), of O(n2)O(n^2) triangles, even though the complexity of VS(s)V_S(s) can be Ξ©(n4)\Omega(n^4). We define a variant of their covering, give efficient output-sensitive algorithms for computing it, and prove additional properties needed to obtain approximation bounds. Some of our bounds rely on a new combinatorial result that relates the number of segments of SS visible from a point pp to the number of triangles in ⋃s∈SCS(s)\bigcup_{s\in S} C_S(s) that contain pp.Comment: 22 page

    Effizient algorithms for generalized intersection searching on non-iso-oriented objects

    Get PDF
    In a generalized intersection searching problem, a set SS of colored geometric objects is to be preprocessed so that, given a query object qq, the distinct colors of the objects of SS that are intersected by qq can be reported or counted efficiently. These problems generalize the well-studied standard intersection searching problems and are rich in applications. Unfortunately, the solutions known for the standard problems do not yield efficient solutions to the generalized problems. Recently, efficient solutions have been given for generalized problems where the input and query objects are iso-oriented, i.e., axes-parallel, or where the color classes satisfy additional properties, e.g., connectedness. In this paper, efficient algorithms are given for several generalized problems involving non-iso-oriented objects. These problems include: generalized halfspace range searching in Rd{\cal R}^d, for any fixed dβ‰₯2d \geq 2, segment intersection searching, triangle stabbing, and triangle range searching in R2{\cal R}^2. The techniques used include: computing suitable sparse representations of the input, persistent data structures, and filtering search

    Output-Sensitive Tools for Range Searching in Higher Dimensions

    Full text link
    Let PP be a set of nn points in Rd{\mathbb R}^{d}. A point p∈Pp \in P is kk\emph{-shallow} if it lies in a halfspace which contains at most kk points of PP (including pp). We show that if all points of PP are kk-shallow, then PP can be partitioned into Θ(n/k)\Theta(n/k) subsets, so that any hyperplane crosses at most O((n/k)1βˆ’1/(dβˆ’1)log⁑2/(dβˆ’1)(n/k))O((n/k)^{1-1/(d-1)} \log^{2/(d-1)}(n/k)) subsets. Given such a partition, we can apply the standard construction of a spanning tree with small crossing number within each subset, to obtain a spanning tree for the point set PP, with crossing number O(n1βˆ’1/(dβˆ’1)k1/d(dβˆ’1)log⁑2/(dβˆ’1)(n/k))O(n^{1-1/(d-1)}k^{1/d(d-1)} \log^{2/(d-1)}(n/k)). This allows us to extend the construction of Har-Peled and Sharir \cite{hs11} to three and higher dimensions, to obtain, for any set of nn points in Rd{\mathbb R}^{d} (without the shallowness assumption), a spanning tree TT with {\em small relative crossing number}. That is, any hyperplane which contains w≀n/2w \leq n/2 points of PP on one side, crosses O(n1βˆ’1/(dβˆ’1)w1/d(dβˆ’1)log⁑2/(dβˆ’1)(n/w))O(n^{1-1/(d-1)}w^{1/d(d-1)} \log^{2/(d-1)}(n/w)) edges of TT. Using a similar mechanism, we also obtain a data structure for halfspace range counting, which uses O(nlog⁑log⁑n)O(n \log \log n) space (and somewhat higher preprocessing cost), and answers a query in time O(n1βˆ’1/(dβˆ’1)k1/d(dβˆ’1)(log⁑(n/k))O(1))O(n^{1-1/(d-1)}k^{1/d(d-1)} (\log (n/k))^{O(1)}), where kk is the output size
    • …
    corecore