Mir*_*iro 3 python delaunay scipy
我正在测试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()
Run Code Online (Sandbox Code Playgroud)

如scipy.spatial.Delaunay所述:
"除非您传入Qhull选项"QJ",否则Qhull不保证每个输入点在Delaunay三角剖分中都显示为顶点."
但如果我使用QJ:
tri = Delaunay(points, qhull_options = "QJ")
Run Code Online (Sandbox Code Playgroud)
我得到Qhull错误,如果我使用QJn(n =某个高数字):
tri = Delaunay(points, qhull_options = "QJ200")
Run Code Online (Sandbox Code Playgroud)
为了克服这个错误,生成的网格看起来很糟糕 - 整个地方的三角形相互交叉.
如何用scipy.spatial.Delaunay将所有点包含在无差错三角网格中?
问题是您的数据集不居中.Qhull(用于进行Delaunay三角测量)不会在默认选项下为您设置数据集中心,因此它会运行以远离原点舍入错误.
您可以在三角测量之前自己居中
points -= points.mean(axis=0)
tri = Delaunay(points)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
927 次 |
| 最近记录: |