A Framework for Supporting the Class of Space Partitioning
Total Page:16
File Type:pdf, Size:1020Kb

Load more
Recommended publications
-
L11: Quadtrees CSE373, Winter 2020
L11: Quadtrees CSE373, Winter 2020 Quadtrees CSE 373 Winter 2020 Instructor: Hannah C. Tang Teaching Assistants: Aaron Johnston Ethan Knutson Nathan Lipiarski Amanda Park Farrell Fileas Sam Long Anish Velagapudi Howard Xiao Yifan Bai Brian Chan Jade Watkins Yuma Tou Elena Spasova Lea Quan L11: Quadtrees CSE373, Winter 2020 Announcements ❖ Homework 4: Heap is released and due Wednesday ▪ Hint: you will need an additional data structure to improve the runtime for changePriority(). It does not affect the correctness of your PQ at all. Please use a built-in Java collection instead of implementing your own. ▪ Hint: If you implemented a unittest that tested the exact thing the autograder described, you could run the autograder’s test in the debugger (and also not have to use your tokens). ❖ Please look at posted QuickCheck; we had a few corrections! 2 L11: Quadtrees CSE373, Winter 2020 Lecture Outline ❖ Heaps, cont.: Floyd’s buildHeap ❖ Review: Set/Map data structures and logarithmic runtimes ❖ Multi-dimensional Data ❖ Uniform and Recursive Partitioning ❖ Quadtrees 3 L11: Quadtrees CSE373, Winter 2020 Other Priority Queue Operations ❖ The two “primary” PQ operations are: ▪ removeMax() ▪ add() ❖ However, because PQs are used in so many algorithms there are three common-but-nonstandard operations: ▪ merge(): merge two PQs into a single PQ ▪ buildHeap(): reorder the elements of an array so that its contents can be interpreted as a valid binary heap ▪ changePriority(): change the priority of an item already in the heap 4 L11: Quadtrees CSE373, -
Search Trees
Lecture III Page 1 “Trees are the earth’s endless effort to speak to the listening heaven.” – Rabindranath Tagore, Fireflies, 1928 Alice was walking beside the White Knight in Looking Glass Land. ”You are sad.” the Knight said in an anxious tone: ”let me sing you a song to comfort you.” ”Is it very long?” Alice asked, for she had heard a good deal of poetry that day. ”It’s long.” said the Knight, ”but it’s very, very beautiful. Everybody that hears me sing it - either it brings tears to their eyes, or else -” ”Or else what?” said Alice, for the Knight had made a sudden pause. ”Or else it doesn’t, you know. The name of the song is called ’Haddocks’ Eyes.’” ”Oh, that’s the name of the song, is it?” Alice said, trying to feel interested. ”No, you don’t understand,” the Knight said, looking a little vexed. ”That’s what the name is called. The name really is ’The Aged, Aged Man.’” ”Then I ought to have said ’That’s what the song is called’?” Alice corrected herself. ”No you oughtn’t: that’s another thing. The song is called ’Ways and Means’ but that’s only what it’s called, you know!” ”Well, what is the song then?” said Alice, who was by this time completely bewildered. ”I was coming to that,” the Knight said. ”The song really is ’A-sitting On a Gate’: and the tune’s my own invention.” So saying, he stopped his horse and let the reins fall on its neck: then slowly beating time with one hand, and with a faint smile lighting up his gentle, foolish face, he began.. -
Efficient Evaluation of Radial Queries Using the Target Tree
Efficient Evaluation of Radial Queries using the Target Tree Michael D. Morse Jignesh M. Patel William I. Grosky Department of Electrical Engineering and Computer Science Dept. of Computer Science University of Michigan, University of Michigan-Dearborn {mmorse, jignesh}@eecs.umich.edu [email protected] Abstract from a number of chosen points on the surface of the brain and end in the tumor. In this paper, we propose a novel indexing structure, We use this problem to motivate the efficient called the target tree, which is designed to efficiently evaluation of a new type of spatial query, which we call a answer a new type of spatial query, called a radial query. radial query, which will allow for the efficient evaluation A radial query seeks to find all objects in the spatial data of surgical trajectories in brain surgeries. The radial set that intersect with line segments emanating from a query is represented by a line in multi-dimensional space. single, designated target point. Many existing and The results of the query are all objects in the data set that emerging biomedical applications use radial queries, intersect the line. An example of such a query is shown in including surgical planning in neurosurgery. Traditional Figure 1. The data set contains four spatial objects, A, B, spatial indexing structures such as the R*-tree and C, and D. The radial query is the line emanating from the quadtree perform poorly on such radial queries. A target origin (the target point), and the result of this query is the tree uses a regular hierarchical decomposition of space set that contains the objects A and B. -
The Skip Quadtree: a Simple Dynamic Data Structure for Multidimensional Data
The Skip Quadtree: A Simple Dynamic Data Structure for Multidimensional Data David Eppstein† Michael T. Goodrich† Jonathan Z. Sun† Abstract We present a new multi-dimensional data structure, which we call the skip quadtree (for point data in R2) or the skip octree (for point data in Rd , with constant d > 2). Our data structure combines the best features of two well-known data structures, in that it has the well-defined “box”-shaped regions of region quadtrees and the logarithmic-height search and update hierarchical structure of skip lists. Indeed, the bottom level of our structure is exactly a region quadtree (or octree for higher dimensional data). We describe efficient algorithms for inserting and deleting points in a skip quadtree, as well as fast methods for performing point location and approximate range queries. 1 Introduction Data structures for multidimensional point data are of significant interest in the computational geometry, computer graphics, and scientific data visualization literatures. They allow point data to be stored and searched efficiently, for example to perform range queries to report (possibly approximately) the points that are contained in a given query region. We are interested in this paper in data structures for multidimensional point sets that are dynamic, in that they allow for fast point insertion and deletion, as well as efficient, in that they use linear space and allow for fast query times. Related Previous Work. Linear-space multidimensional data structures typically are defined by hierar- chical subdivisions of space, which give rise to tree-based search structures. That is, a hierarchy is defined by associating with each node v in a tree T a region R(v) in Rd such that the children of v are associated with subregions of R(v) defined by some kind of “cutting” action on R(v). -
Principles of Computer Game Design and Implementation
Principles of Computer Game Design and Implementation Lecture 14 We already knew • Collision detection – high-level view – Uniform grid 2 Outline for today • Collision detection – high level view – Other data structures 3 Non-Uniform Grids • Locating objects becomes harder • Cannot use coordinates to identify cells Idea: choose the cell size • Use trees and navigate depending on what is put them to locate the cell. there • Ideal for static objects 4 Quad- and Octrees Quadtree: 2D space partitioning • Divide the 2D plane into 4 (equal size) quadrants – Recursively subdivide the quadrants – Until a termination condition is met 5 Quad- and Octrees Octree: 3D space partitioning • Divide the 3D volume into 8 (equal size) parts – Recursively subdivide the parts – Until a termination condition is met 6 Termination Conditions • Max level reached • Cell size is small enough • Number of objects in any sell is small 7 k-d Trees k-dimensional trees • 2-dimentional k-d tree – Divide the 2D volume into 2 2 parts vertically • Divide each half into 2 parts 3 horizontally – Divide each half into 2 parts 1 vertically » Divide each half into 2 parts 1 horizontally • Divide each half …. 2 3 8 k-d Trees vs (Quad-) Octrees • For collision detection k-d trees can be used where (quad-) octrees are used • k-d Trees give more flexibility • k-d Trees support other functions – Location of points – Closest neighbour • k-d Trees require more computational resources 9 Grid vs Trees • Grid is faster • Trees are more accurate • Combinations can be used Cell to tree Grid to tree 10 Binary Space Partitioning • BSP tree: recursively partition tree w.r.t. -
Computation of Potentially Visible Set for Occluded Three-Dimensional Environments
Computation of Potentially Visible Set for Occluded Three-Dimensional Environments Derek Carr Advisor: Prof. William Ames Boston College Computer Science Department May 2004 Page 1 Abstract This thesis deals with the problem of visibility culling in interactive three- dimensional environments. Included in this thesis is a discussion surrounding the issues involved in both constructing and rendering three-dimensional environments. A renderer must sort the objects in a three-dimensional scene in order to draw the scene correctly. The Binary Space Partitioning (BSP) algorithm can sort objects in three- dimensional space using a tree based data structure. This thesis introduces the BSP algorithm in its original context before discussing its other uses in three-dimensional rendering algorithms. Constructive Solid Geometry (CSG) is an efficient interactive modeling technique that enables an artist to create complex three-dimensional environments by performing Boolean set operations on convex volumes. After providing a general overview of CSG, this thesis describes an efficient algorithm for computing CSG exp ression trees via the use of a BSP tree. When rendering a three-dimensional environment, only a subset of objects in the environment is visible to the user. We refer to this subset of objects as the Potentially Visible Set (PVS). This thesis presents an algorithm that divides an environment into a network of convex cellular volumes connected by invisible portal regions. A renderer can then utilize this network of cells and portals to compute a PVS via a depth first traversal of the scene graph in real-time. Finally, this thesis discusses how a simulation engine might exploit this data structure to provide dynamic collision detection against the scene graph. -
Introduction to Computer Graphics Farhana Bandukwala, Phd Lecture 17: Hidden Surface Removal – Object Space Algorithms Outline
Introduction to Computer Graphics Farhana Bandukwala, PhD Lecture 17: Hidden surface removal – Object Space Algorithms Outline • BSP Trees • Octrees BSP Trees · Binary space partitioning trees · Steps: 1. Group scene objects into clusters (clusters of polygons) 2. Find plane, if possible that wholly separates clusters 3. Clusters on same side of plane as viewpoint can obscure clusters on other side 4. Each cluster can be recursively subdivided P1 P1 back A front D P2 P2 3 1 front back front back P2 B D C A B C 3,1,2 3,2,1 1,2,3 2,1,3 2 BSP Trees,contd · Suppose the tree was built with polygons: 1. Pick 1 polygon (arbitrary) as root 2. Its plane is used to partition space into front/back 3. All intersecting polygons are split into two 4. Recursively pick polygons from sub-spaces to partition space further 5. Algorithm terminates when each node has 1 polygon only P1 P1 back P6 front P3 P2 back front back P5 P2 P4 P3 P4 P6 P5 BSP Trees,contd · Traverse tree in order: 1. Start from root node 2. If view point in front: a) Draw polygons in back branch b) Then root polygon c) Then polygons in front branch 3. If view point in back: a) Draw polygons in front branch b) Then root polygon c) Then polygons in back branch 4. Recursively perform front/back test and traverse child nodes P1 P1 back P6 front P3 P2 back front back P5 P2 P4 P3 P4 P6 P5 Octrees · Consider splitting volume into 8 octants · Build tree containing polygons in each octant · If an octant has more than minimum number of polygons, split again 4 5 4 5 4 5 1 0 5 0 0 1 5 5 0 1 1 1 7 0 1 0 2 3 5 7 7 3 3 2 3 2 3 Octrees, contd · Best suited for orthographic projection · Display polygons in octant farthest from viewer first · Then those nodes that share a border with this octant · Recursively display neighboring octant · Last display closest octant Octree, example y 2 4 Viewpoint 8 11 6 12 114 12 14 9 6 10 13 1 5 3 5 x z Octants labeled in the order drawn given the viewpoint shown here. -
CS 240 – Data Structures and Data Management Module 8
CS 240 – Data Structures and Data Management Module 8: Range-Searching in Dictionaries for Points Mark Petrick Based on lecture notes by many previous cs240 instructors David R. Cheriton School of Computer Science, University of Waterloo Fall 2020 References: Goodrich & Tamassia 21.1, 21.3 version 2020-10-27 11:48 Petrick (SCS, UW) CS240 – Module 8 Fall 2020 1 / 38 Outline 1 Range-Searching in Dictionaries for Points Range Searches Multi-Dimensional Data Quadtrees kd-Trees Range Trees Conclusion Petrick (SCS, UW) CS240 – Module 8 Fall 2020 Outline 1 Range-Searching in Dictionaries for Points Range Searches Multi-Dimensional Data Quadtrees kd-Trees Range Trees Conclusion Petrick (SCS, UW) CS240 – Module 8 Fall 2020 Range searches So far: search(k) looks for one specific item. New operation RangeSearch: look for all items that fall within a given range. 0 I Input: A range, i.e., an interval I = (x, x ) It may be open or closed at the ends. I Want: Report all KVPs in the dictionary whose key k satisfies k ∈ I Example: 5 10 11 17 19 33 45 51 55 59 RangeSerach( (18,45] ) should return {19, 33, 45} Let s be the output-size, i.e., the number of items in the range. We need Ω(s) time simply to report the items. Note that sometimes s = 0 and sometimes s = n; we therefore keep it as a separate parameter when analyzing the run-time. Petrick (SCS, UW) CS240 – Module 8 Fall 2020 2 / 38 Range searches in existing dictionary realizations Unsorted list/array/hash table: Range search requires Ω(n) time: We have to check for each item explicitly whether it is in the range. -
Hierarchical Bounding Volumes Grids Octrees BSP Trees Hierarchical
Spatial Data Structures HHiieerraarrcchhiiccaall BBoouunnddiinngg VVoolluummeess GGrriiddss OOccttrreeeess BBSSPP TTrreeeess 11/7/02 Speeding Up Computations • Ray Tracing – Spend a lot of time doing ray object intersection tests • Hidden Surface Removal – painters algorithm – Sorting polygons front to back • Collision between objects – Quickly determine if two objects collide Spatial data-structures n2 computations 3 Speeding Up Computations • Ray Tracing – Spend a lot of time doing ray object intersection tests • Hidden Surface Removal – painters algorithm – Sorting polygons front to back • Collision between objects – Quickly determine if two objects collide Spatial data-structures n2 computations 3 Speeding Up Computations • Ray Tracing – Spend a lot of time doing ray object intersection tests • Hidden Surface Removal – painters algorithm – Sorting polygons front to back • Collision between objects – Quickly determine if two objects collide Spatial data-structures n2 computations 3 Speeding Up Computations • Ray Tracing – Spend a lot of time doing ray object intersection tests • Hidden Surface Removal – painters algorithm – Sorting polygons front to back • Collision between objects – Quickly determine if two objects collide Spatial data-structures n2 computations 3 Speeding Up Computations • Ray Tracing – Spend a lot of time doing ray object intersection tests • Hidden Surface Removal – painters algorithm – Sorting polygons front to back • Collision between objects – Quickly determine if two objects collide Spatial data-structures n2 computations 3 Spatial Data Structures • We’ll look at – Hierarchical bounding volumes – Grids – Octrees – K-d trees and BSP trees • Good data structures can give speed up ray tracing by 10x or 100x 4 Bounding Volumes • Wrap things that are hard to check for intersection in things that are easy to check – Example: wrap a complicated polygonal mesh in a box – Ray can’t hit the real object unless it hits the box – Adds some overhead, but generally pays for itself. -
CS106X Handout
CS106X Autumn 2015 Cynthia Lee Section 6 (Week 7) Handout Problem and solution authors include Jerry Cain and Cynthia Lee. Problem 1: Tree Rotations Recall in class we saw the video of the insertions to a red-black tree, which first followed the usual insert algorithm (go left if key being inserted is less than current, go right if greater than current), and then did additional “rotations” that rebalanced the tree. Now is your chance to explore the code that makes the rebalancing happen. Rotations have other uses; for example, in Splay trees, they can be used to migrate more commonly-used elements towards the root. Suppose that a binary search tree has grown to store the first seven integers, as has the tree drawn to the right. Suppose that a program then searches for the 5. Clearly the search would succeed, but the standard implementation would leave the node in the same position, and later searches for the same element would take the same amount of time. A cleverer implementation would anticipate another search for 5 is likely, and would change the pointer structure in the vicinity of the 5 by performing what is called a left-rotation. A left rotation pivots around the link between a node and its parent, so that the child of the link rotates counterclockwise to become the parent of its parent. In our example above, a left- rotation would change the structure according to the figure on the right. Note that the restructuring is a local operation, in that only a constant number of pointers need to be updated. -
Chapter 2: the Game Core
Lecture Notes Managing and Mining Multiplayer Online Games Summer Term 2018 Chapter 2: The Game Core Script © 2012-2018 Matthias Schubert http://www.dbs.ifi.lmu.de/cms/VO_Managing_Massive_Multiplayer_Online_Games 1 Chapter Overview • Modelling the state of a game (Game State) • Modelling time (turn- and tick-system) • Handling actions • Interaction with other game components • Spatial management and distributing the game state 2 Internal Representation of games ID Type PosX PosY Health … 412 Knight 1023 2142 98 … 232 Soldier 1139 2035 20 … 245 Cleric 1200 2100 40 … … user view Game State Good Design: strict separation of data and display (Model-View-Controller Pattern) • MMO-Server: Managing the game state / no visualization necessary • MMO-Client: only parts of the game state but need for I/O and visualization. supports the implementation of various clients for the same game 3 Game State All data representing the current state of the game • object, attribute, relationship, … ( compare ER or UML models ) • models all alterable information • lists all game entities • contains all attributes of game entities • information concerning the whole game not necessarily in the Game State: • static information • environmental models/maps • preset attributes of game entities 4 Game Entities Game entities = objects in the game examples for game entities: • units in a RTS-Game • squares or figures in a board game • characters in a RPG • items • environmental objects (chests, doors, ...) 5 Attributes and Relationships Properties of a game entity that -
Geometric Search
Geometric Search range search quad- and kD-trees • range search • quad and kd trees intersection search • intersection search VLSI rules checking • VLSI rules check References: Algorithms 2nd edition, Chapter 26-27 Intro to Algs and Data Structs, Section Copyright © 2007 by Robert Sedgewick and Kevin Wayne. 3 Overview 1D Range Search Types of data. Points, lines, planes, polygons, circles, ... Extension to symbol-table ADT with comparable keys. This lecture. Sets of N objects. ! Insert key-value pair. ! Search for key k. ! Geometric problems extend to higher dimensions. How many records have keys between k1 and k2? ! ! Good algorithms also extend to higher dimensions. Iterate over all records with keys between k1 and k2. ! Curse of dimensionality. Application: database queries. Basic problems. ! Range searching. insert B B ! Nearest neighbor. insert D B D insert A A B D ! Finding intersections of geometric objects. Geometric intuition. insert I A B D I ! Keys are point on a line. insert H A B D H I ! How many points in a given interval? insert F A B D F H I insert P A B D F H I P count G to K 2 search G to K H I 2 4 1D Range search: implementations 2D Orthogonal range Ssearch: Grid implementation Range search. How many records have keys between k1 and k2? Grid implementation. [Sedgewick 3.18] ! Divide space into M-by-M grid of squares. ! Ordered array. Slow insert, binary search for k1 and k2 to find range. Create linked list for each square. Hash table. No reasonable algorithm (key order lost in hash).