1

我正在为我的一个项目使用 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在空间中的某个地方。

谢谢你的回答。

4

0 回答 0