CGAL AABB дерево do_intersect ошибка с плавающей точкой

Я использую CGAL для моего проекта. Я создаю дерево AABB из файла сетки (.off). Сначала я извлекаю многогранник из своей сетки, затем получаю треугольники и, наконец, вставляю их в дерево. Все это прошло гладко.

Проблема в том, когда я использую функцию 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

Прежде чем кто-либо спросит, точка B - это конкретная точка на поверхности сетки, и она не создает проблем с большинством точек, поэтому я предполагаю, что ошибка не связана с ней. Вместо этого точка А находится где-то в пространстве.

Спасибо за ваши ответы.

0 ответов

Другие вопросы по тегам