使用scipy创建常规Delaunay网格

Van*_*ner 13 python numpy delaunay scipy computational-geometry

是否有一些方法可以在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")
Run Code Online (Sandbox Code Playgroud)

我得到以下三角测量:

scipy delaunay

注意Matlab结果中的对角弧如何具有相同的斜率; 但那些在scipy结果中的人是变化的.由于Matlab和Scipy都在内部使用QHull,我认为有一些方法来模仿Matlab结果.

小智 4

您可以尝试三角测量而不是 Delaunay:

import matplotlib.tri as tri
import numpy as np
import matplotlib.pyplot as plt

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")
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述