【问题标题】:How to get triangle index using tree.any_intersection如何使用 tree.any_intersection 获取三角形索引
【发布时间】:2021-12-07 22:35:02
【问题描述】:

假设我们有一堆三角形 1,2,...,N 和一条线段。通过制作一棵树,我想获得线段与三角形的交点以及与线段相交的三角形的索引(只有一个)。我如何从下面的“交叉点”中称呼它?

谢谢。

for (int i=0; i<NumTriangles; i++) {
    Point a(Triangles[i].vert1[0], Triangles[i].vert1[1], Triangles[i].vert1[2]);
    Point b(Triangles[i].vert2[0], Triangles[i].vert2[1], Triangles[i].vert2[2]);
    Point c(Triangles[i].vert3[0], Triangles[i].vert3[1], Triangles[i].vert3[2]);
    triangles.push_back(Triangle(a,b,c));
}
Tree tree(triangles.begin(),triangles.end());
Point a(0,0,0);
Point a(0,0,1);
Segment segment_query(a,b);
Segment_intersection intersection = tree.any_intersection(segment_query);

【问题讨论】:

    标签: cgal


    【解决方案1】:

    您放入三个三角形中的每个三角形都称为一个基元。这个原语有一个唯一的标识符(也称为ID)和一个几何体(基准,这里是一个三角形)。

    原始ID的类型由CGAL::AABB_primitive类的模板参数定义。如果您使用的是CGAL::AABB_triangle_primitive,它只是CGAL:AABB_primitive 周围的一个简化API,那么ID 是一个迭代器,它引用triangles 范围内的原语。

    函数any_intersection()返回一个可选的object,它是一个包含相交几何体(如first)和相交图元(如second)的对,您可以从中获取ID使用id() 函数。

    【讨论】:

      猜你喜欢
      • 2016-09-06
      • 1970-01-01
      • 2012-07-06
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      • 2016-06-12
      相关资源
      最近更新 更多