On Implementing Straight Skeletons: Challenges and Experiences

Abstract We present Cgal implementations of two algorithms for computing straight skeletons in the plane, based on exact arithmetic. One code, named Surfer2, can handle multiplicatively weighted planar straight-line graphs (PSLGs) while our second code, Monos, is specifically targeted at monotone polygons. Both codes are available on GitHub. We discuss algorithmic as well as implementational and engineering details of both codes. Furthermore, we present the results of an extensive performance evaluation in which we compared Surfer2 and Monos to the straight-skeleton package included in Cgal. It is not surprising that our special-purpose code Monos outperforms Cgal’s straightskeleton implementation. But our tests provide ample evidence that also Surfer2 can be expected to be faster and to consume significantly less memory than the Cgal code. And, of course, Surfer2 is more versatile because it can handle multiplicative weights and general PSLGs as input. Thus, Surfer2 currently is the fastest and most general straight-skeleton code available.

[1]  Peter Palfrader,et al.  Weighted straight skeletons in the plane☆ , 2013, CCCG.

[2]  Peter Palfrader,et al.  Planar Matchings for Weighted Straight Skeletons , 2014, ISAAC.

[3]  Martin Held,et al.  Skeletal structures for modeling generalized chamfers and fillets in the presence of complex miters , 2018 .

[4]  Martin Held,et al.  Computing positively weighted straight skeletons of simple polygons based on a bisector arrangement , 2018, Inf. Process. Lett..

[5]  Peter Palfrader,et al.  Straight skeletons with additive and multiplicative weights and their application to the algorithmic generation of roofs and terrains , 2017, Comput. Aided Des..

[6]  Stefan Huber,et al.  Computing Straight Skeletons and Motorcycle Graphs: Theory and Practice , 2012 .

[7]  Peter Palfrader,et al.  On Computing Straight Skeletons by Means of Kinetic Triangulations , 2012, ESA.

[8]  Franz Aurenhammer,et al.  Straight Skeletons for General Polygonal Figures in the Plane , 1996, COCOON.

[9]  Peter Wonka,et al.  Interactive architectural modeling with procedural extrusions , 2011, TOGS.

[10]  Peter Palfrader,et al.  A simple algorithm for computing positively weighted straight skeletons of monotone polygons☆ , 2015, Inf. Process. Lett..

[11]  U. Brandes,et al.  GraphML Progress Report ? Structural Layer Proposal , 2001 .

[12]  Martin Held,et al.  Heuristics for the Generation of Random Polygons , 1996, CCCG.

[13]  Peter Palfrader,et al.  On Generating Polygons: Introducing the Salzburg Database∗ , 2020 .

[14]  David Eppstein,et al.  Raising roofs, crashing cycles, and playing pool: applications of a data structure for finding pairwise interactions , 1998, SCG '98.

[15]  Antoine Vigneron,et al.  A Faster Algorithm for Computing Straight Skeletons , 2014, ESA.

[16]  Martin Held,et al.  Theoretical and practical results on straight skeletons of planar straight-line graphs , 2011, SoCG '11.

[17]  Franz Aurenhammer,et al.  A Novel Type of Skeleton for Polygons , 1995, J. Univers. Comput. Sci..