日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

python 泰森多边形法函数属性理解(python Voronoi function properties explained in detial)

發(fā)布時(shí)間:2023/12/13 综合教程 42 生活家
生活随笔 收集整理的這篇文章主要介紹了 python 泰森多边形法函数属性理解(python Voronoi function properties explained in detial) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

泰森多邊形又叫馮洛諾伊圖(Voronoi diagram),得名于Georgy Voronoi,是一組由連接兩鄰點(diǎn)線(xiàn)段的垂直平分線(xiàn)組成的連續(xù)多邊形組成。一個(gè)泰森多邊形內(nèi)的任一點(diǎn)到構(gòu)成該多邊形的控制點(diǎn)的距離小于到其他多邊形控制點(diǎn)的距離。(百度百科)

使用 python 的 scipy.spatial.Voronoi 函數(shù)可以得到泰森多邊形,具體代碼如下:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.Voronoi.html

 1 from scipy.spatial import Voronoi, voronoi_plot_2d
 2 import numpy as np
 3 import matplotlib.pyplot as plt
 4 
 5 points = np.array([[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2],
 6                    [2, 0], [2, 1], [2, 2]])
 7 # 計(jì)算指定點(diǎn)的泰森多邊形
 8 vor = Voronoi(points)
 9 # 繪制泰森多邊形二維圖像
10 fig = voronoi_plot_2d(vor)
11 plt.show()

運(yùn)行結(jié)果圖片:

之后,得到的結(jié)果vor有許多的屬性,不太聰明的我研究好久,終于看明白,分享給大家。

vor屬性:

points:計(jì)算 Voronoi 的輸入點(diǎn)坐標(biāo)vertices:Voronoi 頂點(diǎn)坐標(biāo)ridge_points:在每條 Voronoi 脊線(xiàn)(ridge line)附近的點(diǎn)(points)的索引ridge_vertices:構(gòu)成每個(gè) Voronoi 脊線(xiàn)(ridge line)的 Voronoi 頂點(diǎn)(vertices)索引
regions:構(gòu)成每個(gè) Voronoi region 的 Voronoi 頂點(diǎn)(vertices)的索引
point_region: Voronoi region和輸入點(diǎn)(point)相對(duì)應(yīng)索引理解圖:

理解順序:

1. 看 vertices 的值: [array([0.5, 0.5]), array([0.5, 1.5]), array([1.5, 0.5]), array([1.5, 1.5])]

它在上圖中橙色字體,它是 Voronoi 的頂點(diǎn),圖上的順序就是根據(jù)這個(gè)值的先后順序得到的。

2. 看 regions 值:[[ ], [-1, 0], [-1, 1], [1, -1, 0], [3, -1, 2], [-1, 3], [-1, 2], [0, 1, 3, 2], [2, -1, 0], [3, -1, 1]]

看它的最大值不超過(guò)vertices的個(gè)數(shù),并且看解釋可以看到它和 vertices 和 voronoi region 有關(guān),我們已經(jīng)知道 vertices 的值和順序,于是就可以推出 voronoi region,也就是途中的藍(lán)色字體,其中 -1 表示這個(gè)頂點(diǎn)是在泰森多邊形外部

3. 看 points 值: [array([0., 0.]), array([0., 1.]), array([0., 2.]), array([1., 0.]), array([1., 1.]), array([1., 2.]), array([2., 0.]), array([2., 1.]), array([2., 2.])]

把它按照順序標(biāo)記在圖上,也就是上圖的紫色字體。

4. 看 point_region 值:[1, 3, 2, 8, 7, 9, 6, 4, 5],你按照紫色的 point 的順序去看藍(lán)色的 Voronoi region 的數(shù)字,就可以知道它們是一一對(duì)應(yīng)的。

5. 看 ridge_points 值:[array([0, 3], dtype=int32), array([0, 1], dtype=int32), array([2, 5], dtype=int32), array([2, 1], dtype=int32), array([1, 4], dtype=int32), array([7, 8], dtype=int32), array([7, 6], dtype=int32), array([7, 4], dtype=int32), array([8, 5], dtype=int32), array([6, 3], dtype=int32), array([4, 5], dtype=int32), array([4, 3], dtype=int32)]

按照每個(gè) points 的索引值,就可以找到 ridge_line 的順序索引值,上圖中是紅色字體部分。

6. 看ridge_vertices 值:[[-1, 0], [-1, 0], [-1, 1], [-1, 1], [0, 1], [-1, 3], [-1, 2], [2, 3], [-1, 3], [-1, 2], [1, 3], [0, 2]]

現(xiàn)在已經(jīng)得到了 ridge_line 的索引,那么按照這個(gè)順序你去看這條線(xiàn)的兩端的端點(diǎn)就明白這個(gè)屬性的意思啦,存在這個(gè)頂點(diǎn)就是vertice相應(yīng)的索引,不存在就是-1。

希望能幫到大家,歡迎任何指正和意見(jiàn)。

總結(jié)

以上是生活随笔為你收集整理的python 泰森多边形法函数属性理解(python Voronoi function properties explained in detial)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。