CGAL:如何获得给定距离内的所有基元

时间:2016-03-09 06:47:52

标签: c++ collision-detection cgal aabb

我需要实现一个碰撞检测算法。我需要得到所有的基元对(即点 - 面对和边 - 边对),其中两个基元在给定的距离内。

对于大网格,我选择了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()。我可能需要这样的东西。
  3. 所以我想我可以自己定制。我注意到Square_distance()Compare_distance()用作距离函数,我可以像这样重载这些函数

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

    有人可以帮助我吗?

0 个答案:

没有答案