Subject: CGAL users discussion list
List archive
- From: "Sebastien Loriot (GeometryFactory)" <>
- To:
- Subject: Re: [cgal-discuss] use zone() with Arrangement_2
- Date: Thu, 19 Nov 2015 19:28:49 +0100
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
- Ironport-phdr: 9a23:EDmRZRY3iJnvvAL6iQQN7X//LSx+4OfEezUN459isYplN5qZpcq8bnLW6fgltlLVR4KTs6sC0LqL9f67EjVYsN6oizMrTt9lb1c9k8IYnggtUoauKHbQC7rUVRE8B9lIT1R//nu2YgB/Ecf6YEDO8DXptWZBUiv2OQc9HOnpAIma153xjLDvvcOIKFwQ1XKUWvBbElaflU3prM4YgI9veO4a6yDihT92QdlQ3n5iPlmJnhzxtY+a9Z9n9DlM6bp6r5YTGfayQ6NtRrNRCHEqMns++dbwnRjFVwqGoHUGAUsMlR8dSTPI5hjhQpb8tGPesfB83zXSfeL7SrU5RS6zwa5gVBjymWZNf2oi9GbNi8tsyqdfiB2krh17hYXTZdfGZ7JFYqrBcIZCFiJ6VcFLWnkZDw==
- Organization: GeometryFactory
That's a bit tricky but since the arrangement is non-const,
the simplex type are the non-const one.
> Arrangement_2::Vertex_handle vertex;
> Arrangement_2::Halfedge_handle edge;
> Arrangement_2::Face_handle face;
Sebastien.
On 11/19/2015 06:50 PM, DamienDous wrote:
Hi All,
I try to use zone(arrangement, segment, back_inserter(intersected_objs))
funtion. Here is my code :
/* some includes */
typedef CGAL::Simple_cartesian<double> Kernel;
typedef CGAL::Arr_segment_traits_2<Kernel> Traits_2;
typedef CGAL::Arr_face_extended_dcel<Traits_2, unsigned int> Dcel;
typedef CGAL::Arrangement_2<Traits_2, Dcel> Arrangement_2;
int main()
{
/* Create arrangement */
CGAL::Arrangement_2<Traits_2, Dcel> arrangement;
insert(arrangement, Segment_2(Point_2(0, 0), Point_2(2, 0)));
insert(arrangement, Segment_2(Point_2(2, 0), Point_2(2, 2)));
insert(arrangement, Segment_2(Point_2(2, 2), Point_2(0, 2)));
insert(arrangement, Segment_2(Point_2(0, 2), Point_2(0, 0)));
/* Create segment */
const size_t segmentNumber = 3;
Segment_2 segments[segmentNumber];
segments[0] = Segment_2(Point_2(-2, -2), Point_2(-1, -1));
segments[1] = Segment_2(Point_2(-1, 1), Point_2(1, 1));
segments[2] = Segment_2(Point_2(0, 0), Point_2(3, 0));
/* Create structure to cast the objects given by zone function */
Arrangement_2::Vertex_const_handle vertex;
Arrangement_2::Halfedge_const_handle edge;
Arrangement_2::Face_const_handle face;
/* Test for each segment which objects it will cross */
for (size_t k = 0; k < segmentNumber; k++)
{
std::vector<CGAL::Object> intersected_objs;
CGAL::zone(arrangement, segments[k],
std::back_inserter(intersected_objs));
std::cout << "the segment intersects " <<
intersected_objs.size()
<< " objects" << std::endl;
for (size_t i = 0; i < intersected_objs.size(); i++) {
if (CGAL::assign(face, intersected_objs.at(i)))
{
// segments[k] is located inside a face:
if (face->is_unbounded())
std::cout << "inside the unbounded
face." << std::endl;
else
std::cout << "inside a bounded
face." << std::endl;
}
else if (CGAL::assign(edge, intersected_objs.at(i)))
{
// segments[k] is located on an edge:
std::cout << "on an edge: " << edge->curve()
<< std::endl;
}
else if (CGAL::assign(vertex,
intersected_objs.at(i)))
{
// segments[k] is located on a vertex:
if (vertex->is_isolated())
std::cout << "on an isolated vertex:
" << vertex->point() << std::endl;
else
std::cout << "on a vertex: " <<
vertex->point() << std::endl;
}
else
{
std::cout << "invalid object " << std::endl;
}
}
}
}
Right now I assume the return of zone function could be
Arrangement_2::Vertex_const_handle, Halfedge_const_handle,
Face_const_handle. I do get non-empty intersected object list (and the
number of intersected objects is correct), but when I try to object_cast its
elements to Vertex/Halfedge/Face, I only get NULL pointer values. The
documentation of zone() doesn't give a list of possible return type. What is
the right way to use this function?
Thanks a lot,
Damien
--
View this message in context:
http://cgal-discuss.949826.n4.nabble.com/use-zone-with-Arrangement-2-tp4661363.html
Sent from the cgal-discuss mailing list archive at Nabble.com.
- [cgal-discuss] use zone() with Arrangement_2, DamienDous, 11/19/2015
- Re: [cgal-discuss] use zone() with Arrangement_2, Sebastien Loriot (GeometryFactory), 11/19/2015
- Re: [cgal-discuss] use zone() with Arrangement_2, Efi Fogel, 11/19/2015
- Re: [cgal-discuss] use zone() with Arrangement_2, DamienDous, 11/20/2015
- Re: [cgal-discuss] use zone() with Arrangement_2, Sebastien Loriot (GeometryFactory), 11/19/2015
Archive powered by MHonArc 2.6.18.