computational-geometry - CGAL Mesh_3 错误:违反断言!表达式:minimal_size_ > 0 || sq_d > 0
问题描述
我的应用程序使用 CGAL 创建四面体网格。输入是六个补丁(每个补丁都以 OFF 文件的形式)形成域的边界,以及一个具有特征边缘的文件(补丁之间的接口)。
感谢我在这里和这里的帮助,它已经完美地运行了很多次。然而,最近我遇到了这个看似无害的例子:
请注意,底部补丁是圆柱体的网格,即域不是凸的。
这失败并显示以下错误消息
Error: CGAL ERROR: assertion violation!
Expr: minimal_size_ > 0 || sq_d > 0
File: /path/to/CGAL-5.2/include/CGAL/Mesh_3/Protect_edges_sizing_field.h
Line: 750
我已经激活了断言上方的调试输出。就在崩溃之前,它会打印以下内容
Nearest power vertex of (16.1 2.74455 159.976) is 0x44fafe0 (16.1 2.74455 159.976 5.47731e-28) at distance: 8.08582e-28
Nearest power vertex of (16.1 2.74455 159.976) is 0x44fb3d0 (16.1 2.74455 159.976 4.84338e-28) at distance: 9.66355e-30
Nearest power vertex of (16.1 2.74455 159.976) is 0x44fb050 (16.1 2.74455 159.976 2.73616e-27) at distance: 3.23196e-27
Nearest power vertex of (16.1 2.74455 159.976) is 0x44fb590 (16.1 2.74455 159.976 7.82747e-30) at distance: 0
要看到这一点,必须非常靠近三个特征折线相交的角落(16.1 2.74455 159.976)
进行缩放。
问题 1
怎么了?
我的猜测是,在构建保护球时,所需的平方半径会以某种方式下降到 10^-60 之类的值,这被认为是零。但这不应该发生,对吧?我尝试通过更改几个输入参数(目标边缘尺寸、表面公差等)来帮助它,但无济于事。
问题 2(如果无法回答问题 1)
你能指出我在论文中的确切位置吗?
考虑到我对 Delaunay 三角剖分有足够的了解,我花了几个小时阅读 [ 7 ] 和 [ 8 ]。然而,我需要更多的时间来理解算法的细节和实现以找出问题所在。因此,任何帮助(即使它只是限制我应该搜索的区域)都会受到赞赏。
相关问题
我已经用谷歌搜索了,但没有找到太多。
解决方案
正如@sloriot 在评论中正确指出的那样,问题是我的特征折线不完全符合。
为了帮助未来的读者,这里是我的折线文件的相关部分:
(...)
1.6100000e+1 2.2933305e-1 1.5999984e+2
1.6100000e+1 1.4022496e+0 1.5999386e+2
1.6100000e+1 2.7445457e+0 1.5997646e+2
34
1.6100000e+1 2.7445456e+0 1.5997646e+2
1.4946531e+1 3.3592107e+0 1.5996473e+2
1.4337449e+1 3.6838449e+0 1.5995759e+2
(...)
注意前一条折线的最后一个点和第二条折线的第一个点的y坐标的差异。
推荐阅读
- java - 正则表达式帮助。在正斜杠后从字符串中提取数字
- python - 无效的日期 django 表单验证
- qaf - 如何在 Android chrome 上使用 qaf
- ios - 如何解析来自 Algolia 的内容数据以在 iOS swift 中获取实际的 Array 对象?
- python - 如何在python中使用字典将两个多项式相乘?
- c - 从文本文件中读取命令并依次执行
- python - Django 迁移:“0001_initial.py”依赖错误
- javascript - Javascript - 生成数组对
- python - 如何使用pickle序列化这个对象?
- javascript - Vue 在移除 DOM 元素后将内联样式转移到下一个元素 [with snippet]