Subject: CGAL users discussion list
List archive
- From: Stefan Schirra <>
- To:
- Subject: Re: [cgal-discuss] circle-circle algorithm intersection
- Date: Fri, 3 Nov 2023 16:14:33 +0100
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Pass ; spf=None
- Ironport-data: A9a23:Ptne768wOnypDzXFt8MgDrUDe3uTJUtcMsCJ2f8bNWPcYEJGY0x3m mZJWDuEM/+KNzD1eI1zaI/i9kgFusfdm9MwTFZp+ShEQiMRo6IpJ/zJdxaqZ3v6wu7rFR88s Z1GMrEsCOhuExcwcz/0auCJQUFUjP3OHPymYAL9EngZbRd+Tys8gg5Ulec8g4p56fC0GArlV ena+qUzA3f7nWYvWo4ow/jb8kg25ayp4GlwUmEWPJingneOzxH5M7pEfcldH1OgKqFIE+izQ fr0zb3R1gs1KD9wYj8Nuu+TnnwiGtY+DyDW4pZlc/TKbix5m8AH+v1T2Mzwxqtgo27hc9hZk L2hvHErIOsjFvWkdO81C3G0H8ziVEHvFXCuzXWX6KSuI0P6n3TEntR/V2wqGrEhpe9IAH9lp NMTcR5RV0XW7w626OrTpuhEgtkzJdXsJtlZsWom0DfYSPMvTpzOSbjQ6plU0V/chOgXQa+YO 5ZfM2EpN3wsYDUXUrsTIIkih+yoh2PlWzxDpxSevuwq5WmWyQV+3LXnLcDaPNCHLSlQth/D+ j+erjmnWnn2MvSY8gja3XOzu9XuxxvZYpgMSrO69cxl1Qj7Kms7TUd+uUGAifK2g0r7V9NEI FEP4QI1vK0q/QqqSMP8Vlu2uha5UgU0X8dAGvE98lvLwbGS/gCYQ20NQTJMYsE8u4k6SFTGy 2O0oj8gPhQ32JX9dJ5X3u78QeqaYHBPdz0xdmUfQBEb4tLuhog2g1idBpxgCaO5xJm9Uz353 znA/mB0iqQxnPw78fyx3WnGpDaw+bnPbAo+vTvMUkyfswhWWY+CZq6T02b908puFoiiY2O6j CA2oPTGtOEqJrORpROJW9QITe2I5e7aETjygmxPPpgG9ha18CSoYLELxSxyGxpxFvldeQ2zW kvivz1A1o4OP0mRTLRWZripAJ8A1pnQFtXCV9HVYOFRY5N3ShS1wSF2aWOU3EHviEIJg4hmH bu6KOGCVW07D4ZjxxqIH9Yt66chnH0C9DmCVKLFwASC+pvAQnysEJMuEkaEN8I954O6+DTly c5VbZa2+k8OQd/FQ3fl9KAIJgo3Nlk9P5f9rvJXesOlIgZLHGIACefb8Yg+er5KzrhkqePVw k6TAkNo6kLzpXniGzW4bnpObLDOX5EmiVkZOScqH0ij2ll9QIKJwZocSaAKfugcxLQ+9cJ3c vgLQNXfI/JtTj+cxS8RQ6Ogp6NfdTOqpzm0AQybXBYFcaRdGjP5ou3fQlO39Q0lLDaGis8lk rjxiiLZWcUiQiphPub3adWu7Uu653MAqblXQkf3f8F3RxzswtJQLx33sO4FMpwPGy7i3Rqf7 R6dWj0DlNnOoqg00djHvr+FpIGXCNlDHlJWMm3YzLSuPwzI1zOH7a4Zd8jQZhHbdmf/2Jv6V NVv1/umbcE2xgdbgbRzA5NA7PwY5eK2g5R40w49PnHAT2rzO4NaOnPcgPV+7Pxc9IR45zmzd FmEoORBGLOzP8jgLl4dCSwlYsmH1tAWgjPi1us0Emqr+B5I+Ke7bmsKMymukCB9KJ5HALEhy 8olu+8U7FWboTguOdCkkCtV1jqtKlotbqYZjawZUbTb0lcT9lJ/YJLnGnDX5rOLYI5yKUUEG GKfq5fDoLV+/XD8VUQPO0LD5sdjoKgfmQtryQYCLmuZm9Ceif4Q2gZQwAsNTQ9U70tm1vIqN 0dFb0cuBLSq+hF6oM59QmmXQh1wOxGayHPTklAMn3DrYHSpckfvL2QNH/mH025E0mBbfxldp Kq5zkS8WxnUXcjB5AkAcm87lO7CFPtfrhbjnuKjFOS7R6gKWyLv2PKSVDBZuinZDtMUr2yZg +tTpcJbS7DxbAwUqI0FU7iq76waEk24FTYTUMNa3f07GE/Hc2uPwhmIEUe6f/1NK9Hs8UOVD 89PJNpFZy+h1RSh/ywqOqoRH4BaxPIZxsIOWrfOF140t7GyqjlIspWJ0gPcgGQtYctlkOdjC 4f3Wg+BLFethipvqzeQlPVHB2u2X4BVLkm0luW46/4AGJ8/oflhOxN6mKe9u3KOdhBr5VSIt QfEfLXb1PFm1Z8qpYb3D6FfHE+hHLsfjghTHNyb6LyirO8jMPsicysRt0nuIwNMZ/0aQJJqk 7XItdf40E7Poaw5FWzU83VE+2+l+u3qNNe78OquRJWZocdGcM737F0I4CalL50MldpS6sStW hG3Lse9HTLQc8kI32VbMkCyDD5EY5karc7cSeeVru+DTBMGlxHBLZai/HDlYGtGbCBON5CW5 soYfRqxzogwkbmgzyPoyx2r71GU7bMjtWYbmwXNiASl
- Ironport-hdrordr: A9a23:xVYM+aMvCE0ENcBcTnWjsMiBIKoaSvp037BZ7SFMoHtuA6ulfq GV7ZAmPHDP5Qr5NEtQ++xofZPwJE80lqQY3WByB92ftWDd0QPCEGgh1/qA/9SKIUPDH4BmtZ uIP5IQNPTASXhBo4Lf6Am8Kdwpx96K68mT9J/j5kYobTtFL4Vp7wJCAA6dFUFsACZcA55RLu vm2uN34xqbVzAyZsS/PHMMWO/OvJnqufvdEGc7Li9iyDOhyReh6LvBGRCe2RsEFxNJzrE49W DZkwr/j5/T1c2T+1v97UGWy5xXneHqwtxFCNfJtMAJJi7pgh2rDb4RIYFqogpF3d2S1A==
- Ironport-phdr: A9a23:bF1jxhz1I0Txc6jXCzLlw1BlVkEcU1XcAAcZ59Idhq5Udez7ptK+Z hyZvK09xwCRFcWDsrQY0bSQ6/ihEUU7or+5+EgYd5JNUxJXwe43pCcHRPC/NEvgMfTxZDY7F skRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQviPgRpOOv1BpTSj8Oq3Oyu5pHfeQpFiCS+bL9oM Rm6sQbcusYUjId+N609zgfFrmZSd+lZ229lJEifkwrg6su14ZVu7zlet/U9+sBaTK70Zb44T btWDDQnN2A6+sjmvgTdQAWM+3URTHwYngJHDAbZ4h76WIzxsjbhuepmxCaaJ8z2QqsqVjmk8 qxmVQXniCYDNz4+7WHXlsl9h79VrR69uxByxZPfbYeIP/R8Y6zdZ8sXS2lPUMleWSNPH52yb 4UPAeUDIelWoJLwp0cMoBakGQWgGO3ixz1Oi3Tr3aM6yeMhEQTe0QI9A9IBrnrUo8/zNKwPT O660KnIzTTZb/NMwzj29Y/Fcgs9ofGXQb1wccvRyVM1Fw7ej1WQsoPlMymJ2eQWqWSb8uxgV eO2h24isQ5xrSWgydk3hYnUnIIVxUrI+jhnz4ssI9CzVUF0b8K+HpRKqyGaK5V5QtkkQ2xwp Co0yqELtJylcSQXyZkpxxHSZvyDfoWH4h/uVvudLCp3iX9rZL+yhwi+/Emix+HgWMS50UhHo yRFn9XStn4A1xre4dWJRPt6+0euwzeP1wbL5+FFJ0A0j6vbJIQ7zr4+jJoet1nIECzumEjuk aObeVgo9vKn5unoeLnquJGRO5V6hwz4L68ggNawAf4iPQgLR2Wb+fqz1Lnk/UDhRLVKk/I3n bPFsJDdP8QXuLS1DBNO0oo59ha/CTam3M0dnXYdI1JKZQyIgJP0O1HUL/D0F+qwjEq0nDdqw fDJIKHhD43QInXMjbvtZ7lw5kFGxAYtw91T/ZxZBqkEIP3pW0/xsNLYDgU+Mwyx2+vnE8l91 pgCVmKPA6+ZKrnSvESJ5uI0LOmAfpMauC3nJ/g44f7ujGY1mVoHcqmmwJQYdmu3Hul8I0WWe 3bjn8kOHX8MvgUlVOPqkkGNUSZPZ3auWKIx/iw3BJq8DYjfXoCtnKCB3CCjE5JKaWBJEFSMH W71eIWFQPcDdD+SItR6kjEfTrigS4oh1Qm0uwPgyrpnKPDU+iwCup752th1/b6bqBcp6DYhD 9iBy3rfCCZvj2YQTnk32rp+qApz0BCYwK1girtZE9JUoPhGWwN/OZ/HxPFhEIPPXBncdOuEW ErzQsm6GSpjCZUq0toWagB8Hc+jh1bNxW2xEroNnvuKApIztanT1ny0K8dmwGvdz/odiAwtT cJLcGGnnaVi7BP7BojTkkzfmbz5W74b2Xv26GqNxGzGh0pYURRqWO2RRmwEbUvXt87R51jNC bS1T6khM05EwMGOJ6FXcNKvgVgQF6SrA8jXf2/kwzT4Ph2P3L7ZNOICGk0Y1STZUg0flhwLu GyBPk44DzugpGTXCHpvE0juagXi67o2s2u1G2kzyQzCdEh9z/yt4BdAnuCHQPMSxKgsuTwu7 T5vWku73pfTAtWMqgB8Zqoabd5uqExf2zfhvhdmdoelM7gkg1cfdwptuEa7zAlsAYVBi9ICr WgligFpb7+e0RZEfjyU0JrtILKRJmShtAu3Zfvw3VfTmM2T5r9J6Pk8rAD7uxq1E0M573h9+ 91Iw3KA4Y+QSgEJF4/3UwMy/hd2qrvHeCZ76468OWREF66yv3eC3tsoALFg0RO8Z5JFN6jCE gbuEsocDszoKeowmlHvYAhWdOZVvLU5Oc+rbZ7kkOaiIfpgkTS6jG9G/JE100SC8DB5Q/LJ2 JBNyu+R3w+OXTPxxFm7tcW/lYdBbDAUVm2xrEqsTJVNfaZyfJwRIWa1LIu83ZNjgZ+oXndX+ FOpGkkJnsOkOFKTY1H7wQxMxBEPu3X0/Enwhzdwkjwvsu+exHmXn72kKEZBYDUNHzoH7x+kO 4W/gtEEUVL9agEokEHg/kPm3+1Bo685KWDPQEBOdiywLmd4U6L2uKDRBqwHoJ4uryhTV/yxJ F6ATbuo6QAGyCjjHnFE7DEgeHehodPkmR0/jWuSIHt5sWDWP819j0S6hpSUVbtK0zwKSTMtw yLLHVO8PsOz1dSPmNHIqaajUWPkU5RcfSTh0JmP8ie2rz4PY1X3j7W4ndvpFhI/2Cnw2oxxV CnGmx37Z5Hiy6WwNe8PklBAPFbn8II6H4h/ltF1n5QMwT0AgZ7T+3MbkGD1ONEd2KTkbXNLS yRZi9LS5QHk3gVkIBfrj8riSm6Wwsp7ffG7eWxQ0Tl78sZLTaKd47BJlzZvrRy0oErdbON8k TEU1fY1oCdG2qdV5Ex3lWPGSrkJeCsQdTThjRGJ88yzoO1MaWCjfKLxnEtykNa9Da2T9wRVW XL3YJAnTmd76sRyNk6J0WWms929PoWMK4hI8EbH9nWIx/JYI58wiPcQ0C9uOGan+GYg1/Z+l xtlm5ezoImALWxpuqO/GB9RcDPvNKZxsnngi7hTmsGO0sWhBJJkT38QQIDjTfOyChoTrvuhP B3IDTs973KSFrbSFxKF5wFqojicdvLjf2HSP3Qfwdh4EVOGOFdUgAEORh07hZF/HRvs2crgN UJw6Twc7EPipV1Ax6g7Unu3GnearwCuZDAuTZGZJxcD9QBO6XDeNsmG5/5yFSVVrdWx6RaAI WuBa0FUHHkEDwaaUkv7MODktryiu6CIQ/CzJPzUbfCSpPxCAr2WkIm33NIu9n6JJo2GbH1/H /Qn3VAZG3tiXdnfmnAKQiMbmijQdcHdqBrZmGU/q9Dt9On7UR7o/9HJAKAUNstg5la6jO+GJ 7yRnyk/Ii0e0Y0D2DnExd19lBYTjSpqajWgQ4MbrSCLQ6XXlataSRUcbmtlPc9MpcrQxyFrP sjWwpPw37981LsuDktdEEbmkYevbNALJGe0MBXGAlyKPfKIP2+Dxca/eq66RbBK6Ycc/xStp TaWFVPiNTWfhnHoUR6oK+RFkCCcOlRXpoi8dh9nDWWrQsjhb1W3N9p+jDt+xrNR5DuCLWkHL T11aF9AtJWU8DNRnvJlQSpK9Tx4K+jBni+W4+TSN4wZ9/dmQ2x1m+9c/HUm2u5V4SVDF5kX0 GPZqt9jpU3jk/Hak2Y+FkYS7GwQwtnY2Ccqcb/U/ZRBR3veqRcE7GHKTg8Pu8MgENrk/aZZ1 tnIkqv3bjZE6dPdu8UGVK22YIqKNmQsNR3xFXvaFgwAGHSwKXrUh01HitmT7XLTpYN8t57t3 Z8HRbNWXkEvGbUWBw42eb5KaIcyRT4inbOB2YQQ4mGiqRDKWMhAlpTaRvuOBu+1bj2Cy6RCZ l4NyLz0II4OLIK910EoOTwY1MzaXkHXW95KuChoaAQ59V5M/HZJRWo2w0v5awmp7Rf79Nawg w4/lgxkO6Im73Hx5VZyI1PFqCY6jVM+39no02j5mNvZLby/G4pNTTfytg00O5z3TgxodwL0k UE2bF8sqJpQlLQmfnstlQnd/J5GFvJRR7Beb1kcyKPOD8g=
- Ironport-sdr: 65450e64_NPbigGiqjaujfLya7X7TS4TZZC+PaQdDkl1aNiqOpBJzxvD 4M8m4x8hTxwNYvjb2qpg4m457/1/nPPaFthTztw==
Hi,
please have a look at the documentation of CGAL::to_double().
It returns a double approximation of a number, but not necessarily a best possible. There are no general guarantees whatsoever.
Best regards
Stefan
Am 03/11/2023 um 15:20 schrieb Alessio Mochi ( via cgal-discuss Mailing List):
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
- [cgal-discuss] circle-circle algorithm intersection, Alessio Mochi, 11/03/2023
- Re: [cgal-discuss] circle-circle algorithm intersection, Stefan Schirra, 11/03/2023
- Re: [cgal-discuss] circle-circle algorithm intersection, Marc Glisse, 11/04/2023
- Re: [cgal-discuss] circle-circle algorithm intersection, Alessio Mochi, 11/04/2023
- Re: [cgal-discuss] circle-circle algorithm intersection, Claus Volko, 11/04/2023
Archive powered by MHonArc 2.6.19+.