240 likes | 353 Views
Computing Contour Maps & Answering Contour Queries Pankaj K. Agarwal Joint work with. Lars Arge. Thomas Molhave. Bardia Sadri. The TerraStream Modules. What is a Terrain. Representation: Triangulated Irregular Network (TIN). Level Sets, Contours, and Contour Maps. Computing Contours Maps.
E N D
Computing Contour Maps & Answering Contour Queries Pankaj K. Agarwal Joint work with Lars Arge ThomasMolhave Bardia Sadri .
Answering Contour Queries Preprocess Terrain S into a data structure Given h, compute contour at height h.
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 Contour Maps
Internal Memory Algorithm 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 edges For massive terrains I/O efficiency is bad: O(N+T) instead of O((N+T)/B)
I/O-Efficient Algorithms Answering a contour query: Preprocessing O(NlogBN), Space: O(N/B) blocks Query: O(logBN+T/B)
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) [ [ [ ] [ ] ] ] Our results Ordering Theorem:A total ordering, called C-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 Algorithm • Sort the vertices in the order of increasing height. • Compute the C-ordering of the triangles • Determine the rank of each triangle in C-ordreing. • Scan the triangles in the order of increasing height of their lowest vertices: • If a triangle intersects some level-set of interest add it to a buffer-tree using its rank for the key. • When the scan line reaches a height of interest, • flush the buffer tree • use the stack-based algorithm to extract individual contours. • Delete any triangle that does not intersect the next level-set. Use persistent buffer trees to store C-ordering at all heights!
Critical Points saddle maximum minimum regular
[ [ [ ] [ ] ] ] What does simplification do to contours?
(We believe) Our approach extends to higher genus 2-manifolds, i.e., contour queries in a fixed direction Extensions
Computing iso-surface maps or answering iso-surface queries in the I/O model Future Directions 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