Мне нужно реализовать алгоритм обнаружения столкновений. Мне нужно получить все пары примитивов (то есть пары точка-грань и пары ребер-ребер), в которых два примитива находятся на заданном расстоянии.
С большой сеткой я выбрал CGAL :: Surface_mesh в качестве основной структуры данных сетки и решил использовать дерево AABB для эффективности. AABB Tree Страница справочника предоставляет несколько способов использования:
Пересечения: о точных пересечениях
испытания на пересечение: do_intersect(), number_of_intersected_primitives(), all_intersected_primitives(), any_intersected_primitive()
точная проверка пересечения
конструкции пересечения: all_intersections(), any_intersection()
оба возвращают объекты пересечения с данным примитивом
расстояние:
closet_point(), closet_point_and_primitive()
, Мне может понадобиться что-то вроде этого.Так что я думаю, что могу сделать это самостоятельно. Я заметил Square_distance () и Compare_distance () используется как функция расстояния, могу ли я перегрузить эти функции следующим образом
bool Compare_distance()
{
float distance = /* ... */;
float final_distance = distance - threshold;
// ...
}
Кто-нибудь может мне помочь?
Задача ещё не решена.
Других решений пока нет …