Skip to Content.
Sympa Menu

cgal-discuss - RE: [cgal-discuss]To understand half edge data structure

Subject: CGAL users discussion list

List archive

RE: [cgal-discuss]To understand half edge data structure


Chronological Thread 
  • From: "samuel kim" <>
  • To: <>
  • Subject: RE: [cgal-discuss]To understand half edge data structure
  • Date: Wed, 7 May 2008 14:57:42 +0200
  • Organization: Purdue

Hi Mathieu and Janssens,

Thank you very much for your reply, I think you are right. So I tried it but
an error coming out.
When I run as the below,

Halfedge_around_facet_circulator pHalfedge = pFacet->facet_begin();
pHalfedge = pHalfedge->prev()->opposite();

error C2679: binary '=' : no operator found which takes a right-hand operand
of type 'CGAL::CGALi::In_place_list_iterator<T,Alloc>' (or there is no
acceptable conversion)

Would you mind if I ask you one more time How can I solve this?

Samuel

-----Original Message-----
From:


[mailto:]
On Behalf Of Mathieu
Bredif
Sent: Wednesday, May 07, 2008 2:34 PM
To:

Subject: Re: [cgal-discuss]To understand half edge data structure (VERY
IMPORTANT)

Hi,
the facet_begin() halfedge is arbitrary, your mistake is to assume
that facet2->facet_begin() is a particular halfedge handle.
My advice is to stay with halfedges without using the intermediate face
handles:

A C = AB->prev()->opposite()
A'C = AC->next_on_vertex() // or more verbosely AB->next()->opposite()

Mathieu

On Wed, May 7, 2008 at 1:58 PM, samuel kim
<>
wrote:
> Hi all,
>
> I am struggling in an implementation with the half edge data structure.
What I want to do is to travel the triangles from triangle# 1 to triangle# 3
as shown at attached picture. For this, I read CGAL document and implemented
based on what I understood. But result is not going to triangle# 3 but going
back to triangle# 1 from triangle#2. The below is the source code I tried.
>
> Facet_handle hf_new;
> Facet_iterator pFacet = facets_begin();
> Halfedge_around_facet_circulator pHalfedge = pFacet->facet_begin(); //
expecting to get the handle of half_edge1 on triangle#1
>
> hf_new = pHalfedge->prev()->opposite()->facet(); // expecting to get the
handle of facet of triangle#2
> pHalfedge = hf_new->facet_begin(); // expecting to get the handle of
half_edge2 in the triangle#2
>
> hf_new = pHalfedge->next()->opposite()->facet(); // expecting to get the
handle of facet of triangle#3
> pHalfedge = hf_new->facet_begin(); // expecting to get the handle of
half_edge2 on the triangle#3
>
>
> If I did as the above, the handle of facet was that of triangle#1. So I
want to ask you a question, when I do this,
> hf_new = pHalfedge->prev()->opposite()->facet(); // expecting to
get the handle of facet of triangle#2
> pHalfedge = hf_new->facet_begin(); // expecting to get the handle
of half_edge2 in the triangle#2
> Which edge handle should be returned in triangle#2?
> And what is the base rule to get to know the exact pointer of the handle
of half_edge data structure whenever travel triangles? Because I have tried
many times, and found that the pointer of handle of half_edge data structure
was varying at each triangle which was not expectable.
>
> Thank you for your help.
>
> Samuel
>
>
> --
> You are currently subscribed to cgal-discuss.
> To unsubscribe or access the archives, go to
> https://lists-sop.inria.fr/wws/info/cgal-discuss
>
--
You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://lists-sop.inria.fr/wws/info/cgal-discuss




Archive powered by MHonArc 2.6.16.

Top of Page