我正在使用 CGAL 的 AABB 树为我的项目执行点位置查询。我有一个 3D 笛卡尔网格和一个浸入网格内的表面。我需要找出网格的哪些元素在外部/内部/被表面切割。为此,我投射了一条射线并找到单元格每个角落的交叉点数量,并检查它们是在内部还是外部。
只要网格的角与表面上的节点不重合,这就会很好地工作。但是,当单元格的角点与表面上的节点重合时,我会得到垃圾结果。CGAL的错误结果中显示了一种这样的情况。
我尝试使用Simple_cartesian<double>
,Exact_predicates_inexact_constructions_kernel
但情况并没有改善。
CGAL 似乎对浮点运算如此敏感。
如何解决这个问题?