Subject: CGAL users discussion list
List archive
- From: Andreas Fabri <>
- To:
- Subject: Re: [cgal-discuss] Find intersections of a curve inside a mesh in 2D
- Date: Fri, 28 Jan 2022 11:26:18 +0100
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=None ; spf=None
- Ironport-data: A9a23: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
- Ironport-hdrordr: A9a23:h1heyK/VMWirvon4YXxuk+A8I+orL9Y04lQ7vn2ZKSY5TiXqrb HKoB1773DJYVkqOU3I9erwXpVoBEmsjKKdgrNwAV7BZmfbUQKTRekIh7cKgQeQfBEWndQtt5 uIHZIObOEYQWIK7vrS0U2fLNdl6tyG/Ke0pf629RtQZDAvTb5gqzpjAgyWCQlXSWB9dOIEPa vZ2fECnQOJXV4+Uv6Wb0N1ItTrlpn1r9bdWDYjPTQA0yXmt0LT1JfKVyeimi0mexd0/J8e3Q H+4nfE2pk=
- Ironport-phdr: A9a23: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 a/LlmKbWkcqwaeLBhoAPtbFMxATZM1XpiC7QA==
- Ironport-sdr: qPakG4j1+Ffo5xK7QV3BMnHw5A3nOXSlWVocPTTt6/oZpaVl3+EF7Uz/W6ZZqLbCl4T4XxEx7C wqr6HVW59kFYU6Wu+eRM2AsRlsUpNSyIR8wcjxPvFF6aH2ZkYtGlebtZQcsSa3+6g+fFtb3anJ tYbeyILqJ8tvR2z8h0SDv1jfynaQcEQWqeOyNyzesXmYr5Bxhk3wstqQ0ipvbYUycqWN26WAqk K/ksic/xAQe/8du6F8TGij6qTV3dhvbJceiPvXp5U93+NnRWg+NgUCx4mXZrw58iiWxQ0qcPzv GlADh/R+HWa4Au22HliTU476
Given a segment (p,q) while you go from face to face you
traverse the edge between the two faces.
On 1/27/2022 5:52 PM, Marco Feder
( via cgal-discuss Mailing List) wrote:
Thanks Andreas for your prompt reply,
Unfortunately, I don’t see how this can be
applied to my problem, since I need to find the
coordinates of the intersections only, not to loop over
faces. I’m trying to set up a minimal working example
where I have the unit square [0,1]^2 cut
by a straight line and the goal is to get the coords of
the two intersection points.
The following snippet is adapted from
example Example 9.3 (https://doc.cgal.org/latest/Triangulation_2/index.html#Triangulation_2ExampleBuildingaTriangulated).
So far I’ve only created the square and added the
segment. How can I compute the two intersection points?
Also, I don’t really see how to use
Line_face_circulator.
#include
<CGAL/Constrained_Delaunay_triangulation_2.h>
#include
<CGAL/Constrained_triangulation_plus_2.h>
#include
<CGAL/Exact_predicates_exact_constructions_kernel.h>
#include
<CGAL/Polygon_2.h>
#include
<vector>
typedef
CGAL::Exact_predicates_exact_constructions_kernel
K;
typedef
CGAL::Polygon_2<K>
Polygon_2;
typedef
CGAL::Exact_intersections_tag
Itag;
typedef
CGAL::Constrained_Delaunay_triangulation_2<K,
CGAL::Default,
Itag>
CDT;
typedef
CGAL::Constrained_triangulation_plus_2<CDT>
CDTP;
typedef
CDTP::Point
Point;
typedef
CDTP::Constraint_id
Cid;
typedef
CDTP::Vertex_handle
Vertex_handle;
void
print(const
CDTP &cdtp,
Cid
cid) {
std::cout
<<
"Polyline constraint:" <<
std::endl;
for (Vertex_handle
vh :
cdtp.vertices_in_constraint(cid)) {
std::cout
<<
vh->point()
<<
std::endl;
}
}
int
main() {
CDTP
cdtp;
std::vector<Point>
points;
points.push_back(Point(1,
1));
points.push_back(Point(0,
1));
points.push_back(Point(0,
0));
points.push_back(Point(1,
0));
Cid
id1 = cdtp.insert_constraint(points.begin(),
points.end()); //create square
Cid
id2 = cdtp.insert_constraint(Point(0.2,-0.2),Point(0.5,1.1));
//insert segment
print(cdtp,
id1);
return
0;
}
Best,
Marco
--
You are currently subscribed to cgal-discuss. To unsubscribe or access the archives, go to https://sympa.inria.fr/sympa/info/cgal-discuss
On 27 Jan 2022, at 10:40, Andreas Fabri <> wrote:
Hello,
You could use the Line_face_circulator
https://doc.cgal.org/latest/Triangulation_2/classCGAL_1_1Triangulation__2.html#a41a46211193d767f122504f2eb99189a
Best,
Andreas
On 1/27/2022 9:29 AM, Marco Feder ( via cgal-discuss Mailing List) wrote:Hi everyone,
I’m trying to see if it’s possible to use CGAL to perform the intersection between a mesh and a (closed) curve inside it. This curve has co-dimension 1, and I’m assuming it’s just the union of segments given by straight lines connecting its support points, which I know of course.
Basically my goal is to compute the coordinates of the blue points as in the attachment. As I am new to CGAL, I’d like to understand how you would attack the problem. Arrangement_2D cannot be used now because I do need the coordinates, so I was thinking to directly work with the 2D mesh package, even if I don’t see a straightforward way to get the result.
Best,Marco<cut_mesh_2.jpeg>
--
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
- [cgal-discuss] Find intersections of a curve inside a mesh in 2D, Marco Feder, 01/27/2022
- Re: [cgal-discuss] Find intersections of a curve inside a mesh in 2D, Andreas Fabri, 01/27/2022
- Re: [cgal-discuss] Find intersections of a curve inside a mesh in 2D, Marco Feder, 01/27/2022
- Re: [cgal-discuss] Find intersections of a curve inside a mesh in 2D, Andreas Fabri, 01/28/2022
- Re: [cgal-discuss] Find intersections of a curve inside a mesh in 2D, Marco Feder, 01/27/2022
- Re: [cgal-discuss] Find intersections of a curve inside a mesh in 2D, Andreas Fabri, 01/27/2022
Archive powered by MHonArc 2.6.19+.