You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SciPy Delaunay三角剖分参数微幅变动时单形多顶点变更问题

问题原因

规则网格点集存在大量共超球的退化点组,d维空间中只要存在d+2个点共超球,就存在多种合法的Delaunay三角剖分结果。默认QHull实现会按照内部优先级选择其中一种剖分方式,这种选择不会保证相邻单形共享d个顶点(即单形切换时仅替换1个顶点),当查询点落在退化的超平面上时,两侧的单形可能只有少量公共顶点,就是你观察到的现象。这是退化场景下Delaunay三角剖分的固有特性,不是实现bug。

可行解决方案
  • 直接使用QHull的Qx选项:该选项专门用于处理共点、共面等退化场景,会强制调整剖分逻辑保证邻接单形的面共享关系符合预期。你观察到维度>4时SciPy默认开启该选项,实际上对于3/4维规则网格场景也可以手动开启,全局适用,调用时修改代码为:
    tri = Delaunay(X, qhull_options="Qx")
    
    该方案无需修改其他逻辑,即可解决你给出的3维、4维示例中的异常。
  • 使用规则网格结构化剖分:你使用的是轴对齐规则网格,不需要调用通用Delaunay实现,可自行实现超立方体的固定剖分逻辑:先定位查询点所在的网格超立方体,再将超立方体按固定规则(如按坐标偏移量排序)拆分为d!个单形。这种方案的剖分结果完全可控,单形切换时必然仅替换1个顶点,且性能远高于通用Delaunay剖分,适合规则网格场景。
  • 给网格点加微小扰动:给每个网格点的各坐标加1e-12量级的随机噪声,破坏共超球的退化条件,此时Delaunay剖分结果唯一,邻接关系也会符合预期。该方案适合无法修改剖分逻辑的场景,扰动大小远低于你使用的查询delta,不会对插值结果产生可感知的影响。

内容的提问来源于stack exchange,提问作者Warrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:36:01