2015-07-19 24 views
1

假設您有n個點的位置。您希望細分畫布,以便每個點位於其自己的分區內,大致位於中心。劃分區域的算法使每個給定點在其圖中居中

我聽說過算法是這樣的:「同時畫出從每個點開始的圓圈,當它們接觸另一個點的圓時,接觸/交叉的點被畫到畫布上,並且圓圈繼續最終,這些新繪製的點將成爲邊界線。「

given green dots and blue generated lines

什麼叫這種算法?我很想找到它的動畫。是否有另一種算法導致相同的分區?

另外,你會如何編碼? Java,Python或C#更可取,但僞代碼或任何其他語言都可以。

+4

貌似[Voronoi圖]有你的觀點,那麼你可以計算Vonoroi圖(因爲它們是對偶)的德勞內三角化(https://開頭恩.wikipedia.org /維基/ Voronoi_diagram)。看[這個應用](http://alexbeutel.com/webgl/voronoi.html)。 –

+0

我知道這裏有人會知道它叫什麼。謝謝!這確實是一個沃羅諾伊圖。我希望我可以將其標記爲答案,因爲我現在可能能夠找到一些僞代碼,因爲我知道這個名字。 –

+1

也可以看看Delauney Triangulation,這個補充問題可以產生一個有效的Voronoi算法。 – Kittsil

回答

1

根據您繪製的一組點將飛機劃分爲區域稱爲Voronoi圖。有兩種流行的算法用於產生他們

  1. Fortune's algorithm

    該構建的區域作爲掃描線跨越數據集移動,並且是O甲掃掠跡線算法(N log n)的時間和O(n)的空間

  2. Lloyd's Algorithm

    的迭代算法taht類似於k-均值,而是適用於連續的幾何區域。

如果你已經使用Bowyer–Watson算法

+0

感謝您的回答和我對原始問題的評論,我能夠編寫一個簡單的voronoi圖算法來生成我需要的圖表: http://s2.postimg.org/9yf69or7t/results.png –

相關問題