【问题标题】:CGAL Mesh_3 ERROR: assertion violation! Expr: minimal_size_ > 0 || sq_d > 0CGAL Mesh_3 错误:违反断言!表达式:minimal_size_ > 0 || sq_d > 0
【发布时间】:2021-03-29 15:28:18
【问题描述】:

我的应用程序使用 CGAL 创建四面体网格。输入是六个补丁(每个补丁都以 OFF 文件的形式)形成域的边界,以及一个带有特征边缘的文件(补丁之间的接口)。

感谢help I got herehere again,它已经完美运行了很多次。然而,最近我遇到了这个看似无害的例子:

请注意,底部补丁是圆柱体的网格,即域不是凸的。

此操作失败并显示以下错误消息

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]。然而,我需要更多的时间来理解算法的细节足够的实现来找出问题所在。因此,感谢您提供任何帮助(即使它只是限制了我应该搜索的区域)。

相关问题

我用谷歌搜索了很多,但没有找到太多。

  • This user 得到了同样的错误,因为他的网格没有共同细化(我的是)。
  • Another user 使用 detect_features() 后出现同样的错误(而我使用 add_features())。
  • 邮件列表中也有一个讨论(我现在找不到),其中有人遇到了同样的错误,因为他的三角形高度为零(这不是我的情况)。

【问题讨论】:

  • 我的猜测是你的特征图不是“干净的”。这意味着您可能有两条任意闭合的折线。如果您不调用检测功能,则只有域的边界受到保护。你有办法甩掉它们吗?
  • @sloriot 非常感谢你,你是对的。在询问之前我已经目视检查了这些功能,但我应该检查文件。无论如何,我已将其转换为答案,以使将来遇到此问题的人们受益。

标签: computational-geometry mesh cgal tetrahedra


【解决方案1】:

正如@sloriot 在 cmets 中正确指出的那样,问题在于我的特征折线不完全符合。

为了帮助未来的读者,这里是我的折线文件的相关部分:

(...)
    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坐标的差异。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多