我需要实现一个碰撞检测算法。我需要得到所有的基元对(即点 - 面对和边 - 边对),其中两个基元在给定的距离内。
对于大网格,我选择了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;
// ...
}
有人可以帮助我吗?