Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Is CGAL::intersection buggy?

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Is CGAL::intersection buggy?


Chronological Thread 
  • From: Sebastien Loriot <>
  • To:
  • Subject: Re: [cgal-discuss] Is CGAL::intersection buggy?
  • Date: Fri, 4 Feb 2022 14:56:16 +0100
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-data: A9a23:HJmmA6jGia7trOo1pIni6kqmX161SBYKZh0ujC45NGQN5FlHY01je htvWmzQaa6CMTbyctx1aIqzpE9VuJ6GmNFiTAM/pS8xQSJjpJueD7x1DG+gZnLIdpWroGFPt phFNIGYdKjYaleG+39B55C49SEUOZmgH+a6UKidUsxIbVcMpB0J0HqPoMZkxN446TSFK1nV4 4mq+ZWDYAXNNwNcawr41YrT8HuDg9yp4Fv0jnRmDRyclAK2e9E9VfrzFInpR5fKatE88t2SG 44v+IqEElbxpH/BPD8KfoHTKSXmSpaKVeSHZ+E/t6KK2nCurQRquko32WZ1hUp/0120c95NJ Nplm6G0ZykwGpb1qb4hDB9nCQNcGZF/5+qSSZS/mZT7I0zudnLtx7BxCRhzM9FFvOlwBm5K+ LoTLzVlghKr3brnhuLmDLA21oJ/caEHP6tH0p1k5SrdCuwnRoyFRqHi6tpR3TN2jcdLdRrbT 5NINmAzM02dC/FJEmwHMZVvnMTwumbQLxt0i2iOnpNpz1GGmWSd15C0aIaPEjCQfu1ekU+c4 27H5G/kGQoyL82a0TPD83S2h+aJkzmTZW4JPLix9/ovn1jKg2JPVVsZUly0pfT/gUm7Mz5CF 6AK0gQTqYYc7WiQd+inY0K+n2SmnDogYsUFRoXW9zqx4qbT5g+YAE0NQThAdMEquacKqdoCh g7hczTBVW0HjVGFdZ6O3uzL8m7qaED5OUdHNHBUF1JUizX2iNhr1kqnczp1LEKiYjTI9dzYx jmLqG0hguxWg5JWkaq8+l/DjnSnoZ2hou8JCuf/Dj/NAuBRPtbNi2mUBb7zs60owGGxEALpg ZT8s5LChN3i9LnU/MB3fM0DHauy+9GOOyDGjFhkEvEJrmrxoC74IdoJumkldS+F1/ronxe5M Sc/XisBtfdu0IeCMMebnqrtUZ1xlfG4fTgbfqqMP4ESCnSOSON31Hg2ORT4M5HFn08rnqUyU ap3gu79ZUv2/Z9PlWLsL89EieFD7nlnnQv7HMmnpzz6j+f2TCPKEd8tbQrWBshkvfjsiFiEo 75i2z6ikUo3vBvWOXmJr+b+7DkicRAGOHwBg5cGK7feclc6QzxJ5j246epJRrGJVp99zo/gl kxRkGcBoLYmrXGYewiMdF55b7bjAcR2oX4hbH4jOF+p3z4oZoP2tPUTcJ4+fL8G8u1/zK4sH 6NVJZnYWvkfGC7a/zk9bIXmqNMweRmugzWINXX3bTU6ealmWAGUqMTveRHi9XVVAyfu7Zk+r rSs2xn1W50GQwg+Xs/aZOj+nVy0tHkZ3ul1WhKQcNVUfUzt9qlsKjDw3qdneZFSdU2by2LDh QiMABoeqe3cmKMP8YHE1fKesoOkM+piBU4FTWTW6LCBMyOFrGeuxIl3VvnRIWLQWWbyz6WVZ etPysb6PvBazk1BtJBxEuoywK8zu4nvqrtdwlg2FXnHdQ7wWLZpI33DwswW86MRm/lWvgy5X k/J8d5fYO3bNMTgGV8XBQwkcuXTiq1Oy2eKtaw4cBfg+St63LubSkEObROCvypQceluO4Q/z OZ95cMbt16lhhwxPorUhyxY7T7XfHkJUqFiqZRDRYG310wkzVZNZZGaASjzucndZ9JJO0gsA zmVmKuS2OgGlxSaKyI+RSrXwO5QpZUSoxQWnlUMEFKEx4jejfgt0RwNrDk6Q2y5FPmcPz6f5 4SqC6F0GUlK1zJhhcwGQGX1Xg8dWVuW/Uv+z1ZPn2rcJ6VtuqohM0VlUdthPmhAm46fQtSf1 L6dwWfhFz3teakdGwMsDFV9paWLocNZr2X/dQPOIyhBN5Y/aDvhxKSpYALkbvch7dwZ3CX6m AWhwAq8hWAX+8LdT23XxrR2DYgtdS0=
  • Ironport-hdrordr: A9a23:v28A9qoy9M4BYOJ3KkTFgjAaV5oEeYIsimQD101hICG9Kvbo8P xG785rsyMc6QxhIk3I9urwW5VoLUmxyXcx2/h0AV7AZniahILLFvAB0WKK+VSJcEeSygce79 YET0EXMqyNMbEQt6jHCXyDc+rIt+PnzEnHv4jjJjxWPHhXgulbnn9E4yigYzZLeDU=
  • Ironport-phdr: A9a23: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 AlqaGqCSLVWgL9tM2tsjV2E0aY=
  • Ironport-sdr: SajcjKTpUIRIEGyAnx8s0NFdUQbRgmSbrXyLbUwYL5QjbU+CVH9LldcMr1sr+NqQmJ8gb0FYHh /prvei/OkR67VHlEqcgezDtdALxNLg8+hZsV1HMHcLNuo1Fb5P/s07DZ7jzO25pAWw5uLivhs3 UuLCrWhQv+l+JKXhjLQuSSi3UcsW/eNFA00Gz4+bMpwkvHcvH+fiaia+1XR3824ucM9HT3AEjD yf3lOquEo+H8YwIBNd9ju2G3TDQfXXnfuALgQNuoD2pZ/siLVXUCdArOsOaAw3QWWUTu9iKT/Z h27Xs7+znILXwqJoTLVr1A92

