Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Passing face_handles

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Passing face_handles


Chronological Thread 
  • From: "Laurent Rineau (GeometryFactory)" <>
  • To:
  • Subject: Re: [cgal-discuss] Passing face_handles
  • Date: Wed, 22 Apr 2009 10:11:35 +0200
  • Organization: GeometryFactory

On Monday 20 April 2009 10:08:56 Laurent Rineau (GeometryFactory) wrote:
> On Monday 20 April 2009 04:03:18
>
> wrote:
> > Hi all, I'm having issues with passing cgal objects and variables, ie
> > when a valid face_handle is passed to a different function it suddenly
> > changes all its values etc
> >
> > Face_handle current = surface[i], test =
> > surface[i]->neighbor(j);//current and test are both fine
> > CheckWall(current, test, &hazardType, &tested, &numTested);//inside
> > CheckWall() their values are completely different
>
> If your function CheckWall modifies the triangulation, handles to faces
> may be modified (like iterators of a vector when you insert things in it).

On Wednesday 22 April 2009 01:38:51 Haz wrote:
> No the function didn't modify the triangulation in any way, it was just
> comparing triangles and their relative angles/orientation and I commented
> out everything but one line (so the debugger would have something to stop
> on) and still same weird issue. Simply passing the face_handle seems to
> screw it up, with using pointers being the only way I found to not have it
> change.

In that case, the behavior of your code is strange. You should give us a
small
compilable code that shows that behavior, as well as the usual information:
- OS
- compiler, and compiler version
- CGAL version used,
- boost version used.
See http://www.cgal.org/bug_report.html


I reply below to another point of your first post in the current discussion...

On Monday 20 April 2009 04:03:18

wrote:
> I've also had problems with things as simple as integers, having to use the
> following code -
> int x = coord->x(), y = coord->y(), z = coord->z();
> fprintf(output, "%d %d %d\t", x,y,z);
> as opposed to - fprintf(output, "%d %d %d\t", coord->x(), coord->y(),z
> coord->z());
> or else the numbers printed are random gibberish.

You do not give us enough information! What is "coord"?! I imagine that is a
Kernel::Point_3 for a given kernel. Which kernel did you us? I doubt coord-
>x() is an int! Maybe it is a number type that can be converted to int, but I
am not surprised that printf does strange things with such a type. Do the
cast
yourself:
printf(output, "%d %d %d\t", (int) coord->x(),
(int) coord->y(),
(int) coord->z());

--
Laurent Rineau, PhD
Engineer at GeometryFactory
http://www.geometryfactory.com/




Archive powered by MHonArc 2.6.16.

Top of Page