You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 12:52:46