Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Determine whether or not a Point is inside a 2D triangulation

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Determine whether or not a Point is inside a 2D triangulation


Chronological Thread 
  • From: Andreas Fabri <>
  • To:
  • Subject: Re: [cgal-discuss] Determine whether or not a Point is inside a 2D triangulation
  • Date: Fri, 17 Feb 2023 11:26:33 +0100
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-data: A9a23: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
  • Ironport-hdrordr: A9a23:UffHbaFuYjMqdTA8pLqEDseALOsnbusQ8zAXPiBKJSC9Afbo8/ xG/c506faaslYssR0b6Km90ey7MAvhHP1OkOos1NWZPTUO0VHAROoJgLcKgQeQfREWndQtsJ uIHZIOb+EYQWIK7/rS0U2fLNdl6tyG/Ke0pf629RhQZDAvTb5gqzpjAgyWCQlXSWB9dOEEPa vZ2fECnQOJXV4+Uv6Wb0N1I9Trlpn1r9bdWDYjPTQA0yXmt0LU1JfKVyeimi0mexd0/J8e3Q H+4nbE2pk=
  • Ironport-phdr: A9a23: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 wzEnTZfKjBkag==
  • Ironport-sdr: 63ef565a_kmqh7NMF6nSjri7Ww9/j0xkXv76KFBQFCA7ctz8ie3zBCVG pUMFMKHEhCJrTtgIy7WlwaqScDFbwTDXrFBFihA==

You mean for consecutive couples, right.

Unless I am wrong your polygon is self intersecting. That may make the traversing and marking inside outside,  wrong


On 2/17/2023 11:14 AM, Bob Bill ( via cgal-discuss Mailing List) wrote:
Thanks a lot Andreas for your quick reply! Even if I add: cdt.insert_constraint(va,vb);
for all the couples as done in this example (https://doc.cgal.org/latest/Mesh_2/Mesh_2_2conforming_8cpp-example.html#a3) I still get as result 0. I don't see what I'm doing wrong.

Best, Bob
Il venerdì 17 febbraio 2023, 11:07:07 CET, Andreas Fabri ha scritto:


You only insert points.

For a domain you have to insert polygons or segments that spit up the plane.

On 2/17/2023 10:59 AM, Bob Bill ( via cgal-discuss Mailing List) wrote:
Hi,

I need to determine if a Point is inside or outside a 2D mesh (in particular a constrained Delaunay triangulation). I’ve found the answer to this question (https://stackoverflow.com/questions/22448060/how-to-determine-a-point-is-inside-2d-mesh-or-not-cgal) on SO, but I can’t understand why this query is always negative in my particular application. Please see the following MWE, where the origin is not recognised as an internal point.

I don't see what is the problem, any hint is highly appreciated.

Best,
Bob

#include <CGAL/Constrained_Delaunay_triangulation_2.h>
#include <CGAL/Delaunay_mesh_face_base_2.h>
#include <CGAL/Delaunay_mesh_size_criteria_2.h>
#include <CGAL/Delaunay_mesher_2.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Triangulation_conformer_2.h>
#include <iostream>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Triangulation_vertex_base_2<K> Vb;
typedef CGAL::Delaunay_mesh_face_base_2<K> Fb;
typedef CGAL::Triangulation_data_structure_2<Vb, Fb> Tds;
typedef CGAL::Constrained_Delaunay_triangulation_2<K, Tds> CDT;
typedef CDT::Point Point_2;
typedef CDT::Vertex_handle Vertex_handle;
int main() {
CDT cdt;
// construct a constrained triangulation
Vertex_handle va = cdt.insert(Point_2(5., 5.));
Vertex_handle vb = cdt.insert(Point_2(-5., 5.));
Vertex_handle vc = cdt.insert(Point_2(4., 3.));
Vertex_handle vd = cdt.insert(Point_2(5., -5.));
Vertex_handle ve = cdt.insert(Point_2(6., 6.));
Vertex_handle vf = cdt.insert(Point_2(-6., 6.));
Vertex_handle vg = cdt.insert(Point_2(-6., -6.));
Vertex_handle vh = cdt.insert(Point_2(6., -6.));
std::cout << "Number of vertices before: " << cdt.number_of_vertices()
<< std::endl;
typename CDT::Face_handle fh = cdt.locate(Point_2{0., 0.});
std::cout << fh->is_in_domain() << std::endl;
}

--
You are currently subscribed to cgal-discuss. To unsubscribe or access the archives, go to https://sympa.inria.fr/sympa/info/cgal-discuss
-- 
Andreas Fabri, PhD
Chief Officer, GeometryFactory
Editor, The CGAL Project
--
You are currently subscribed to cgal-discuss. To unsubscribe or access the archives, go to 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

-- 
Andreas Fabri, PhD
Chief Officer, GeometryFactory
Editor, The CGAL Project



Archive powered by MHonArc 2.6.19+.

Top of Page