Scipy空間
scipy.spatial
包可以通過利用Qhull庫來計算一組點的三角剖分,Voronoi圖和凸殼。 此外,它包含用於最近鄰點查詢的KDTree實現以及用於各種度量中的距離計算的實用程序。
Delaunay三角
下面來了解Delaunay Triangulations是什麼以及如何在SciPy中使用。
什麼是Delaunay三角?
在數學和計算幾何中,對於平面中離散點的給定集合P的Delaunay三角剖分是三角形DT(P),使得P中的任何點都不在DT(P)中的任何三角形的外接圓內。
可以通過SciPy進行相同的計算。 參考下面的一個例子。
from scipy.spatial import Delaunay
points = np.array([[0, 4], [2, 1.1], [1, 3], [1, 2]])
tri = Delaunay(points)
import matplotlib.pyplot as plt
plt.triplot(points[:,0], points[:,1], tri.simplices.copy())
plt.plot(points[:,0], points[:,1], 'o')
plt.show()
上述程序將生成以下輸出 -
共麪點
下面瞭解共麪點是什麼以及它們如何在SciPy中使用。
什麼是共麪點?
共平面點是三個或更多點位於同一平面上。 回想一下,一個平面是平坦的表面,其在所有方向端延伸沒有終點。 它通常在數學教科書中顯示爲四面體。
下面來看看如何在SciPy中使用它,參考下面的例子。
from scipy.spatial import Delaunay
points = np.array([[0, 0], [0, 1], [1, 0], [1, 1], [1, 1]])
tri = Delaunay(points)
print (tri.coplanar)
上述程序將生成以下輸出 -
array([[4, 0, 3]], dtype = int32)
這意味着頂點4
位於三角形頂點0
和頂點3
附近,但不包含在三角中。
凸殼
下面來了解什麼是凸殼,以及它們如何在SciPy中使用。
什麼是凸殼?
在數學中,歐幾里德平面或歐幾里德空間(或更一般地說,在實數上的仿射空間中)中的一組點X
的凸包或凸包是包含X
的最小凸集。
參考下面的例子來詳細瞭解它 -
from scipy.spatial import ConvexHull
points = np.random.rand(10, 2) # 30 random points in 2-D
hull = ConvexHull(points)
import matplotlib.pyplot as plt
plt.plot(points[:,0], points[:,1], 'o')
for simplex in hull.simplices:
plt.plot(points[simplex,0], points[simplex,1], 'k-')
plt.show()
執行上面示例代碼得到以下結果 -