Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] K-3D and Nef 3D booleans - (almost) success

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] K-3D and Nef 3D booleans - (almost) success


Chronological Thread 
  • From: Peter Hachenberger <>
  • To:
  • Subject: Re: [cgal-discuss] K-3D and Nef 3D booleans - (almost) success
  • Date: Wed, 29 Aug 2007 14:00:12 +0200

I thought you might run into trouble with your approach, but maybe we
can still come around it. I guess you are still using your self-made
Cartesian kernel. Problem is that your inexact coordinates collide with
some sub-routines of Nef_3. We first compute the incidences of all
vertices and then compute the global structure. This for instance means,
that we know that from point x there is an outgoing edge in direction of
point y and the other way around, and we have to pair up x and y by
comparing the supporting lines of these two edge stubs. So, if you know
use inexact arithmetic, the two edge stubs are not on a common line any
more and cannot be paired up. That's were the error occurs that you
encountered. Fortunately, I wrote a second method for pairing up edges
and other entities, which does not use geometry but indexes. This
methods can be activated by using the SNC_indexed_items.

typedef Nef_polyhedron_3<Kernel, CGAL::SNC_indexed_items>
Nef_polyhedron_3;

Maybe that is enough to make your kernel run. I hope so, because I think
it's an interesting approach and I'd like to see it run. Note, that most
likely your kernel will have the downside that the representation will
not be unique any more. Because of the inexact geometry redundant edges
and facets cannot be identified any more. A different possibility is,
that your kernel even simplifies items that would not be simplified by
exact arithmetic because of rounding issues. I'm curious. Let me know
what happens.

Peter


On Wed, 2007-08-29 at 00:16 +0200, Bart Janssens wrote:
> Hi all,
>
> The CGAL booleans work nicely with K-3D now. Screenshots at
> http://www.k-3d.org/wiki/CGAL_Boolean_Operations
>
> One error remains if I rotate one of two intersecting cubes a lot:
>
> CGAL error: assertion violation!
> Expr: itl != it->second.end()
> File: /usr/include/CGAL/Nef_3/SNC_constructor.h
> Line: 1341
>
> It seems to happen during the boolean difference operation, but I haven't
> dug
> deep yet on why it happens. Pointers welcome.
>
> regards,
>
> Bart



Archive powered by MHonArc 2.6.16.

Top of Page