Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Wrong mirror vertex

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Wrong mirror vertex


Chronological Thread 
  • From: Manuel Caroli <>
  • To:
  • Subject: Re: [cgal-discuss] Wrong mirror vertex
  • Date: Wed, 29 Jul 2009 11:00:31 +0200

Dear 400555,

400555 wrote:
Hello !
Could you please help with my problem.

I make Delaunay_2 for set of points.

Then, on each iteration I change positions of point and accordingly to my criteria do Flip of some edges (only for finite).
(and I checked that new edge obtained after flipping also stand finite)
Note that as soon as you change point coordinates or do flips manually the triangulation is most probably not Delaunay anymore. So there are no guarantees anymore about the behavior of e.g. the insert function.

After somewhile I find that for one edge vertex(i) and vertex which is mirror_vertex to it - become the same.

Do you know how is it possible?
no, because I don't know what your code is doing. You might want to use the is_valid() functions from Triangulation_2 and Triangulation_data_structure_2 to check whether you still have a valid triangulation after each of your modifications.

There is a part of my code below. ov1 becomes equal to ov2. Someone knows why?
Your code below does not modify the triangulation. I suppose the error occurs already during modification. See above.

Can the fact that I have also square perimeter of vertices (which are lie on the line) be affected to this problem?
I'm sorry I don't understand this one. What do you mean by the square perimeter of a vertex?

About your question before about edge with info: As edges are not represented explicitly there is no possibility to store some info with it. However you could store the info in one of the incident faces, then you can look it up in constant time.

best

Manuel



for (Finite_edges_iterator2 eit = T.finite_edges_begin(); eit != T.finite_edges_end(); ++eit)
{

Edge2 ed = *eit;

Face_handle2 f = ed.first;
int i = ed.second;
Vertex_handle2 vh1 = f->vertex(T.cw(i));
Vertex_handle2 vh2 = f->vertex(T.ccw(i));

if ((f->vertex(i) != T.infinite_vertex()) && (f->mirror_vertex(i) != T.infinite_vertex()))
{

ov1 = f->vertex(i)->info();
ov2 = T.mirror_vertex(f, i)->info();

- - - - - -
}

- - - - - }

Thank you.





Archive powered by MHonArc 2.6.16.

Top of Page