簡體   English   中英

圍繞二維多邊形生成 Voronoi 圖

[英]Generating a Voronoi Diagram around 2D Polygons

我正在嘗試圍繞 2D 孔(最好在 PyGame 或 scipy 中,但不是必需的)創建一個 Voronoi 圖並保存邊緣。 它應該是這樣的: 在此處輸入圖片說明

我已經能夠使用scipy 的 Voronoi生成圍繞點的圖表,但我不確定如何處理 2D 障礙。

我處理點的代碼是:

self.vor = Voronoi(POINTS)

# iterate over voronoi graph and save edges
for vpair in self.vor.ridge_vertices:
    if vpair[0] >= 0 and vpair[1] >= 0:
        # vertices
        v0 = self.vor.vertices[vpair[0]]
        v1 = self.vor.vertices[vpair[1]]

        # edge endpoints
        start_point = (v0[0], v0[1])  # start point
        end_point = (v1[0], v1[1])

基本上,我想輸入 2D 障礙物(也可以相鄰/接觸以形成更大的障礙物)並生成一組與這些障礙物等距的線。

您需要的結構是中軸。 構建近似中軸的一種方法是生成孔之間空間的受約束的 Delaunay 三角剖分。 然后通過連接相鄰三角形的外心形成中軸的邊緣。 有相當不錯的matlab教程, 這里 示例 8 是相關位。

不幸的是,scipy 沒有約束 Delaunay 三角剖分的實現。 它只有不受約束的 Delaunay 三角剖分和 Vornoi 圖,它們是相互對偶的。 你會需要別的東西。 三角形是常用的,並且似乎具有 python 綁定。

我發布了一個迷你 python 包來制作它 - voronoi-diagram-for-polygons 您可以從 此處找到示例輸出。 應當指出,在事先知道這個包取決於v1.8.dev0勻稱仍處於發展。 換句話說,它不能通過pip自動安裝。 您必須通過以下方式安裝它:

pip install git+https://github.com/Toblerity/Shapely

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM