K-structure, Separating Chain, Gap Tree, and Layered DAG

Similar documents
Computational Geometry

1. Meshes. D7013E Lecture 14

GEOMETRIC SEARCHING PART 1: POINT LOCATION

Polygon Partitioning. Lecture03

January 10-12, NIT Surathkal Introduction to Graph and Geometric Algorithms

Line segment intersection. Family of intersection problems

Lecture 3: Art Gallery Problems and Polygon Triangulation

CMSC 754 Computational Geometry 1

2 Geometry Solutions

Delaunay Triangulations. Presented by Glenn Eguchi Computational Geometry October 11, 2001

Computational Geometry [csci 3250]

Graph and Digraph Glossary

Point Location in Delaunay Triangulations

CMSC 754 Computational Geometry 1

Delaunay Triangulations

Computational Geometry

Mesh Generation. Quadtrees. Geometric Algorithms. Lecture 9: Quadtrees

Voronoi Diagrams and Delaunay Triangulation slides by Andy Mirzaian (a subset of the original slides are used here)

CS6100: Topics in Design and Analysis of Algorithms

Trapezoidal Maps. Notes taken from CG lecture notes of Mount (pages 60 69) Course page has a copy

Polygon Triangulation. (slides partially by Daniel Vlasic )

Polygon Triangulation

Computational Geometry

Advanced Algorithms Computational Geometry Prof. Karen Daniels. Fall, 2012

Ray Tracing with Spatial Hierarchies. Jeff Mahovsky & Brian Wyvill CSC 305

CIS265/ Trees Red-Black Trees. Some of the following material is from:

Polygon Triangulation. (slides partially by Daniel Vlasic )

1 Divide and Conquer Approach

Voronoi Diagrams and Delaunay Triangulations. O Rourke, Chapter 5

COMPUTING CONSTRAINED DELAUNAY

Fortune s Algorithm. Notes from the book by de Berg, Van Krevald, Overmars, and Schwarzkpf

arxiv: v1 [cs.cg] 8 Jan 2018

CS 532: 3D Computer Vision 14 th Set of Notes

Notes and Answers to Homework Exam 1, Geometric Algorithms, 2017

Computational Geometry

CISC 235: Topic 4. Balanced Binary Search Trees

Polygon decomposition. Motivation: Art gallery problem

Efficient Algorithmic Techniques for Several Multidimensional Geometric Data Management and Analysis Problems

Uses for Trees About Trees Binary Trees. Trees. Seth Long. January 31, 2010

Range Searching II: Windowing Queries

Announcements. Written Assignment2 is out, due March 8 Graded Programming Assignment2 next Tuesday

ICS 161 Algorithms Winter 1998 Final Exam. 1: out of 15. 2: out of 15. 3: out of 20. 4: out of 15. 5: out of 20. 6: out of 15.

Planar Point Location

Graph Theory. Probabilistic Graphical Models. L. Enrique Sucar, INAOE. Definitions. Types of Graphs. Trajectories and Circuits.

Polygon Triangulation

Spatial Data Structures

Binary Trees. BSTs. For example: Jargon: Data Structures & Algorithms. root node. level: internal node. edge.

CS251-SE1. Midterm 2. Tuesday 11/1 8:00pm 9:00pm. There are 16 multiple-choice questions and 6 essay questions.

OPTIMAL POINT LOCATION IN A MONOTONE SUBDIVISION* GUIBAS: AND JORGE STOLFI

Lecture 25 of 41. Spatial Sorting: Binary Space Partitioning Quadtrees & Octrees

APPROXIMATING THE MAXMIN AND MINMAX AREA TRIANGULATIONS USING ANGULAR CONSTRAINTS. J. Mark Keil, Tzvetalin S. Vassilev

Question Bank Subject: Advanced Data Structures Class: SE Computer

Line Arrangement. Chapter 6

Course Review. Cpt S 223 Fall 2009

March 20/2003 Jayakanth Srinivasan,

Spatial Data Structures

Lecture Summary CSC 263H. August 5, 2016

CSE 100 Advanced Data Structures

CSE 530A. B+ Trees. Washington University Fall 2013

Solutions to problem set 1

Spatial Data Structures

Geometric Modeling. Mesh Decimation. Mesh Decimation. Applications. Copyright 2010 Gotsman, Pauly Page 1. Oversampled 3D scan data

