我正在测试 scipy.spatial.Delaunay 并且无法解决两个问题:
情节的代码和图像:
default-ssl
如 scipy.spatial.Delaunay :
所述“除非您传入Qhull选项”QJ“,否则Qhull不保证每个输入点在Delaunay三角剖分中显示为顶点。”
但如果我使用QJ:
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()
我得到Qhull错误,如果我使用QJn(n =某个高数字):
tri = Delaunay(points, qhull_options = "QJ")
要克服这个错误,生成的网格看起来很糟糕 - 整个地方的三角形相互交叉。
如何使用scipy.spatial.Delaunay将所有点包含到无差错三角网格中?
答案 0 :(得分:5)
问题是您的数据集未居中。 Qhull(用于进行Delaunay三角测量)不会在默认选项下为您设置数据集中心,因此它会运行以远离原点舍入错误。
你可以在三角测量之前自己居中
points -= points.mean(axis=0)
tri = Delaunay(points)