. Computing Contour Maps & Computing Contour Maps & Answering Contour Queries Answering Contour Queries Pankaj K. Agarwal Pankaj K. Agarwal Joint work with Lars Lars Arge Arge Thomas Thomas Molhave Molhave Bardia Sadri Bardia Sadri
Jan 15, 2016
.Computing Contour Maps & Computing Contour Maps & Answering Contour QueriesAnswering Contour Queries
Pankaj K. AgarwalPankaj K. Agarwal
Joint work with
Lars ArgeLars ArgeThomasThomas MolhaveMolhaveBardia SadriBardia Sadri
The TerraStream ModulesThe TerraStream Modules
What is a TerrainWhat is a Terrain
Representation: Triangulated Irregular Network Representation: Triangulated Irregular Network (TIN)(TIN)
Level Sets, Contours, and Contour MapsLevel Sets, Contours, and Contour Maps
Computing Contours MapsComputing Contours Maps
Answering Contour QueriesAnswering Contour Queries
Preprocess Terrain into a data structure
Given h, compute contour at height h.
Contour MapsContour Maps
Contour MapsContour Maps
• Usage of contour lines (also called iso-contours, isogons, etc) goes back to at least 17th century
Philosophical Transactions of Royal Society of London, 1779
Find a seed point on each contour and traverse the triangulation to trace each contour
Use a simple data structure to compute seed points
Query time: O(log N + T) T: #contour edges
Contour map: O(Nlog N +T) T: #contour map edgesFor massive terrains
I/O efficiency is bad: O(N+T) instead of O((N+T)/B)
Internal Memory AlgorithmInternal Memory Algorithm
I/O-Efficient AlgorithmsI/O-Efficient Algorithms
Answering a contour query:
Preprocessing O(NlogBN), Space: O(N/B) blocks Query: O(logBN+T/B)
Our resultsOur results• Computing contour maps: O(Sort(N)+T/B) I/Os
• Answering contour queries
• Preprocessing Time: O(Sort(N)) I/Os
• Space: O(N/B) disk blocks
• Query: O(logBN+T/B)
[[ ]][[ ]] [[ ]][[ ]]
Ordering Theorem:Ordering Theorem: A total ordering, called C-orderingC-ordering, of triangles can be computed in O(Sort(N)) I/Os s.t. the subsequence of triangles intersecting a contour appears along the contour and contours in a level set are broken in nested order.
Individual contours can be retrieved in O(T/B)I/Os from this ordering
The AlgorithmThe Algorithm
1. Sort the vertices in the order of increasing height.2. Compute the C-ordering of the triangles3. Determine the rank of each triangle in C-ordreing.4. Scan the triangles in the order of increasing height of
their lowest vertices:5. If a triangle intersects some level-set of interest add it
to a buffer-tree using its rank for the key.6. When the scan line reaches a height of interest,
1.flush the buffer tree2. use the stack-based algorithm to extract individual contours.
7. Delete any triangle that does not intersect the next level-set.
Use persistent buffer trees to store C-ordering at all heights!
Computing the C-Ordering
Height GraphHeight Graph
Critical PointsCritical Points
maximum
saddle
minimum
regular
Simple TerrainsSimple Terrains
Positive and Negative SaddlesPositive and Negative Saddles
Positive and Negative Cut-TreesPositive and Negative Cut-Trees
Simplifying Terrains by SurgerySimplifying Terrains by Surgery
What does simplification do to contours?What does simplification do to contours?
[[ ]][[ ]] [[ ]][[ ]]
ExtensionsExtensions
• (We believe) Our approach extends to higher genus 2-manifolds, i.e., contour queries in a fixed direction
Future DirectionsFuture Directions
Computing iso-surface maps or answering iso-surface queries in the I/O model
Preprocess a given 2-manifold M, represented as a triangulation, in a linear-size data structure so that
For a query plane h, report the contours of M∩h quickly
Time: O(n2/3+T) in RAM Model
Idea: grow contours contiguously but in parallelIdea: grow contours contiguously but in parallel