Jump to content

Straight skeleton

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by David Eppstein (talk | contribs) at 21:15, 15 November 2006 (References: clean up, add some links and doi ids). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

The straight skeleton, the shrinking process that creates it, and a three-dimensional roofline created from it.

In geometry, a straight skeleton is a method of representing a polygon by a topological skeleton. It is similar in some ways to the medial axis but differs in that the skeleton is composed of straight line segments, while the medial axis of a polygon may involve parabolic curves.

The straight skeleton is defined by a continuous shrinking process in which the edges of the polygon are moved inwards parallel to themselves at a constant speed. As the edges move in this way, the vertices where pairs of edges meet also move, at speeds that depend on the angle of the vertex. If one of these moving vertices collides with a nonadjacent edge, the polygon is split in two by the collision, and the process continues in each part. The straight skeleton is the set of curves traced out by the moving vertices in this process.

Straight skeletons were first defined for simple polygons by Aichholzer et al. (1995), and generalized to planar straight line graphs by Aichholzer and Aurenhammer (1996). Cheng and Vigneron (2002) showed how to compute the straight skeleton of a simple polygon with n vertices, r of which have angles greater than π in time O(n log2 n + r3/2 log r). For more general polygonal inputs, the best known time bound is from a more complex and slower algorithm by Eppstein and Erickson (1999).

Example

The illustration shows:

  1. a straight skeleton (non bold) of a simple polygon (bold)
  2. the shrinking process that, when taken to its limit, creates the skeleton
  3. a 3d interpretation of the same skeleton, a 'roof' structure

Applications

The straight skeleton can be used as the set of ridge lines of a building roof, based on walls in the form of the initial polygon (Aichholzer et al. 1995; Bélanger 2000).

Demaine, Demaine and Lubiw (1998) used the straight skeleton as part of a technique for folding a sheet of paper so that a given polygon can be cut from it with a single straight cut, and related origami design problems.

Barequet et al. (2003) use straight skeletons in an algorithm for finding a three-dimensional surface that interpolates between two given polygonal curves.

Tănase and Veltkamp (2003) propose to decompose concave polygons into unions of convex regions using straight skeletons, as a preprocessing step for shape matching in image processing.

The straight skeleton can also be used to construct an offset curve of a polygon, with mitered corners, analogously to the construction of an offset curve with rounded corners formed from the medial axis.

References

  • Aichholzer, Oswin; Aurenhammer, Franz (1996). "Straight skeletons for general polygonal figures in the plane". Proc. 2nd Ann. Int. Conf. Computing and Combinatorics (COCOON '96). Lecture Notes in Computer Science, no. 1090, Springer-Verlag. pp. 117–126. {{cite conference}}: Unknown parameter |booktitle= ignored (|book-title= suggested) (help)CS1 maint: multiple names: authors list (link)
  • Barequet, Gill; Goodrich, Michael T.; Levi-Steiner, Aya; Steiner, Dvir (2003). "Straight-skeleton based contour interpolation". Proceedings of the Fourteenth Annual ACM-SIAM Symposium on Discrete Algorithms. pp. 119–127. {{cite conference}}: Unknown parameter |booktitle= ignored (|book-title= suggested) (help)CS1 maint: multiple names: authors list (link)
  • Tănase, Mirela; Veltkamp, Remco C. (2003). "Polygon decomposition based on the straight line skeleton". Proceedings of the 19th Annual ACM Symposium on Computational Geometry. pp. 58–67. doi:10.1145/777792.777802. {{cite conference}}: Unknown parameter |booktitle= ignored (|book-title= suggested) (help)CS1 maint: multiple names: authors list (link)