尽管有一些文档与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));
}
我还没有找到如何从矢量中提取人脸。