scipy.spatial包可以通過利用Qhull庫來計(jì)算一組點(diǎn)的三角剖分,Voronoi圖和凸殼。 此外,它包含用于最近鄰點(diǎn)查詢的KDTree實(shí)現(xiàn)以及用于各種度量中的距離計(jì)算的實(shí)用程序。
下面來了解Delaunay Triangulations是什么以及如何在SciPy中使用。
什么是Delaunay三角?
在數(shù)學(xué)和計(jì)算幾何中,對于平面中離散點(diǎn)的給定集合P的Delaunay三角剖分是三角形DT(P),使得P中的任何點(diǎn)都不在DT(P)中的任何三角形的外接圓內(nèi)。
可以通過SciPy進(jìn)行相同的計(jì)算。 參考下面的一個(gè)例子。
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()
上述程序?qū)⑸梢韵螺敵?-

下面了解共面點(diǎn)是什么以及它們?nèi)绾卧赟ciPy中使用。
什么是共面點(diǎn)?
共平面點(diǎn)是三個(gè)或更多點(diǎn)位于同一平面上。 回想一下,一個(gè)平面是平坦的表面,其在所有方向端延伸沒有終點(diǎn)。 它通常在數(shù)學(xué)教科書中顯示為四面體。
下面來看看如何在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)
上述程序?qū)⑸梢韵螺敵?-
array([[4, 0, 3]], dtype = int32)
這意味著頂點(diǎn)4位于三角形頂點(diǎn)0和頂點(diǎn)3附近,但不包含在三角中。
下面來了解什么是凸殼,以及它們?nèi)绾卧赟ciPy中使用。
什么是凸殼?
在數(shù)學(xué)中,歐幾里德平面或歐幾里德空間(或更一般地說,在實(shí)數(shù)上的仿射空間中)中的一組點(diǎn)X的凸包或凸包是包含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()
執(zhí)行上面示例代碼得到以下結(jié)果 -