CS 532: 3D Computer Vision 11 th Set of Notes

Mesh Decimation. Mark Pauly

CS 410/584, Algorithm Design & Analysis, Lecture Notes 8!

Geometric Data Structures

CSE 5311 Notes 13: Computational Geometry

Computational Geometry

Visualization Query Processing. Kai Xu, Xiaofang Zhou, Member, IEEE, Xuemin Lin, Heng Tao Shen, and Ke Deng. Abstract

Course Review for Finals. Cpt S 223 Fall 2008

Computational Geometry

Quadtrees and Meshing

MSBVH: An Efficient Acceleration Data Structure for Ray Traced Motion Blur

Relative Convex Hulls in Semi-Dynamic Subdivisions

Trees. Tree Structure Binary Tree Tree Traversals

Orthogonal Range Search and its Relatives

C SCI 335 Software Analysis & Design III Lecture Notes Prof. Stewart Weiss Chapter 4: B Trees

Accelerating Ray Tracing

Projects & Polygon Triangulation

CS521 \ Notes for the Final Exam

LAMC Advanced Circle October 9, Oleg Gleizer. Warm-up

Ray Tracing Acceleration Data Structures

Collision Detection. Jane Li Assistant Professor Mechanical Engineering & Robotics Engineering

Algorithms for GIS csci3225

(2,4) Trees. 2/22/2006 (2,4) Trees 1

Computational Geometry

Geometric Data Structures

Analysis of Algorithms

THE THIRD JTST FOR JBMO - Saudi Arabia, 2017

An Implementation of a Near-Linear Polygon Triangulation Algorithm for General Polygons

Collision and Proximity Queries

Level-Balanced B-Trees

Using Bounding Volume Hierarchies Efficient Collision Detection for Several Hundreds of Objects

Discrete Mathematics I So Practice Sheet Solutions 1

Chapter 2: Properties of Angles and Triangles

Average case analysis of dynamic geometric optimization

Trees. CSE 373 Data Structures

Trapezoid and Chain Methods

Robotic Motion Planning: Cell Decompositions (with some discussion on coverage and pursuer/evader)

Week 7 Convex Hulls in 3D

Transcription:

K-structure, Separating Chain, Gap Tree, and Layered DAG Presented by Dave Tahmoush Overview Improvement on Gap Tree and K-structure Faster point location Encompasses Separating Chain Better storage Designed for point location in polygonal maps

K-structure By Kirkpatrick First triangulate polygonal map Bound with triangle (XYZ) Then triangulate with plane sweep Then build triangle hierarchy for searching Replace group of triangles by smaller group of triangles Remove vertices Simplification Triangulation with Plane Sweep Sweep red line from left to right in x Encounter new vertex Create edges to all previous vertices when they do not intersect existing edges Introduces new edges XA and YA (dashed)

Building Hierarchy Vertices are independent if no edge between them Find a maximal set of mutually independent vertices in interior From the edge-adjacency list Remove and retriangulate bottom up simplification Only remove vertices with 11 edges or less because then the retriangluation is bounded Continue simplifying layers until only have triangle XYZ left Regions a-k will be linked to regions in next higher level Simplification Hierarchy Remove vertices B,D X A ε α 2 α P 3 δ 1 E α 1 δ 2 C β Z dc e gk b f h i a α δ ε (a) Y α 1 α 2 α 3 δ 1 δ 2 (b) ε

Simplification Hierarchy Remove vertices B,D Remove vertex A X t 1 t 2 E P v u w C Z δ 2 ε δ 1 α 1 α 2 ε β v t u w (a) Y v t 1 t 2 (b) u w Simplification Hierarchy Remove vertices B,D Remove vertex A Remove vertex C X P q E r 1 r 2 t 1 u v w t 2 q r Z (a) Y q r 1 r 2 (b)

