Anda dapat menggunakan pySkeleton sebagai berikut:
from pySkeleton import polygon
vertices = [(0,0), (0,5), (5,5), (5,0)]
edges = [(0,1), (1,2), (2,3), (3,0)]
p = polygon.Polygon(vertices, edges)
skeleton_graph = p.straight_skeleton()
Anda mendapatkan Graph-Object dengan Nodes dan Arcs, yang dapat Anda akses hanya dengan:
nodes = skeleton_graph.nodes
arcs = skeleton_graph.arcs
Seperti dikatakan dalam readme.txt pySkeleton, simpul poligon harus dalam urutan searah jarum jam. Untuk lubang dalam poligon, simpul harus berlawanan arah dengan jarum jam.
vertices = [(25.0, 15.0), (45.0, 15.0), (45.0, 35.0), (25.0, 35.0), # polygon
(30.0, 20.0), (30.0, 30.0), (40.0, 30.0), (40.0, 20.0)] # hole in polygon
edges = [(0, 1), (1, 2), (2, 3), (3, 0), # polygon
(4, 5), (5, 6), (6, 7), (7, 4)] # hole in polygon
Catatan: Untuk poligon yang lebih kompleks dengan 100+ simpul dan tepi, pySkeleton lambat sekali. Selain itu saya menerima hasil yang aneh untuk beberapa poligon. Saya berasumsi bahwa itu tidak berfungsi dengan benar dalam semua kasus.
Meskipun demikian, terima kasih banyak kepada Olivier Teboul untuk perpustakaan ini.