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