I was about to answer the same thing as Christoper.

Best,

Sebastien

On 2/4/22 2:50 PM, Christopher Mitchell ( via cgal-discuss Mailing List) wrote:
I believe the problem may be that your second polygon is oriented CW instead of CCW.

Sincerely,
Christopher

On Fri, Feb 4, 2022 at 8:44 AM Bob Bill < <>> wrote:

Dear Sebastien,

thanks for the quick reply. I changed the code as you asked. However
the result is still the same. Does it work properly on your machine?

Best,
Bob

Il venerdì 4 febbraio 2022, 14:29:17 CET, Sebastien Loriot"
( <> via cgal-discuss
Mailing List) < <>>
ha scritto:


Replace

typedef CGAL::Simple_cartesian<double> K;

by

#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
typedef CGAL::Exact_predicates_exact_constructions_kernel K;

More details about why here:
https://www.cgal.org/FAQ.html#inexact_NT

<https://urldefense.proofpoint.com/v2/url?u=https-3A__www.cgal.org_FAQ.html-23inexact-5FNT&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=zsvFlmXfwI9H5xCMhxiHhQ&m=5WA2bcou1ZMQ4DLX2ggiRrrEe5CZNLQ0S7ktABh-owQLas3_p7oGcO_ORRdHWLwr&s=336f97XuAKXVN7JrE3mK_vYHoq6AXsJv3Kg_6UsR6xs&e=>

Best,

Sebastien.


