Thanks Pedro and Monique. These information are very helpful. I
haven’t had the chance to try to run the sample code. But if I think I
know what are needed to get it working.
I’d also recommend putting these types of examples in the
documentation. Most of the high level interface have good examples to
illustrate how to use them. But I’m hoping there are people also
interested in using CGAL in more creative ways and implement new algorithms in
addition to using existing ones offered in CGAL. These information will be especially
helpful for understanding the underlying data structures.
Best regards,
Louis
From: Pedro Machado
Manhães de Castro <> [mailto:=?ISO-8859-1?Q?
Pedro_Machado_Manh=E3es_de_Castro _<>?=]
Sent: Wednesday, March 26, 2008 3:02 AM
To:
Subject: Re: [cgal-discuss] Triangulation 2 data structure problem
Hello Louis,
I've implemented a program that begins a TDS from the very beginning.
One important thing to notice is that the TDS() is independent of the geometry,
and the Triangulation is not.
So if you wanna use the tds() of the Triangulation extra care have to be taken,
it is very error prone.
I also tried to comment what I think it is important to you to know.
However, I really suggest you to use the Triangulation_2 insert() and remove()
methods instead, believe me, you will have happier days.
Best regard,
Pedro Machado
PS: code att
On Wed, Mar 26, 2008 at 10:02 AM, <>
wrote:
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
>>>>
>>>
>>>
>>
>
--
You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://lists-sop.inria.fr/wws/info/cgal-discuss
|