2016-04-07 27 views
2

Bir dizi nokta verildiğinde, bu noktaları kullanarak içbükey olmayan bir çokgen oluşturmak istiyorum. Dışbükey bir gövde içbükey kısmı yok eder, onları x/y koordinatlarıyla veya merkezden açılarla düzenlerken dikenli eserler meydana getirir. Bunu yapmanın kolay bir yolu var mı?Verilen tüm noktalardan geçen içbükey çokgen oluştur

Ben oluşturmak istediğiniz çokgenin türden bir örnek:

example

+0

... hangi noktalar kümesi? –

+0

içbükey poligonun sınırlarını tanımlayan bir dizi nokta. – phalanx

+0

bkz. SO [Belirtilen noktalardan geçmeyen kesişen çokgen oluştur] (http://stackoverflow.com/questions/14263284/create-non-intersecting-polygon-passing-through-all-given-points) – stefan

cevap

1

sadece çevre köşeleri ve çevre köşe arasındaki mesafe kenarları arasındaki mesafeden daha az olacağı garanti edebilir çevresi o zaman minimum yayılan bir ağaç kullanabilirsiniz. Bir MST

alt örnek çevre kenarları çok yakın alırsanız böyle olur (katıldı çıkan birleşik çizgi ilk ve son noktalar ile) çalıştığı yere

Perimeter detected using minimum spanning tree

üst örnek gösterir.

+0

Teşekkürler. Aslında çok sayıda veri kümesine sahibim ve her veri kümesi için, çevre köşeleri arasındaki mesafenin, çevre kenarlarının arasındaki mesafeden daha az olacağını garanti edemem. Bunu varsaymayan bir yaklaşım var mı? – phalanx

+0

Bu sorunun cevabı, daha genel bir çözümle ilgili bazı sorunları ele alır: http://stackoverflow.com/questions/20141812/ordering-concave-polygon-vertices-in-counterclockwise – shouston