# PM2 QuadTree Demo

#### PM2 Quadtree

Recursively decompose the underlying space into four equal area
blocks as long as a block contains more than one line segment unless
the line segments are all incident at the same vertex regardless of
its location (i.e., it need not be in the same block).
For more
details, see pages 365-369 and 806-807 of Samet,
*Foundations of Multidimensional and Metric Data Structures*
or, see pages 257-261 of Samet, *Design and
Analysis of Spatial Data Structures*.

#### Instructions

**Insert** mode:

- click and drag to specify the line to insert
- press CTRL when defining either end point of any line to snap to nearest
already existing point

**Delete** mode:

- click to delete the nearest line

**Search** mode:

- Click and drag to define a rectangle. Lines inside this rectangle will be returned based on the
*Search mode*:
*Inside window* - the entire line (i.e., both of its endpoints) are
in the query window in order to return the line
*Crosses window* - the entire line passes through the query window
(i.e., both of its endpoints lie outside the window)
*Intersects window once* - the line crosses just one of the
boundaries of the window (i.e., only one of the endpoints of the line lies
inside the window)