如何解决CGAL Mesh_3 错误:断言冲突!表达式:minimum_size_ > 0 || sq_d > 0
我的应用程序使用 Cgal 创建四面体网格。输入是形成域边界的六个补丁(每个补丁都是一个 OFF 文件的形式)以及一个具有特征边缘的文件(这是补丁之间的接口)。
多亏了 help I got here 和 here again,它已经多次完美运行。然而,最近我遇到了这个看似无害的例子:
注意底部贴片是圆柱的网格,即域不是凸的。
1/3 Test #1: Test1................................................... Passed 0.03 sec
Start 2: Test2
2/3 Test #2: Test2......................................................... Passed 0.00 sec
Start 3: Test3
3/3 Test #3: Test3..............................................................***Exception: SegFault 0.00 sec
66% tests passed,1 tests Failed out of 3
Total Test time (real) = 0.26 sec
The following tests Failed:
3 - Test3 (SEGFAULT)
Errors while running CTest
Failed: CMakeFiles/test.util
ninja test
要查看点 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
,必须将非常放大到三条要素折线相交的角落附近。
问题 1
怎么了?
我的猜测是,在构建保护球时,所需的平方半径以某种方式下降到 10^-60 之类的值,这被认为是零。但这不应该发生,对吧?我尝试通过更改几个输入参数(目标边缘尺寸、表面公差等)来帮助它,但无济于事。
问题 2(如果问题 1 无法回答)
你能不能帮我指出论文中这个断言的确切位置?
认为我对 delaunay 三角剖分有足够的了解,我花了几个小时阅读 [7] 和 [8]。然而,我需要更多的时间来理解算法的细节和足以找出问题所在。因此,任何帮助(即使它只是限制了我应该搜索的区域)都值得赞赏。
相关问题
我用谷歌搜索过,但没有找到太多。
- This user 得到了同样的错误,因为他的网格没有被共同优化(我的是)。
-
Another user 使用
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)
)。 - 在邮件列表中也有一个讨论(我现在找不到),有人因为他的三角形的高度为零而犯了同样的错误(这不是我的情况)。
解决方法
正如@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 坐标的差异。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。