Skeleton Structures in Computational Geometry
An introduction with GIS in mind
Stefan Huber
January 7, 2013
Stefan Huber: Skeleton Structures in Computational Geometry 1 of 25
Skeleton Structures in Computational Geometry An introduction with - - PowerPoint PPT Presentation
Skeleton Structures in Computational Geometry An introduction with GIS in mind Stefan Huber January 7, 2013 Stefan Huber: Skeleton Structures in Computational Geometry 1 of 25 Motivation Is there a path for the vehicle V from p to q within
Stefan Huber: Skeleton Structures in Computational Geometry 1 of 25
Stefan Huber: Skeleton Structures in Computational Geometry 2 of 25
◮ We would like to have a geometric structure that
◮ lets us easily identify “bottlenecks” of P and Stefan Huber: Skeleton Structures in Computational Geometry 2 of 25
◮ We would like to have a geometric structure that
◮ lets us easily identify “bottlenecks” of P and ◮ allows us to reuse known path-finding algorithms (on graphs). Stefan Huber: Skeleton Structures in Computational Geometry 2 of 25
◮ We would like to have a geometric structure that
◮ lets us easily identify “bottlenecks” of P and ◮ allows us to reuse known path-finding algorithms (on graphs).
◮ For short: we need information about the shape of P.
◮ Skeleton structures can do that. Stefan Huber: Skeleton Structures in Computational Geometry 2 of 25
◮ plane → higher dimensions ◮ points → straight-line segments, circular arcs, . . . ◮ Euclidean → Lk-norms, convex distance functions, . . .
Stefan Huber: Skeleton Structures in Computational Geometry 3 of 25
◮ Plane tessellated into cells around input sites.
◮ Points within the cell of site i are closer to i than to all other sites. ◮ Bisectors are parabolic/elliptic arcs.
◮ V(S) is the Voronoi diagram of S. That is, V(S) consists of the boundaries
Stefan Huber: Skeleton Structures in Computational Geometry 4 of 25
Stefan Huber: Skeleton Structures in Computational Geometry 5 of 25
◮ Endpoints of segments and arcs are input sites, too. ◮ Voronoi cell of a site is restricted to “cone of influence”.
Stefan Huber: Skeleton Structures in Computational Geometry 5 of 25
◮ Endpoints of segments and arcs are input sites, too. ◮ Voronoi cell of a site is restricted to “cone of influence”.
Stefan Huber: Skeleton Structures in Computational Geometry 5 of 25
◮ P consists of vertices and edges → take them as the set S of input sites. ◮ Short-hand notation: V(P) is the resulting Voronoi diagram, i.e., V(S).
◮ P is tessellated into Voronoi cells. Stefan Huber: Skeleton Structures in Computational Geometry 6 of 25
◮ P consists of vertices and edges → take them as the set S of input sites. ◮ Short-hand notation: V(P) is the resulting Voronoi diagram, i.e., V(S).
◮ P is tessellated into Voronoi cells. ◮ Sometimes V(P) is considered to be restricted to P. Stefan Huber: Skeleton Structures in Computational Geometry 6 of 25
◮ P consists of vertices and edges → take them as the set S of input sites. ◮ Short-hand notation: V(P) is the resulting Voronoi diagram, i.e., V(S).
◮ P is tessellated into Voronoi cells. ◮ Sometimes V(P) is considered to be restricted to P. ◮ Sometimes, P may have holes and its boundary may also comprise circular
Stefan Huber: Skeleton Structures in Computational Geometry 6 of 25
◮ The clearance disk C(p) is the largest disk within P centered at the point p.
◮ Its radius is the clearance radius.
Stefan Huber: Skeleton Structures in Computational Geometry 7 of 25
◮ The clearance disk C(p) is the largest disk within P centered at the point p.
◮ Its radius is the clearance radius.
◮ Bottleneck: a Voronoi node with locally minimal clearance radius.
Stefan Huber: Skeleton Structures in Computational Geometry 7 of 25
◮ The clearance disk C(p) is the largest disk within P centered at the point p.
◮ Its radius is the clearance radius.
◮ Bottleneck: a Voronoi node with locally minimal clearance radius.
Stefan Huber: Skeleton Structures in Computational Geometry 7 of 25
Stefan Huber: Skeleton Structures in Computational Geometry 8 of 25
◮ Compute V(P). Consider the bottlenecks, whose clearance disk is smaller
Stefan Huber: Skeleton Structures in Computational Geometry 8 of 25
◮ Compute V(P). Consider the bottlenecks, whose clearance disk is smaller
◮ Project p resp. q to points p′ resp. q′ on Voronoi edges.
Stefan Huber: Skeleton Structures in Computational Geometry 8 of 25
◮ Compute V(P). Consider the bottlenecks, whose clearance disk is smaller
◮ Project p resp. q to points p′ resp. q′ on Voronoi edges. ◮ Find a path from p′ to q′ on V(P) using ordinary graph algorithms.
Stefan Huber: Skeleton Structures in Computational Geometry 8 of 25
◮ The medial axis M(P) consists of those points p within P whose minimum
◮ That is, the clearance disk at p touches P at two or more points. ◮ Hence, M(P) ⊆ V(P).
◮ M(P) is easily extracted from V(P). Stefan Huber: Skeleton Structures in Computational Geometry 9 of 25
◮ The medial axis M(P) consists of those points p within P whose minimum
◮ That is, the clearance disk at p touches P at two or more points. ◮ Hence, M(P) ⊆ V(P).
◮ M(P) is easily extracted from V(P). Stefan Huber: Skeleton Structures in Computational Geometry 9 of 25
◮ Kind of complementary problem to bottleneck detection.
Stefan Huber: Skeleton Structures in Computational Geometry 10 of 25
◮ Kind of complementary problem to bottleneck detection.
◮ Take the Voronoi node with largest clearance radius.
Stefan Huber: Skeleton Structures in Computational Geometry 10 of 25
◮ M(P) and the clearance radius function r(.) on M(P) can together
◮ Besides “thickness”, M(P) contains the essential information of the “shape”
◮ For instance, holes in P correspond to cycles in M(P).
Stefan Huber: Skeleton Structures in Computational Geometry 11 of 25
◮ How to find the center-lines of the rivers? ◮ How to find the main branches? ◮ How to prune small creeks? ◮ Which river is connected with which? ◮ How to remove details from a map, i.e., collapse small rivers or streets to a
Stefan Huber: Skeleton Structures in Computational Geometry 12 of 25
Stefan Huber: Skeleton Structures in Computational Geometry 13 of 25
◮ How to compute all points inside/outside of P that have a distance of exactly
Stefan Huber: Skeleton Structures in Computational Geometry 14 of 25
◮ How to compute all points inside/outside of P that have a distance of exactly
Stefan Huber: Skeleton Structures in Computational Geometry 14 of 25
◮ How to compute all points inside/outside of P that have a distance of exactly
Stefan Huber: Skeleton Structures in Computational Geometry 14 of 25
Stefan Huber: Skeleton Structures in Computational Geometry 15 of 25
Stefan Huber: Skeleton Structures in Computational Geometry 15 of 25
◮ The Voronoi diagram of a simple polygon P can be characterized by means
Stefan Huber: Skeleton Structures in Computational Geometry 16 of 25
◮ Replace circular arcs by straight-line caps. ◮ Each wavefront edge is parallel to an edge of P and moves with equal speed.
◮ The straight skeleton is defined by interference patterns of “mitered-offset
Stefan Huber: Skeleton Structures in Computational Geometry 17 of 25
◮ Topological changes (events) during the wavefront propagation:
◮ Edge event: a wavefront edge shrinks to zero length. ◮ Split event: a reflex wavefront vertex splits another wavefront edge.
Stefan Huber: Skeleton Structures in Computational Geometry 18 of 25
◮ Topological changes (events) during the wavefront propagation:
◮ Edge event: a wavefront edge shrinks to zero length. ◮ Split event: a reflex wavefront vertex splits another wavefront edge.
◮ Straight skeleton S(P): set of loci of all wavefront vertices.
Stefan Huber: Skeleton Structures in Computational Geometry 18 of 25
◮ Topological changes (events) during the wavefront propagation:
◮ Edge event: a wavefront edge shrinks to zero length. ◮ Split event: a reflex wavefront vertex splits another wavefront edge.
◮ Straight skeleton S(P): set of loci of all wavefront vertices.
◮ Each node of S(P) is the locus of an event. ◮ Each arc is on the bisector of polygon edges. ◮ Each face is swept out by the wavefront edge emanated by an input edge. Stefan Huber: Skeleton Structures in Computational Geometry 18 of 25
◮ PSLG: planar straight-line graph, i.e., a bunch of straight-line segments that
◮ [Aichholzer and Aurenhammer, 1998]: straight skeleton S(G) of a PSLG G
◮ Each input edge sends out two parallel wavefront copies. ◮ Each terminal vertex sends out an additional wavefront edge. Stefan Huber: Skeleton Structures in Computational Geometry 19 of 25
◮ PSLG: planar straight-line graph, i.e., a bunch of straight-line segments that
◮ [Aichholzer and Aurenhammer, 1998]: straight skeleton S(G) of a PSLG G
◮ Each input edge sends out two parallel wavefront copies. ◮ Each terminal vertex sends out an additional wavefront edge. Stefan Huber: Skeleton Structures in Computational Geometry 19 of 25
◮ PSLG: planar straight-line graph, i.e., a bunch of straight-line segments that
◮ [Aichholzer and Aurenhammer, 1998]: straight skeleton S(G) of a PSLG G
◮ Each input edge sends out two parallel wavefront copies. ◮ Each terminal vertex sends out an additional wavefront edge. Stefan Huber: Skeleton Structures in Computational Geometry 19 of 25
◮ Consider the wavefront propagation in three-dimensional space-time, with the
◮ An isoline of the resulting T (G) corresponds to the wavefront at some point
◮ Projecting the valleys and ridges onto R2 gives us S(G) again.
◮ Knowing T (G) is equivalent to knowing S(G).
Stefan Huber: Skeleton Structures in Computational Geometry 20 of 25
◮ Let us consider a map with a river given as a polygonal area. ◮ How to reduce the level of detail by collapsing the river’s area to a line? ◮ [Haunert and Sester, 2008]:
◮ Compute S(P)1, which tessellates P into faces. ◮ To each edge e of P belongs a face f (e) and each edge e also belongs to a
◮ Add f (e) to Q.
1Actually, weighted straight skeletons are employed.
Stefan Huber: Skeleton Structures in Computational Geometry 21 of 25
◮ Let us consider a map with a road network where roads are given by
◮ [Haunert and Sester, 2008]: compute centerlines of roads resp. extract the
Stefan Huber: Skeleton Structures in Computational Geometry 22 of 25
◮ Let us consider a map with a road network where roads are given by
◮ [Haunert and Sester, 2008]: compute centerlines of roads resp. extract the
Stefan Huber: Skeleton Structures in Computational Geometry 22 of 25
◮ Let us consider a map with a road network where roads are given by
◮ [Haunert and Sester, 2008]: compute centerlines of roads resp. extract the
Stefan Huber: Skeleton Structures in Computational Geometry 22 of 25
◮ We are given the footprint of a house as a polygon P and want to design a
◮ All faces have the same slope. ◮ There are no local minima within P, where rain accumulates. ◮ [Aichholzer et al., 1995]: the terrain model gives us a solution.
◮ [Laycock and Day, 2003]: use heuristics to generate gable roofs, mansard
Stefan Huber: Skeleton Structures in Computational Geometry 23 of 25
◮ We are given a river or a lake and want to model a mountain terrain in its
◮ [Aichholzer and Aurenhammer, 1998]: use the straight skeleton.
Stefan Huber: Skeleton Structures in Computational Geometry 24 of 25
Stefan Huber: Skeleton Structures in Computational Geometry 25 of 25
Stefan Huber: Skeleton Structures in Computational Geometry 26 of 25
Stefan Huber: Skeleton Structures in Computational Geometry 27 of 25