Subject: CGAL users discussion list
List archive
Re: [cgal-discuss] Is there is a function to check if two faces share a common edge in line arrangement in CGAL?
Chronological Thread
- From: Efi Fogel <>
- To:
- Subject: Re: [cgal-discuss] Is there is a function to check if two faces share a common edge in line arrangement in CGAL?
- Date: Sun, 2 Jul 2023 10:32:16 +0300
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
- Ironport-data: A9a23:8nb0sqgMROGO4iHantp1MMkkX161sRQKZh0ujC45NGQN5FlHY01je htvWGrVa/nfMGbzeI9/OYniph5Qv5DVz9VnS1BqrnxgQSxjpJueD7x1DG+gZnLIdpWroGFPt phFNIGYdKjYaleG+39B55C49SEUOZmgH+a6UqieUsxIbVcMYD87jh5+kPIOjIdtgNyoayuAo tqaT/f3YTdJ4BYqdDpNg06/gEk35q+q52tB5gdWic1j5TcyqVFFVPrzGonqdxMUcqEMdsamS uDKyq2O/2+x13/B3fv4+lpTWhRiro/6ZWBiuFIOM0SRqkQqShgJ70oOHKF0hXG7JNm+t4sZJ N1l7fRcQOqyV0HGsLx1vxJwS0mSMUDakVNuzLfWXcG7liX7n3XQL/pGKk8VbJJJ6tpNA2xhq P0SLDkzXDusvrfjqF67YrEEasULKcDqOMYYuyglw2iGVbApRpfMR6iM7thdtNsyrpoWTLCOO oxAN2UpNUuYC/FMEg9/5JYWkempiH7wfjlwp1ecpK5x6G/WpOB0+Oa1a4GJI4HXLSlTtmbbj U7Fx2j8ORcDGIOg8Gbb22KNiOCayEsXX6pLTOHinhJwu3WYyWUXTREXTlCmuuKRkV+7Q9sZK koO+yNoo7JayaCwZtz0Xhn9p3/d+xBFBIIWHOo95wWAjKHT5m51G1ToUBZnZv93q54meQYo2 3DUntntDAJdm5KsHCf1GqivkRu+Pi0cLGknbCACTBcY79SLnG3VpkKfJjqEOP7l5uAZCQ0c0 BjR83dj3+R7YdojkvTkrQqe0lpAs7CQFlZtjjg7SF5J+e+QWWJIT4mh6Fye6vcZaYjAEQHHs 38DlMyTqusJCPlhdRBhos1cRdlFBN7fa1UwZGKD+bF/r1xBHFb9JehtDMlWfhsBDyr9UWaBj LXvkQ1Q/oRPG3ChcLV6ZYm8Y+xzk/iwT4+7DKuLM4QVCnSUSONh1HE+DaJ39zC9+HXAbYliU XtmWZz8Uy9KVf4PIMSeGbZNgdfHORzSNUuKHcyhp/hW+bWZY3GRRN843KimP4gEAFe/iFyNq b53bpPUoz0GCbGWSneNreY7cwtRRVBlXsCeliCiXrTcSuaQMDpxVaG5LHJIU9ANopm5Yc+Tp CHkChUHlwuu7ZAFQC3TAk1ehHrUdc4XhRoG0eYEZD5EAlByOtr937RVbJYtY7gs+cpqyPM+H bFPeNyNDr4LAn7L8igUJ8u15oFzVgWZtSTXNQqcYR87Y8FBQS7N8YTaZQfBznQFIRe2ksocm Iee8D3nb6ANfTk/M/aOWsmTlwuwmVM/hNNNW1D5J4gPWUf0r6lvBS/Drt42BMAuLx/86COQ/ FuUC01ApM3mgYw8wP/Wj4+q8qarFOpfGBJBPm/5tLyZCwjTzlCB86RhDtmaXGn6f3zm3Ymff sNp9uHYHNxbuUdVoqx+Pq1Oz6lj1+DwprRf8BtoLE/LY3uvFLlkBHuMhutLiYFg2Z5bvhmQS GuU29wHJ4iMBtzpIGQRKCUhcO6H8/MewRvWzPYtJXTF9D1Fx6WGXWpSLiuzpnRkdpUtC7wcw MAlpMIywC68gEBzMt+50wZlx17VJXkEC6gappUWBbHwsTUSy3ZAX834KjT365SxedlzIhEUA juLtpHj2ZVY5GT/KkQWK1ac/NBzp5o0vDJy8GQjPHWMw9rMue821kZe8BMxVQVk8S9E2ONSZ EluO1FEGqGV2zJOmsJ4fnuNHjtZD0az4X3ByFoulUzYQXK3V2fLEnYPBOaV8G0d8ENeZjJ+/ ozE7ErAThDRY5jX8gYpfExqudjPbIZUzRLTvtKjE+CuPYgIURC8joCAPWM3+gbaW+Uvj0j5l MxW1edXa4igEAUPoqc+WrKo5Z5JRD+qfGV9EOxcpoUXFmTheRa36ziEC2a1Xuhvf/Xq00uJO /ZCF/J1dSaV9Xix92gAJKs2PbVLsuYj54MCdpPVNGc2ieajgQQzgq3A1BrVpTENc411nNcfO 7HhUWuIMlatiEt+n07Pq8h5OVSEX+QUWT2k3M6J3bUIM7khrNBTdVoD1+ronneNbypi0RGmn CLCQK70091dzZ9IoNr0N54aAiCIIszXUeiW+lq/qOZ1MNHFa5/Pkyg3qVDXGRtcEpVMetZwl JWL6MXW2mGctpkIcmnpobuzPIgX2teXQ8xWLdPREHlWuQCgSf3cyUIP1E7gIKMYje4HwNesQ jWJTfeZdPkXao97/2JUYS0PKCQtIf37QYm4rBzsssnWLAYW1DHGC9aV9XXJS2V/XQ1QMr3cD j7Egdqf1up6nq9tWiBdX+pHBqVmKmDNQaElLt39lQeJB1mS32+thOHQqgoC2xrqVF+0Scr02 MeQDFy2PhG/o7rBw9xlopR/9E9fRmp0he4rOFkR4ZhqgjS9F3QLNvkZLY5AMJxPjyjuz9vtU Vkhtof55fnVBlyosCkQ4egPmi+aD+0Kf9D4f3knphzMLSixA4yEDf1q8SIID7KavNf85LnPF D3c0iSY0tuNLlVBSuMa5/j9iuBirh8f7mxd4ljzyqQeHD5HaYjnFxVd8M5lWinOEsWLn0LOT YTwqaaoX2njIXPM/Q1cl7K51f3XUP4DD9nlUMtX/Ovihg==
- Ironport-hdrordr: A9a23:RXm2+KlTY9ygQAcmErOuD1uFWIDpDfIV3DAbv31ZSRFFG/Fw9v re5cjzsCWftN9/YgBEpTntAtjjfZqYz+8X3WBzB9aftWvdyQ+VxehZhOOI/9SjIU3DH4VmpM BdmsZFebvN5JtB4foSIjPULz/t+ra6GWmT69vj8w==
- Ironport-phdr: A9a23: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 E1gcTDFHvdf1uQ4M29sjwDYtN1EHvsOFcV5
- Ironport-sdr: 64a1280d_doVqxchCqhDFteUimkSY2riqg4aGNszk/3B1AHOYE4T08Nm y0dTrRxTzMmiZ4Rr7fRZpS0WBuZP7b9nuHXgfCA==
Iterate over the halfedges along the CCBs of one face; for each halfedge h check whether the incident face of the twin halfedge of h is identical to the other face.
____ _ ____ _
/_____/_) o /__________ __ //
(____ ( ( ( (_/ (_/-(-'_(/
_/
/_____/_) o /__________ __ //
(____ ( ( ( (_/ (_/-(-'_(/
_/
On Fri, 30 Jun 2023 at 11:52, XIAOWEI XING <> wrote:
Greetings,I would like to check if two faces share a common edge in line arrangement in CGAL. Currently, I have a line arrangement as follows.
#include <vector> #include <CGAL/Exact_predicates_inexact_constructions_kernel.h> #include <CGAL/Arr_non_caching_segment_traits_2.h> #include <CGAL/Arrangement_2.h> typedef CGAL::Exact_predicates_inexact_constructions_kernel CGAL_kernel; typedef CGAL_kernel::Point_2 CGAL_point_2; typedef CGAL_kernel::Segment_2 CGAL_segment_2; typedef CGAL::Arr_non_caching_segment_traits_2<CGAL_kernel> CGAL_traits; typedef CGAL::Arrangement_2<CGAL_traits> Arrangement; int main() { CGAL_point_2 p00(0, 0), p01(2, 0), p02(2, 2), p03(0, 2); CGAL_point_2 p10(0, 1.5), p11(1.5, 2), p20(1.5, 0), p21(0.5, 2); std::vector<CGAL_segment_2> segments = { CGAL_segment_2(p00, p01), CGAL_segment_2(p00, p03), CGAL_segment_2(p02, p01), CGAL_segment_2(p02, p03), CGAL_segment_2(p10, p11), CGAL_segment_2(p20, p21) }; Arrangement arr; CGAL::insert(arr, segsegs.begin(), segsegs.end()); int id1 = 0; for (auto f1 = arr.faces_begin(); f1 != arr.faces_end(); ++f1) { int id2 = 0; for (auto f2 = arr.faces_begin(); f2 != arr.faces_end(); ++f2) { if (id2 == id1) continue; // // Is there a function to check if these two faces share a common edge? // id2 += 1; } id1 += 1; } return 0; }
I considered to compare the edges of a face with the edges of another face. But I am not sure if there is a better method.Thanks a lot.Yours sincerely,Xiaowei Xing
--
You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://sympa.inria.fr/sympa/info/cgal-discuss
- Re: [cgal-discuss] Is there is a function to check if two faces share a common edge in line arrangement in CGAL?, Efi Fogel, 07/02/2023
Archive powered by MHonArc 2.6.19+.