我有数千个点集,我将它们提供给Scipy 的 Delaunay函数以获得一组相应的三角剖分。
如果我的输入点无效,例如。一条线上的所有点或由于某些其他原因,Delaunay 三角剖分失败,它会在控制台中生成一个非常详细的报告,如下面的报告:
QH6154 qhull 精度错误:初始面 1 与内部点共面
ERRONEOUS FACET:
- 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 Error- roundoff 5.8e-009 _one-merge 4e-008
Visible-distance 1.2e-008 U-coplanar-distance 1.2e-008
Width-outside 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 distance= 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。您应该
选择范围最小的坐标。船体将具有
正确的拓扑结构。
- 确定包含点的平面,将点旋转
到坐标平面中,并删除其他坐标。
- 添加一个或多个点以使输入全维度。
根据文档,没有立即选项可以设置Delaunay(...)
呼叫以禁止此报告。在相当长的qhull选项列表中,我也没有找到一个选项。
我已经尝试过这里提供的解决方案,但它似乎绕过了它。
有什么办法可以抑制这种情况吗?