如何使用CGAL Arrangement_2区域



尽管有一些文档与Arrangement_2模块的zone自由函数有关,但在任何示例文件中都没有提及,用法也不明显。

假设我有一个基于CGAL::Arr_linear_traits_2的点和线段排列,我想打印出沿给定Segment_2行走时访问的所有面。我该怎么做?

您需要使用"assign"函数:

void segment_intersect(Arrangement_2 &arr, Segment_2 &c)
{
  std::vector<CGAL::Object> zone_elems;
  Arrangement_2::Face_handle face;
  CGAL::zone(arr, c, std::back_inserter(zone_elems));
  for ( int i = 0; i < (int)zone_elems.size(); ++i )
    {
      if ( assign(face, zone_elems[i]) )
         //print the face index...
    }
}

用法其实很明显。为了让所有元素相交,这个代码就足够了:

void segment_intersect(Arrangement_2 &arr, Segment_2 &c)
{
  std::vector<CGAL::Object> zone_elems;
  CGAL::zone(arr, c, std::back_inserter(zone_elems));
}

我还没有找到如何从矢量中提取人脸。

相关内容

  • 没有找到相关文章

最新更新