2011-04-06 40 views
2

我想製作一組2D點(在Python中)的凸包。我發現了幾個有幫助的例子,但我有一個額外的功能,我希望我不能實現。我想要做的是創建凸包,但如果它們足夠靠近邊界,則允許它拾取內點。看到下面的圖片 - >如果theta < x度,那​​麼內部點被添加到船體。Python - 具有一些允許的內部點的凸面船體

enter image description here

明顯這可以讓事情變得更復雜一點,因爲我已經從我的想法和測試中發現的。例如,如果內部點被添加,則它可能允許添加另一個內部點。

速度在這裏並不是一個真正值得關注的問題,因爲我將要使用的點數相對較少。我寧願有一個更強大的算法,然後快速。

我想知道是否有人知道任何這樣的例子,或者可以指出我從哪裏開始的正確方向。謝謝。

+0

集合有多大,以及非關注速度有多大? 如果你可以重新迭代所有非船體點來檢查鄰域,這是一個相對簡單的問題。你可以很容易地擺脫它,但它比你有更多的計算密集度。 – 2011-04-06 01:39:27

+0

當計算船體中的下一個點時,將你正在檢查的線旋轉x度,並添加遞歸成功的每個點? – bdares 2011-04-06 01:43:46

+0

@ThE_JacO:總點數不會超過幾百個點。 – 2011-04-06 20:27:25

回答

2

Concave hull可能是你要找的東西,儘管它並沒有使用一個角度,據我所知。 the LOCAL project使用的算法似乎使用k個最近的鄰居。

+0

它看起來像阿爾法形狀可能是關於我在找什麼。謝謝。 – 2011-04-06 20:25:30

0

您可以首先計算凸包,然後破壞圓的邊緣,看看是否有任何邊應該被打破以包含內點。

相關問題