CGAL: как получить все примитивы на заданном расстоянии

Мне нужно реализовать алгоритм обнаружения столкновений. Мне нужно получить все пары примитивов (то есть пары точка-грань и пары ребер-ребер), в которых два примитива находятся на заданном расстоянии.

С большой сеткой я выбрал CGAL :: Surface_mesh в качестве основной структуры данных сетки и решил использовать дерево AABB для эффективности. AABB Tree Страница справочника предоставляет несколько способов использования:

  1. Пересечения: о точных пересечениях

    • испытания на пересечение: do_intersect(), number_of_intersected_primitives(), all_intersected_primitives(), any_intersected_primitive()точная проверка пересечения

    • конструкции пересечения: all_intersections(), any_intersection()оба возвращают объекты пересечения с данным примитивом

  2. расстояние:

    • closet_point(), closet_point_and_primitive(), Мне может понадобиться что-то вроде этого.

Так что я думаю, что могу сделать это самостоятельно. Я заметил Square_distance () и Compare_distance () используется как функция расстояния, могу ли я перегрузить эти функции следующим образом

bool Compare_distance()
{
float distance = /* ... */;
float final_distance = distance - threshold;
// ...
}

Кто-нибудь может мне помочь?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …