Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Boolean Operations (Nef_3) creating thin (e-16) slabs

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Boolean Operations (Nef_3) creating thin (e-16) slabs


Chronological Thread 
  • From: Peter Hachenberger <>
  • To:
  • Subject: Re: [cgal-discuss] Boolean Operations (Nef_3) creating thin (e-16) slabs
  • Date: Tue, 22 Jan 2008 13:22:53 +0100

Hi Stephen,

there is nothing like this in CGAL at the moment. As a matter of fact,
reliable rounding in 3D is still open research. As long as we cannot
give any nice robustness guarantees, we will not offer something like
that. So for instance, you have plane (that is not orthogonal to some
coordinate axis) and a point, which are pretty close together. If you
round the point coordinates and the plane coordinates there are actually
three events that can occur. First, you can find out that they are still
so far away that we don't want the vertex to collapse on the plane.
Second, the rounding determines that the point is on the plane. And
third and not less likely than second, the rounding finds the vertex on
the wrong side of the plane. In 2D the so-called snap rounding works
pretty nicely, but in 3D there are no good solutions, yet.

Peter

On Mon, 2008-01-21 at 12:51 -0800, Stephen Wong wrote:
> Hello,
>
>
>
> I’m finding that since CGAL is using exact representations of numbers
> in Boolean operations, working with datasets with floating-point data
> can produce correct, but less-than-desirable results. In one example,
> I have two cubes, one inside another, with two faces flush against
> each other. Since the numerical representation is double, during
> conversion to Gmpq or Gmpz, they are not the same plane and, thus
> after a CSG subtraction, a thin 1.0e-16 width slab is left (instead of
> removing part of that face). In another case the slab was as small as
> 1.0e-300.
>
>
>
> A numerical example is as such:
>
>
>
> Cube1 (0,0,0) – (3,3,3)
>
> Cube2 (1.0e-10, 0, 0) – (2, 2, 2)
>
> When Cube1 minus cube2 is performed, a slab of width 1.0e-10 is left.
>
>
>
> Is there a way for Nef_polyhedron_3 to remove very thin slabs based on
> a certain tolerance value? Rounding the input values will not always
> solve this problem.
>
>
>
> Thanks.
>
>
>
> Stephen
>
>




Archive powered by MHonArc 2.6.16.

Top of Page