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