我正在测试 scipy.spatial.Delaunay,但是遇到了两个问题:
- 网格存在错误
- 网格未包含所有点
以下是代码和绘图:
import numpy as np
from scipy.spatial import Delaunay,delaunay_plot_2d
import matplotlib.pyplot as plt
#input_xyz.txt contains 1000 pts in "X Y Z" (float numbers) format
points = np.loadtxt("input_xyz.txt", delimiter=" ", usecols=(0, 1))
tri = Delaunay(points)
delaunay_plot_2d(tri)
plt.plot(points[:,0], points[:,1], 'o')
plt.show()
正如在scipy.spatial.Delaunay中所提到的:
"除非您传递Qhull选项“QJ”,否则Qhull无法保证每个输入点都出现为Delaunay三角剖分中的顶点。"
但是如果我使用QJ:
tri = Delaunay(points, qhull_options = "QJ")
我遇到了Qhull错误,如果我使用QJn(其中n是一个较大的数字):
tri = Delaunay(points, qhull_options = "QJ200")
为了克服该错误,生成的网格看起来很糟糕 - 三角形到处都是,相互交叉。
如何使用scipy.spatial.Delaunay在无误差的三角剖分网格中包含所有点?