Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] circle-circle algorithm intersection

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] circle-circle algorithm intersection


Chronological Thread 
  • From: Claus Volko <>
  • To:
  • Subject: Re: [cgal-discuss] circle-circle algorithm intersection
  • Date: Sat, 4 Nov 2023 08:57:42 +0100
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-data: A9a23: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
  • Ironport-hdrordr: A9a23:7do5C6Baqew7yEjlHemV55DYdb4zR+YMi2TDtnoBMCC9F/bzqy nApoV/6faZskdyZJhko6HiBEDiexLhHPxOkO0s1N6ZNWGMhILrFuFfBODZslrd8kPFh4hgPG RbH5SWyuecMbG3t6nHCcCDfeod/A==
  • Ironport-phdr: A9a23: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
  • Ironport-sdr: 6545f98b_N8nd1ldI+DRLdBn8ZLmBdLu0t6pLevQbSYMemEtCqfX/CEi nhkT0JqywL99b/pwERsGy8X3us1nxr16DyW4FKg==

Just a random guess: Maybe you should use another kernel instead of

typedef CGAL::Exact_circular_kernel_2 Circular_k;

Am Fr., 3. Nov. 2023 um 15:21 Uhr schrieb Alessio Mochi <>:
Hello, I trying to do a circle-circle intersection algorithm. The problem is that the function gives a correct result only when the coordinates of the circle centers and the circle radii are integers.
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>

#include <CGAL/Exact_circular_kernel_2.h>
#include <CGAL/intersections.h>
#include <iostream>


typedef CGAL::Exact_circular_kernel_2 Circular_k;
typedef CGAL::Point_2<Circular_k>     Point_2k;
typedef CGAL::Circle_2<Circular_k>    Circle_2k;
typedef CGAL::Circular_arc_2<Circular_k> Circular_arc_2;
typedef CGAL::CK2_Intersection_traits<Circular_k, Circle_2k, Circle_2k>::type Intersection_result;

struct P2
{
    double x;
    double y;
};

struct CGALCircleCircleInterface
{
    bool result;
    P2 pout[2];
};



int main() 
{
    CGALCircleCircleInterface circle_circle_Interface;

    //Point2d(10.5, 0), 0.3, Point2d(10.8, 0), 0.4

    double circle1_x = 10.5;
    double circle1_y = 0;
    double circle2_x = 10.8;
    double circle2_y = 0;
    double ray1 = 0.3;
    double ray2= 0.4;

    // first circle with center (circle1_x, circle1_y) and radius ray1
    Circle_2k c1(Point_2k(circle1_x, circle1_y), ray1); 
    Circle_2k c2(Point_2k(circle2_x, circle2_y), ray2); 
    Point_2k p;

    // Store intersection points
    std::vector<Intersection_result>  res;

    // calculate intersection
    CGAL::intersection(c1, c2, std::back_inserter(res));

    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>;

    if (res.empty()) circle_circle_Interface.result = false;
    else circle_circle_Interface.result = true;

    for (int i = 0; i < res.size(); i++) {
        auto algPoint = std::get<0>(boost::get< boostRetVal >(res[i]));
        auto point = Point_2k(to_double(algPoint.x()), to_double(algPoint.y()));
        circle_circle_Interface.pout[i].x = CGAL::to_double(point.x());
        circle_circle_Interface.pout[i].y = CGAL::to_double(point.y());

    }

}

Th result of two intersections points store in structure CGALCircleCircleInterface get bad values.

bad values algorithm:
{10.483333333333333, -0.54746892352189469} 
{10.483333333333333, 0.54746892352189469} 

correct values:
{10.533333333333333, 0.29814239699997191} 
{10.533333333333333, -0.29814239699997191} 


--
You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://sympa.inria.fr/sympa/info/cgal-discuss



--
Dipl.-Ing. Dr. Claus D. Volko, BSc
http://www.cdvolko.net/






Archive powered by MHonArc 2.6.19+.

Top of Page