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: "Louis Feng" <>
  • To: <>
  • Subject: RE: [cgal-discuss] Triangulation 2 data structure problem
  • Date: Sat, 29 Mar 2008 18:09:45 -0700
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=from:to:references:in-reply-to:subject:date:mime-version:content-type:x-mailer:thread-index:content-language:message-id; b=B62vKPkgUZ7T51vtiWEZLlVJwx/0fc6ekV9OE7DaMhiw4w7aBElkbkhbd3XuXEWSgRQznXjM0a1WJ8QjStvBKOTF4NUyo+5kZmNh52eTvE4IbxP5s+BuX6w0mg3A0htk3D3ospcwzed1hrujlOuPBEJSypBj8SFqOJhBiZxMn5Q=

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

 




Archive powered by MHonArc 2.6.16.

Top of Page