Я проверил ваш код, и он, кажется, работает.Обратите внимание, что точки пересечения хранятся как Circular_arc_point_2
.Используя ваш код, я добавил только следующие строки:
using boostRetVal = std::pair<CGAL::Circular_arc_point_2<CGAL::Filtered_bbox_circular_kernel_2<CGAL::Circular_kernel_2<CGAL::Cartesian<CGAL::Gmpq>, CGAL::Algebraic_kernel_for_circles_2_2<CGAL::Gmpq> > > > , unsigned>;
for(const auto& element : res) {
auto algPoint = std::get<0>( boost::get< boostRetVal >(element) );
auto point = Point_2(to_double(algPoint.x()), to_double(algPoint.y()));
std::cout << point << std::endl;
}
В качестве точек я использовал p(0,0)
, r(2,0)
, в качестве кружков c1(p,4)
, c2(r,1)
, тогда полученный результат был:
2
7/4 -4360591588697965/4503599627370496
7/4 4360591588697965/4503599627370496