Straight Skeleton Computational Geometry and Geometric Computing - - PowerPoint PPT Presentation
Straight Skeleton Computational Geometry and Geometric Computing - - PowerPoint PPT Presentation
Straight Skeleton Computational Geometry and Geometric Computing Seminar Lavinia Dinu Supervisor: Eric Berberich How to fit a roof to these walls? [SSA] Walls and fitted roof Outline Definitions and Basic Properties A Simple Algorithm
How to fit a roof to these walls?
[SSA] Walls and fitted roof
Outline
Definitions and Basic Properties A Simple Algorithm Algorithm for Polygons Applications
Fold and Cut Problem Roof Design
Definitions
Planar Straight Line Graph
Embedding of a planar graph in the plane Edges mapped to straight line segments No self-intersections
Figures - connected components
Terminals - vertices of degree one Try it yourself: www.planarity.net
[Wiki] A planar straight line graph
Skeleton
Partition of plane into regions Reflects the geometric shape of the graph Arcs and nodes Medial axis – non-linear
Points that have more than one closest point on the boundary
[Wiki] Medial axis of a polygon
Straight Skeleton: Wavefronts
Generate wavefronts Vertices move on angular bisectors Propagate wavefronts simultaneously
[SSG] Polygonal figures and initial wavefronts in red
Straight Skeleton: Events
Edge event
Edge length decreases to zero
Split event
Wavefront edge splits due to interference
Straight Skeleton: Definition
Straight Skeleton: Example
[SAS] Blue wavefronts and red skeleton of a polygon
Straight Skeleton: Example
[SSG] Red straight skeleton of graph
Properties
Basic Algorithm
Idea
Initial triangulation
Initial triangulation
Triangulation of the graph (up) and triangulation of the initial wavefronts (down) for two figures. Blue edges represent spokes, red edges wavefronts.
Flip Event
[SAS] Flip Event
Edge Event
[SAS] Edge Event
Split Event
[SAS] Split Event
Complexity analysis
A Better Algorithm
Input
Simple non-degenerate polygon Can have holes Interior polygon will have the opposite orientation
[SSI] Polygon with hole
Idea & Data Structures
Simulate the progression of the wavefronts Use set of circular lists of active vertices – SLAV
Each LAV – loop of vertices of a wavefront Each vertex
References to both neighbors References to adjacent edges in the original polygon
Doubly connected circular list of active vertices
Priority queue
events
Convex Polygons: Initialization
Store all vertices in one LAV For each vertex
Add reference to the two incident edges Compute the angle bisector
Compute nearer intersection of bisector with adjacent ones
Add to priority queue Sort by distance to the corresponding edge Add reference to the corresponding vertices Can be duplicities among the intersection points
Convex Polygons: Initialization
[SSI] Initialization
Convex Polygons – Loop Part 1
Convex Polygons – Loop Part 2
Convex Polygons – Loop Part 3
[SSI] First Step
Non-convex Polygons
Add event type attribute
Edge event or split event
Reflex vertices can cause both types of events
[SSI] Reflex vertices causing edge event A and split event B
Determine split events
[SSI] Split event and feasible area
Processing split events
[SSI] Updating the LAVs
Complexity Analysis
Applications
Applications
Decomposition of concave polygons into convex regions
Preprocessing step for shape matching, Minkovski sum
Interpolating polygonal curves Fold and cut problem Roof design Terrain reconstruction
Fold and Cut Problem
Fold a piece of paper and cut along a line Any possible shape can be obtained Creases are:
The straight skeleton Perpendicular lines to the given shape reflected at the skeleton
[PR] Applet to generate the folds
Fold and Cut Problem
[FC] Fold Pattern for a figure
Roof Design: Hip Roof
All facets have the same slope Algorithm:
Construct straight skeleton Determine distance of each vertex from supporting edge Determine roof planes Raise vertices accordingly
Can be adapted for different slopes
Change propagation speed of wavefronts
Roof Design: Hip Roof
[AGF] Steps for creating a hip roof
Roof Design: Gable Roof
Has an small gable on top Algorithm
Find a vertex created by
bisectors from the original polygon
Move it to the midpoint of the
supporting edge
[Wiki] Gable roof [AGF] Creating a gable roof
Summary
Sources
[SSG] O. Aichholzer, F. Aurenhammer. Straight Skeleton for General
Polygonal Figures in the Plane
[ANT] O. Aichholzer, F. Aurenhammer, D. Alberts, B.Gaertner. A Novel
Type of Skeleton for Polygons
[SSI] P
. Felkel, S. Obdrzalek. Straight Skeleton Implementation
[AGF] R. G. Laycock, A. M. Day. Automatically Generating Roof Models
from Building Footprints
[SAS] D. Eppstein. A Subquadratic Algorithm for the Straight Skeleton [FC] http://erikdemaine.org/foldcut/ [PR]
http://cgm.cs.mcgill.ca/~athens/cs507/Projects/2003/EricBiunno/
[Wiki]Wikipedia