我在Polygon_2类型上使用CGAL :: do_intersect()并且效果非常好:
bool Polygon_ac::isIntersecting(FormVirtual* secondForm){
return CGAL::do_intersect(*dynamic_cast<Polygon_2*>(this),
*dynamic_cast<Polygon_2*>(secondForm));
} 现在我会检测到交叉点,但在Polyhedron_3之间,它不起作用:
stl_iterator_base_types.h中的错误......
它应该有效还是有另一种方法来实现这个测试?
吉勒
答案 0 :(得分:1)
它不应该工作。但是,CGAL/intersection_of_Polyhedra_3.h
template <typename Polyhedron, typename OutputIterator>
OutputIterator
intersection_Polyhedron_3_Polyhedron_3(
const Polyhedron& P,
const Polyhedron& Q,
OutputIterator out);
表示out
std::vector<Point_3>
代表P
和Q
之间的交叉折线。使用计数输出迭代器,您可以轻松地执行所需的谓词。