我正在使用CGAL进行我的项目。我从网格文件(.off)创建一个AABB树。首先,我从我的网格中提取多面体,然后我得到三角形,最后我将它们插入树中。 所有这一切顺利进行。
问题在于我使用树的 do_intersect 功能。 给定两点A和B,我想知道连接两者的光线或片段是否与某些东西不相关。
大部分时间这都正常,有时我会得到浮点错误。 '有时'意味着只有很少的点子集。
这是否有原因?
这里有我的代码片段:
glm::vec3 pointA, pointB; // assume this are filled with some values
// the elements inside points above are floats.
Point_3 pA(pointA.x, pointA.y, pointA.z);
Point_3 pB(pointB.x, pointB.y, pointB.z);
Segment segment_query(pA, pB);
my_tree->do_intersect(segment_query); // here sometimes crashes
在任何人询问之前 pointB 是网格表面上的特定点,并且它不会给大多数点带来任何问题,所以我认为错误与它无关。相反, pointA 就在空间的某个地方。
谢谢你的答案。