Создание регулярной сетки Delaunay в scipy
Есть ли какой-нибудь метод получения триангуляции в 2D, который более упорядочен, как производит Matlab Delaunay? Вот пример триангуляции Matlab 2D Delaunay.
![matlab delaunay]()
Используя этот код:
xPoints = np.arange(0,11,1)
yPoints = np.arange(0,11,1)
gridPoints = np.array([[x,y] for y in yPoints for x in xPoints])
tri = Delaunay(gridPoints)
plt.triplot(gridPoints[:,0],gridPoints[:,1],tri.simplices.copy())
plt.plot(gridPoints[:,0],gridPoints[:,1],'bo')
plt.title("Triangulation Visualization")
Я получаю триангуляцию ниже:
![scipy delaunay]()
Обратите внимание, что диагональные дуги в результате Matlab имеют одинаковый наклон; но те, кто в scipy результате, меняются. Поскольку Matlab и Scipy используют QHull внутренне, я предполагаю, что существует некоторый метод для имитации результата Matlab.
Ответы
Ответ 1
Вы можете попробовать триангуляцию вместо Delaunay:
import matplotlib.tri as tri
xlen = 10
ylen = 16
xPoints = np.arange(0,xlen+1,1)
yPoints = np.arange(0,ylen+1,1)
gridPoints = np.array([[[x,y] for y in yPoints] for x in xPoints])
a = [[i+j*(ylen+1),(i+1)+j*(ylen+1),i+(j+1)*(ylen+1)] for i in range(ylen) for j in range(xlen)]
triang = tri.Triangulation(gridPoints[:,:,0].flatten(), gridPoints[:,:,1].flatten(),a)
plt.triplot(triang)
plt.plot(gridPoints[:,:,0],gridPoints[:,:,1],'bo')
plt.title("Triangulation Visualization")
![enter image description here]()