Simplification Hierarchy Remove vertices B,D Remove vertex A Remove vertex C Remove vertex E Done X (a) Y P s q r 1 r 2 s (b) Z Point Location in K-structure Descend hierarchy of regions Check each set of triangles in next level Triangles grouped into polygons when not disjoint sets below Extra triangles to check, but disjoint regions Each level guaranteed to shrink to less than 23/24 th of the previous levels (# of vertices) Since only remove vertex if has eleven or less edges and mutually independent

Separating Chain Avoids many extra edges Uses regularization instead of triangulation Builds Y-Monotone Subdivision Hierarchy based on groups of regions, not triangles Polygonal regions allowed, not just triangular, so fewer Original implementation slower than K-structure Faster when using Layered DAG Improved storage using Gap Tree and Layered DAG Y-Monotone Subdivision No vertical line intersect a region s boundary more than twice Creates polygons that are convex in x, not in y Every vertex has edge to left and right in x Regularization creates a Y-Monotone Subdivision from a polygonal map Adds endpoints at extremes in x And adds edges To get edges to the left and right of each vertex To ensure that regions with boundaries crossed more than twice are broken up

Regularization of Polygonal Maps Insert vertices a,d at extreme edges in x Add edges CD and JK, aa, ab, Ld, Md to have edges to left and right of every vertex Broken lines are added edges Not as many extra edges as triangulation Polygonal Map Y-Monotone Subdivision Region Ordering Region number higher than region below (compared in y) Only partial ordering (region 5 and 6 could have different numbers) Can be used to create region tree Need to determine separators S i, set of edges that reach from a to d (all x) Ordering used later for traversing the tree in point location Region Tree

Finding Separating Chains Boundary between regions as list of vertices S 2 is between (0,1) and (2,3,4,5,6,7) S 2 is then aaceikmd and S 7 is abcdgjkld Separating Chain Tree Region tree with separating chains stored in non-leaf nodes Storage can be O(n 2 ) since storing edges multiple times

Gap Tree Edges stored with first separator that contains it, not lower levels Edges only stored once Reduced storage over Chain Tree Notation shows vertices Chain Tree Gap Tree Point Location in Chain Tree or Gap Tree Start at root with valid regions (0-7) Search chain for segment with right x interval (EI) Check if above or below segment (below) Update valid regions (1 stored with edge EI as region below) to (0,1) Move to least common ancestor of valid regions, possibly skipping levels, check chain (skip to S 1 as it is the least common ancestor of regions 0-1)

Gap Tree Search Performance Gap Tree with m edges searches each separating chain for correct x interval, O(log(m)) since sorted n separating chains in gap tree, so search log(n) separating chains at worst Total search then O(log(m)log(n)) ~O(log 2 (m)) Layered DAG breaks x axis into intervals to speed up search, achieving O(log(m)) Don t redo search for correct x interval Layered DAG Avoids searching separating chains with hierarchy Pointers from x-interval of one chain to the next Avoid O(m 2 ) space by allowing two child intervals If only one child per parent would get worst case O(m 2 ) space For good worst-case space (linear in m edges) instead of m 2 need to have splits But limit parent interval to two child intervals Adds complexity to the structure, requires bottom-up construction Combines edges, gaps, and vertices in representation By Edelsbrunner, Guibas, and Stolfi

Building a Layered DAG Start with lowest levels of the gap tree (L1, L3, L5, L7) Insert gaps (dashed squares) and edges (solid squares) separated by vertices (circles) Links from vertices to edges and gaps (arrows) Bottom-up construction Edges and gaps from higher levels will link down Building a Layered DAG Next level is separating chain but only two intervals in child allowed per parent interval (L2) Edge or gap replicated (EI) Take alternating vertices up to next level to guarantee only 2 child intervals Include links from parent interval to child interval(s) Pointer to vertex if two child intervals since need to check which interval Otherwise pointer to edge/gap

Build a Layered DAG Iteratively build up, maintaining only two child intervals per parent interval Maintain accurate names from the separating chain (AC in red) not names from vertices (would have been BC) Note that adding alternating vertices from children is only one way to guarantee two child to one parent Other methods would simplify structure but complicate build Point Location in DAG Can use binary tree to access root separating chain Compare against x-value of vertices to traverse binary tree Trace down through links in Layered DAG, comparing with the edges to traverse, comparing against x value of vertices if two child edges

Summary Avoid extra edges Use regularization instead of triangulation Like Gap Tree, Layered DAG Hierarchy based on polygons, not triangles Fewer regions if allowed to be polygonal, not just triangular Need fast Hierarchical implementation Separating Chains and Gap Tree hierarchy requires redundant search Faster when using Layered DAG Improve storage by storing only once Gap Tree and Layered DAG