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中使用。

什麼是共麪點?

共平面點是三個或更多點位於同一平面上。 回想一下,一個平面是平坦的表面,其在所有方向端延伸沒有終點。 它通常在數學教科書中顯示爲四面體

下面來看看如何在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()

執行上面示例代碼得到以下結果 -

Scipy空間