On 2/4/22 2:26 PM, Bob Bill (
<> via cgal-discuss Mailing
List) wrote:
> I'm trying to find the area of the intersection between a square and
> another polygon. My code so far is the following (adapted from here
>

<https://stackoverflow.com/questions/10502672/compute-intersection-area-of-two-polygons-with-cgal

<https://urldefense.proofpoint.com/v2/url?u=https-3A__stackoverflow.com_questions_10502672_compute-2Dintersection-2Darea-2Dof-2Dtwo-2Dpolygons-2Dwith-2Dcgal&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=zsvFlmXfwI9H5xCMhxiHhQ&m=5WA2bcou1ZMQ4DLX2ggiRrrEe5CZNLQ0S7ktABh-owQLas3_p7oGcO_ORRdHWLwr&s=8-NlTFRUl4zF5FUpGJnJDmI9Ei9qujJ8SYEsZtGaF6g&e=>>,


> I just changed the points):
>
> #include<CGAL/Boolean_set_operations_2.h>
> #include<CGAL/Polygon_2.h>
> #include<CGAL/Polygon_2_algorithms.h>
> #include<CGAL/Polygon_with_holes_2.h>
> #include<CGAL/Simple_cartesian.h>
> #include<iostream>
>
> typedef CGAL::Simple_cartesian<double> K;
> typedef K::Point_2 Point;
> typedef CGAL::Polygon_2<K> Polygon_2;
> typedef CGAL::Polygon_with_holes_2<K> Polygon_with_holes_2;
>
> int main() {
> const std::vector<Point> pts{{-1, -1}, {1, -1}, {1, 1}, {-1, 1}};
> const std::vector<Point> pts2{{0, 1}, {0, 2}, {2, 1}, {1, 0}};
>
> Polygon_2 poly1(pts.begin(), pts.end());
> Polygon_2 poly2(pts2.begin(), pts2.end());
> std::list<Polygon_with_holes_2> polyI;
>
> CGAL::intersection(poly1, poly2, std::back_inserter(polyI));
>
> double totalArea = 0;
> typedef std::list<Polygon_with_holes_2>::iterator LIT;
> for (LIT lit = polyI.begin(); lit != polyI.end(); lit++) {
> std::cout << *lit << '\n';
> totalArea += lit->outer_boundary().area();
> }
> std::cout << "TotalArea::" << totalArea;
> }
>
> It compiles just fine, but then when I run it, I got the
following output:
> *3 0 1 1 1 0 1  0 *
> *TotalArea::0*
>
> meaning that two points are collinear and hence the area is 0.
What is
> my mistake here? I'm honestly a bit puzzled by the result and I
don't
> know how I am supposed to fix this.
>
>
> Best,
> Bob
>
>
>
>
>
>
>    Compute intersection area of two polygons with cgal
>
> Given the vertices of two convex polygons, what is the simplest
way of
> computing the area of their intersection ...

>
>

<https://stackoverflow.com/questions/10502672/compute-intersection-area-of-two-polygons-with-cgal

<https://urldefense.proofpoint.com/v2/url?u=https-3A__stackoverflow.com_questions_10502672_compute-2Dintersection-2Darea-2Dof-2Dtwo-2Dpolygons-2Dwith-2Dcgal&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=zsvFlmXfwI9H5xCMhxiHhQ&m=5WA2bcou1ZMQ4DLX2ggiRrrEe5CZNLQ0S7ktABh-owQLas3_p7oGcO_ORRdHWLwr&s=8-NlTFRUl4zF5FUpGJnJDmI9Ei9qujJ8SYEsZtGaF6g&e=>>
>
>
>
> --
> You are currently subscribed to cgal-discuss.
> To unsubscribe or access the archives, go to
> https://sympa.inria.fr/sympa/info/cgal-discuss

<https://urldefense.proofpoint.com/v2/url?u=https-3A__sympa.inria.fr_sympa_info_cgal-2Ddiscuss&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=zsvFlmXfwI9H5xCMhxiHhQ&m=5WA2bcou1ZMQ4DLX2ggiRrrEe5CZNLQ0S7ktABh-owQLas3_p7oGcO_ORRdHWLwr&s=K0yaj-QwjeaC3YzZcYX3TeHvMy_CSnKjNmL-qTZ42mY&e=>
>

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

<https://urldefense.proofpoint.com/v2/url?u=https-3A__sympa.inria.fr_sympa_info_cgal-2Ddiscuss&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=zsvFlmXfwI9H5xCMhxiHhQ&m=5WA2bcou1ZMQ4DLX2ggiRrrEe5CZNLQ0S7ktABh-owQLas3_p7oGcO_ORRdHWLwr&s=K0yaj-QwjeaC3YzZcYX3TeHvMy_CSnKjNmL-qTZ42mY&e=>




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


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




Archive powered by MHonArc 2.6.19+.

Top of Page