Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Triangulation 2 data structure problem

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Triangulation 2 data structure problem


Chronological Thread 
  • From:
  • To:
  • Subject: Re: [cgal-discuss] Triangulation 2 data structure problem
  • Date: Wed, 26 Mar 2008 10:02:21 +0100

The most important information here might be the fact that "the set of maintained faces is topologically equivalent to a two-dimensional triangulated sphere." See the user manual (Section 1 - definition, in particular 26.1.2 The Set of Faces and Vertices, that also mentions the lower dimensional cases).

best
Monique Teillaud

Louis wrote:
Thanks for the information Pedro. Initially I didn't set the
neighborhood information because I don't know what are done
automatically in by the data structure itself or what the user has to
specify. When I insert a vertex or face, calling vertex.is_valid() or
face.is_valid() all returned true. But the triangulation data
structure remained invalid. Now after I set the neighborhood
information, the triangulation still says it's invalid. I'm also not
sure about boundary faces where 1 or 2 neighbor faces are not defined,
do I need to do anything special in this case?

What's frustrating is the lack of information in the documentation on
what are the necessary steps to build a valid triangulation using this
data structure. There are many weird behaviors in this data structure
that need answers. Why does the class initialize with 0 vertices, 1
face, 1 edge? Calling tds.clear() made sure they became 0, but when
you add the first vertex, somehow it's not counted
(number_of_vertices() returns 0).

I wonder if anyone has a concrete example or maybe skeleton code that
shows how to build a triangulation data structure from vertices and
faces.

Thanks,
Louis


On Tue, Mar 25, 2008 at 7:27 AM, Pedro Machado Manhães de Castro
<>
wrote:

I meant stuffs like:

fHandle->set_neighbor(0, some_face_handle_1);
fHandle->set_neighbor(1, some_face_handle_2);
fHandle->set_neighbor(2, some_face_handle_3);
sry (to not confuse even more),
Pedro



On Tue, Mar 25, 2008 at 3:25 PM, Pedro Machado Manhães de Castro
<>
wrote:

Hello,

Do you define the neighborhood of your face inside your 2nd for iteration?

Stuffs like:
fHandle->set_neighbor(0, some_face_handle_1);
fHandle->set_neighbor(0, some_face_handle_2);
fHandle->set_neighbor(0, some_face_handle_3);
inside

?

This constructor here is easier to use:
create_face(Face_handle f1, int i1,
Face_handle f2, int i2,
Face_handle f3, int i3)

You define a face by its 3 neighbors, i1, i2, i3 are any sequence defined

by the indices 0, 1, 2.

Hope it could help,
Best Regard,
Pedro Machado





On Tue, Mar 25, 2008 at 11:43 AM, Louis Feng
<>

wrote:

Hello,

I'm trying to construct a 2D triangle mesh from a list of vertices and
faces. I didn't want to use Polyhedron because I needed some properties

from

the 2D triangulation class. I'm using Triangulation_2 and
Triangulation_data_structure_2. Basically I use T.tds() to get a

reference

to the internal data structure. Then I add vertices and faces to it. But
this has become very confusing and I couldn't find examples on this.

An outline of my code:

triDS.set_dimension(2);
for(...) {
VertexHandle vHandle = triDS.create_vertex();
vHandle->set_point(Point2(...));
}
for(...) {
FaceHandle fHandle = triDS.create_face(vHandle1, vHandle2, vHandle3); }

When I check triDS.is_valid() at the end, it returns false. More
interestingly, before I add anything to triDS, when I check the

vertices,

edge, etc. I get this

Triangulation vertices: 0
Triangulation faces: 1
Triangulation full faces: 1
Triangulation edges: 1

So am I suppose to clear this before I add something to it? Looking at

the

template file for the data structure, it check this:

case 2:
result = result && edge_count == 3*face_count/2 ;
CGAL_triangulation_assertion(edge_count == 3*face_count/2);
break;

I'm not sure what the expected behavior is. Could someone tell me what

I'm

doing wrong and how this class suppose to be used? Thanks!

Louis

--
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