如何使用CGAL Arrangement_2区?
How to use CGAL Arrangement_2 zone?
虽然Arrangement_2模块的zone
自由函数有一些相关的文档,但是在任何示例文件中都没有提及,用法也不明显。
假设我有一个基于 CGAL::Arr_linear_traits_2
的点和线段排列,我想打印出沿着给定 Segment_2
行走时访问过的所有面孔。我该怎么做?
其实用法还是很明显的。要让所有元素相交,这段代码就足够了:
void segment_intersect(Arrangement_2 &arr, Segment_2 &c)
{
std::vector<CGAL::Object> zone_elems;
CGAL::zone(arr, c, std::back_inserter(zone_elems));
}
我还没有找到如何从向量中提取面孔。
您需要使用"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...
}
}
虽然Arrangement_2模块的zone
自由函数有一些相关的文档,但是在任何示例文件中都没有提及,用法也不明显。
假设我有一个基于 CGAL::Arr_linear_traits_2
的点和线段排列,我想打印出沿着给定 Segment_2
行走时访问过的所有面孔。我该怎么做?
其实用法还是很明显的。要让所有元素相交,这段代码就足够了:
void segment_intersect(Arrangement_2 &arr, Segment_2 &c)
{
std::vector<CGAL::Object> zone_elems;
CGAL::zone(arr, c, std::back_inserter(zone_elems));
}
我还没有找到如何从向量中提取面孔。
您需要使用"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...
}
}