Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] CGAL::symmetric_difference error

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] CGAL::symmetric_difference error


Chronological Thread 
  • From: Ben Supnik <>
  • To:
  • Subject: Re: [cgal-discuss] CGAL::symmetric_difference error
  • Date: Thu, 03 Sep 2009 13:04:21 -0400

Hi Laurent,

Two thoughts:

- Make the kernel numeric requirements a lot more obvious...I would suggest that the minimum kernel requirements be:

1. On the package overview page so that for any given package I can see "can I use this, or will I need a new kernel that's more expensive and powerful than what I've got?". (For example, if I'm using CGAL for triangulations I might have an exact pred/inexact ctor kernel, but would have to "upgrade" to use boolean ops.)

2. Similarly, looking at the ref and user's manuals for both arrangement and boolean ops, the kernel requirement is sort of 'burried'. I would suggest that it be at the top of any class definition that can be templated directly on the kernel and in the intro to the package.

I can see how this might be frustrating to the developers of CGAL (why don't those users read the manuals) but perhaps it is an indication of the power of CGAL that we (the users) can use these immensely powerful and efficient computational geometry algorithms without knowing enough about how they work to realize when we're in kernel-trouble.

(And sometimes it's not entirely obvious. If you didn't know that the boolean operations construct an arrangement and may do so repeatedly in several steps when doing a join of many polygons, it might not be obvious why exact constructions and not just exact predicates are required.)

- My other idea is: simply use some C++ tagging in the kernel to cause the compiler to catch requirement failures. For example, in my experience arrangement_2 is almost completely unusable without exact constructions...it wouldn't be a loss to require an exact constructions kernel.

cheers
Ben


Laurent Rineau (GeometryFactory) wrote:
Le jeudi 03 septembre 2009 16:33:53, Bernd Gaertner a écrit :
Genís wrote:
CGAL error:
precondition violation!
Expr: comp_f(object, nodeP->object) != LARGER
File: /usr/include/CGAL/Multiset.h
Line: 214
The cause is most likely this line:
typedef CGAL::Cartesian<double> Kernel;
This is an inexact kernel that comes with no guarantee and whose usage
may lead to the indicated failures. CGAL has other kernels that do come
with guarantees, please see the FAQ item at
http://www.cgal.org/FAQ.html#inexact_NT, and the philosophy page at
http://www.cgal.org/philosophy.html.

Genis, as you are not at all the only user of CGAL that made that error. Can you tell us how you have happened to use that kernel? Did you see occurrences of that error-prone kernel in the manual? Where? Have you copied an example from CGAL? Which one?

There are only a few cases where the use of CGAL::Cartesian<double> is the right choice, and we, CGAL developers, should try to enhance the CGAL manual and example so that our users are not guided to make such errors. That is why I ask for feedback.


--
Scenery Home Page: http://scenery.x-plane.com/
Scenery blog: http://xplanescenery.blogspot.com/
Plugin SDK: http://www.xsquawkbox.net/xpsdk/
X-Plane Wiki: http://wiki.x-plane.com/
Scenery mailing list:

Developer mailing list:




Archive powered by MHonArc 2.6.16.

Top of Page