【发布时间】:2016-06-05 15:39:05
【问题描述】:
我有数千个点集,我将它们提供给 Scipy 的 Delaunay 函数以获得相应的三角测量集。
如果我的输入点无效,例如。一条线上的所有点或由于某些其他原因,Delaunay 三角剖分失败,它会在控制台中生成一个非常详细的报告,如下面的报告:
QH6154 qhull 精度错误:初始面 1 与内点共面
错误方面:
- f1
- 标志:底部单纯的 UpperDelaunay 翻转
- 正常:-0.3162 -0.9487 0
- 偏移量:5929262
- 顶点:p4(v2) p3(v1) p0(v0)
- 相邻方面:f2 f3 f4
执行时:| qhull d Qbb Qt Qc Qz
为 Qhull 2012.1 2012/02/18 选择的选项:
run-id 231396746 delaunay Qbbound-last Qtriangulate Qcoplanar-keep
Qz-infinity-point _pre-merge _zero-centrum Qinterior-keep Pgood
_max-width 33 误差舍入 5.8e-009 _one-merge 4e-008
可见距离 1.2e-008 U 共面距离 1.2e-008
外宽 2.3e-008 _wide-facet 6.9e-008
qhull 的输入似乎小于 3 维,或
计算已溢出。
Qhull 无法从点构造一个清晰的凸单纯形:
- p1(v3):4.9e+005 6.1e+006 0.00016
- p4(v2):4.9e+005 6.1e+006 33
- p3(v1):4.9e+005 6.1e+006 0
- p0(v0):4.9e+005 6.1e+006 0.0009
中心点与小平面共面,或顶点共面
与相邻的刻面。
的最大舍入误差 计算距离为 5.8e-009。中心点、刻面和距离
到中心点如下:
中心点 4.9e+005 6.087e+006 8.25
刻面 p4 p3 p0 距离= 0
刻面 p1 p3 p0 距离= 0
刻面 p1 p4 p0 距离= 0
刻面 p1 p4 p3 距离= 0
这些点要么具有最大或最小 x 坐标,要么
他们最大化 k 坐标的行列式。试用点
首先从最大化坐标的点中选择。
每个维度的最小和最大坐标是:
0: 4.9e+005 4.9e+005 差= 33
1:6.087e+006 6.087e+006 差=11
2:0 33 差异 = 33
如果输入应该是全维度的,您有几个选项
可以确定一个初始单纯形:
- 使用“QJ”来调整输入并使其成为全维度
- 使用“QbB”将点缩放到单位立方体
- 使用“QR0”随机旋转不同最大点的输入
- 使用“Qs”搜索初始单纯形的所有点
- 使用“En”指定小于 5.8e-009 的最大舍入误差。
- 使用“T3”跟踪执行以查看每个点的行列式。
如果输入是低维的:
- 使用“QJ”来调整输入并使其成为全维度
- 使用 'Qbk:0Bk:0' 从输入中删除坐标 k。你应该
选择范围最小的坐标。船体将有
正确的拓扑。
- 确定包含点的平面,旋转点
进入一个坐标平面,并删除其他坐标。
- 添加一个或多个点以使输入全维度。
根据documentation,没有立即选项可以设置Delaunay(...) 调用以禁止此报告。在相当长的qhull options 列表中我也没有找到一个选项。
我已经尝试了here 提供的解决方案,但它似乎绕过了它。
有没有办法抑制这种情况?
【问题讨论】:
标签: python exception console scipy qhull