我需要实现一个碰撞检测算法。我需要得到所有基元对(即点-面对和边-边对),其中两个基元在给定距离内。
对于大型网格,我选择 CGAL::Surface_mesh 作为我的基本网格数据结构,并决定使用 AABB 树以提高效率。AABB 树手册页提供了几种用法:
交叉点:关于精确的交叉点
交叉点测试:
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;
// ...
}
有人能帮我吗?