CGAL中能否复用Point_2对象完成2D线性与圆形相交计算?
CGAL中跨内核几何类型复用与类型转换问题
我想确认是否可以在CGAL中使用同一个Point_2对象,同时完成与Polygon_2的相交计算以及与Circle_2的相交计算。
当前类型定义
typedef CGAL::Exact_predicates_inexact_constructions_kernel LinearKernel; typedef CGAL::Algebraic_kernel_for_circles_2_2<LinearKernel::RT> AlgebraicKernel; typedef CGAL::Filtered_bbox_circular_kernel_2<CGAL::Circular_kernel_2<LinearKernel, AlgebraicKernel>> CircularKernel; typedef CGAL::Polygon_2<LinearKernel> Polygon2; typedef LinearKernel::Point_2 Point2; typedef LinearKernel::Line_2 Line2; typedef LinearKernel::Segment_2 Segment2; typedef CGAL::Circle_2<CircularKernel> Circle2; typedef CircularKernel::Point_2 CPoint2; typedef CircularKernel::Line_2 CLine2; typedef CircularKernel::Segment_2 CSegment2;
期望简化的类型定义
typedef CGAL::Exact_predicates_inexact_constructions_kernel LinearKernel; typedef CGAL::Algebraic_kernel_for_circles_2_2<LinearKernel::RT> AlgebraicKernel; typedef CGAL::Filtered_bbox_circular_kernel_2<CGAL::Circular_kernel_2<LinearKernel, AlgebraicKernel>> CircularKernel; typedef CGAL::Polygon_2<LinearKernel> Polygon2; typedef LinearKernel::Point_2 Point2; typedef LinearKernel::Line_2 Line2; typedef LinearKernel::Segment_2 Segment2; typedef CGAL::Circle_2<CircularKernel> Circle2;
遇到的问题
我需要实现两个相交判断:一是直线与多边形相交,二是同一条直线与圆形相交,打算通过CGAL::intersection()函数完成。但使用简化定义中的Line_2(来自LinearKernel)与Circle_2(来自CircularKernel)调用该函数时,出现了编译错误。
疑问
是否存在简便的方法在不同CGAL内核之间进行类型转换?
内容的提问来源于stack exchange,提问作者Caleb Merchant
相关产品推荐
相关产品推荐

