## An adaptable and extensible geometry kernel (2001)

### Cached

### Download Links

Venue: | In Proc. Workshop on Algorithm Engineering |

Citations: | 23 - 4 self |

### BibTeX

@INPROCEEDINGS{Hert01anadaptable,

author = {Susan Hert and Michael Hoffmann and Lutz Kettner and Sylvain Pion and Michael Seel},

title = {An adaptable and extensible geometry kernel},

booktitle = {In Proc. Workshop on Algorithm Engineering},

year = {2001},

pages = {79--90},

publisher = {Springer-Verlag}

}

### Years of Citing Articles

### OpenURL

### Abstract

ii

### Citations

973 |
Computational geometry: algorithms and applications
- Berg, Cheong, et al.
- 2008
(Show Context)
Citation Context ...nsions on top, having easy access to the part of their functionality that is provided by the kernel. 8.1 Kernel as a Traits Class Let us consider as a simple example Andrew’s variant of Graham’s scan =-=[1, 12]-=- for computing the convex hull of a set of points in two dimensions. This algorithm requires only a point type, the lexicographical comparison of points, and a left-turn predicate from its traits clas... |

635 | LEDA: a platform for combinatorial and geometric computing
- Mehlhorn, aher
- 1995
(Show Context)
Citation Context ...try kernel. The C++ libraries PLAGEO and SPAGEO [17] provide kernels for 2- and 3-dimensional objects using floating point arithmetic, a class hierarchy, and a common base class. The C++ library LEDA =-=[23]-=- provides in its geometry part two kernels, one using exact rational arithmetic and the other floating point arithmetic. The Java library GEOMLIB [3] provides a kernel built in a hierarchical manner a... |

134 | Adaptive precision floating-point arithmetic and fast robust geometric predicates
- Shewchuk
- 1996
(Show Context)
Citation Context ...used in those cases where the floating point calculation is not known to give the correct results, and the hope is that this happens seldom. The described technique is called floating point filtering =-=[6, 16, 28]-=-, and depending on how the error bound is computed, one refers to the filters as static, semi-static or dynamic. We will now describe how to adapt the kernel to use a statically filtered left-turn pre... |

116 |
Computational Geometry Algorithms Library. http://www.cgal.org
- CGAL
(Show Context)
Citation Context ...emphasis on adaptability, extensibility and efficiency. We achieve these goals following the generic programming paradigm and using templates as our tools. These ideas are realized and tested in CGAL =-=[10]-=-, the Computational Geometry Algorithms Library. Keywords: Computational geometry, library design, generic programming. 1 Introduction Geometric algorithms that manipulate constant-size objects such a... |

99 |
The C++ Programming Language, 3rdedition
- Stroustrup
- 1997
(Show Context)
Citation Context ...lly, we describe the models of this type of kernel that are provided in CGAL (Section 9). As our implementation is in C++ [9], we assume the reader is somewhat familiar with this language. Stroustrup =-=[30]-=- provides a general introduction to C++ template programming, which is used extensively in our design. Parts of the design of the library were inspired by the STL. Austern [2] provides a good referenc... |

94 | The exact computation paradigm
- Yap, Dubé
(Show Context)
Citation Context ...e Cartesian case, these models are called Simple cartesian<FT> and Cartesian<FT>. 9.3 Filtered Models The established approach for robust geometric algorithms following the exact computation paradigm =-=[32]-=- requires the exact evaluation of geometric predicates, i.e., decisions derived from geometric computations have to be correct. While this can be achieved straightforwardly by relying on an exact numb... |

91 | onherr. On the Design of CGAL, the Computational Geometry Algorithms Library. Research Report MPI-I-1-98, Max-Planck-Institut f ur Informatik, Saarbr ucken
- Fabri, Giezeman, et al.
- 1998
(Show Context)
Citation Context ...nes of CGAL [10], the Computational Geometry Algorithms Library, which is being developed in a common project of several universities and research institutes in Europe and Israel. The recent overview =-=[15]-=- gives an extensive account of functionality, design, and implementation techniques in the library. Generic programming is one of the tools used to achieve this flexibility [7, 24, 25]. In the origina... |

80 | The Gnu Multiple Precision Arithmetics Library 2.0.2 - Granlund - 1996 |

68 | Generic programming
- Musser, Stepanov
- 1989
(Show Context)
Citation Context ...on 2), we give a general description of our new kernel concept (Section 3). We then describe how this concept can be realized in an adaptable and extensible way under the generic programming paradigm =-=[24, 25]-=- (Sections 4 through 7). Section 8 illustrates the use of such a kernel and shows how the benefits described above are realized. Finally, we describe the models of this type of kernel that are provide... |

64 |
Generic Programming and the STL
- Austern
- 1998
(Show Context)
Citation Context ...is language. Stroustrup [30] provides a general introduction to C++ template programming, which is used extensively in our design. Parts of the design of the library were inspired by the STL. Austern =-=[2]-=- provides a good reference for generic programming and the STL, and a good reference for the C++ Standard Library is the book of Josuttis [19]. 2 Motivation and Previous Work Over the past 10 years, a... |

64 |
Traits: a new and useful template technique
- Myers
- 1995
(Show Context)
Citation Context ...ometric traits classes into the library, which separate the combinatorial part of an algorithm or data structure from the underlying geometry. The term traits class was originally introduced by Myers =-=[26]-=-; we use it here to refer to a class that aggregates (geometric) types and operations. By supplying different traits classes, the same algorithm can be applied to different kinds of objects. Thus the ... |

58 | Static analysis yields efficient exact integer arithmetic for computational geometry
- Fortune, Wyk
- 1996
(Show Context)
Citation Context ...used in those cases where the floating point calculation is not known to give the correct results, and the hope is that this happens seldom. The described technique is called floating point filtering =-=[6, 16, 28]-=-, and depending on how the error bound is computed, one refers to the filters as static, semi-static or dynamic. We will now describe how to adapt the kernel to use a statically filtered left-turn pre... |

57 | Algorithm-Oriented Generic Libraries
- Musser, Stepanov
- 1993
(Show Context)
Citation Context ...on 2), we give a general description of our new kernel concept (Section 3). We then describe how this concept can be realized in an adaptable and extensible way under the generic programming paradigm =-=[24, 25]-=- (Sections 4 through 7). Section 8 illustrates the use of such a kernel and shows how the benefits described above are realized. Finally, we describe the models of this type of kernel that are provide... |

53 | Interval arithmetic yields efficient dynamic filters for computational geometry, Discrete Applied Mathematics 109
- Brónnimann, Burnikel, et al.
- 2001
(Show Context)
Citation Context ...used in those cases where the floating point calculation is not known to give the correct results, and the hope is that this happens seldom. The described technique is called floating point filtering =-=[6, 16, 28]-=-, and depending on how the error bound is computed, one refers to the filters as static, semi-static or dynamic. We will now describe how to adapt the kernel to use a statically filtered left-turn pre... |

47 | onherr. The CGAL Kernel: A Basis for Geometric Computation
- Fabri, Giezeman, et al.
- 1996
(Show Context)
Citation Context ...lity, design, and implementation techniques in the library. Generic programming is one of the tools used to achieve this flexibility [7, 24, 25]. In the original design of the geometry kernel of CGAL =-=[14]-=-, the geometric objects were each parameterized by a representation class, which was in turn parameterized by a number type. This design provided easy exchange of representation classes, was extensibl... |

46 | Using generic programming for designing a data structure for polyhedral surfaces. Computational Geometry: Theory and Applications
- Kettner
- 1999
(Show Context)
Citation Context ...erived class as a template argument for a base class template. A similar idiom has been used in CGAL to solve cyclic template dependencies in the halfedge data structure and polyhedral surface design =-=[21]-=-. 3 The Kernel Concept and Architecture A geometry kernel consists of types used to represent geometric objects and operations on these types. Although from a C++ point of view both will be classes, w... |

45 |
754 for binary floating point arithmetic
- Standard
- 1985
(Show Context)
Citation Context ...d some arbitrary-precision number type, which we call exact. Assume, we know that the coordinates of the input points are double 5 A double precision floating point number type as defined in IEEE 754 =-=[18]-=-. 14svalues froms� . It can be shown (cf. [28]) that in this case the correct sign can be determined from the double calculation, if the absolute value of the result exceeds ¡s�s� 2.6645352591003765e-... |

42 |
Another efficient algorithm for convex hulls in two dimensions
- Andrew
- 1979
(Show Context)
Citation Context ...nsions on top, having easy access to the part of their functionality that is provided by the kernel. 8.1 Kernel as a Traits Class Let us consider as a simple example Andrew’s variant of Graham’s scan =-=[1, 12]-=- for computing the convex hull of a set of points in two dimensions. This algorithm requires only a point type, the lexicographical comparison of points, and a left-turn predicate from its traits clas... |

38 |
The C++ Standard Library: A Tutorial and Reference
- Josuttis
- 1999
(Show Context)
Citation Context ...he design of the library were inspired by the STL. Austern [2] provides a good reference for generic programming and the STL, and a good reference for the C++ Standard Library is the book of Josuttis =-=[19]-=-. 2 Motivation and Previous Work Over the past 10 years, a number of geometry libraries have been developed, each with its own notion of a geometry kernel. The C++ libraries PLAGEO and SPAGEO [17] pro... |

36 | C.K.: Classroom examples of robustness problems in geometric computations - Kettner, Mehlhorn, et al. - 2008 |

32 |
Curiously recurring template pattern
- COPLIEN
- 1995
(Show Context)
Citation Context ...geometric types; the ideas of traits classes and kernel representations have been unified. The implementation is accomplished by using a template programming idiom similar to the Barton-Nackman trick =-=[5, 11]-=- that uses a derived class as a template argument for a base class template. A similar idiom has been used in CGAL to solve cyclic template dependencies in the halfedge data structure and polyhedral s... |

32 |
Systems of distinct representatives and linear algebra
- Edmonds
- 1967
(Show Context)
Citation Context ...s the implementation and integration of a generic linear algebra module. Since the dimension is now a parameter of the interface and since the solution of linear systems can be done in different ways =-=[13, 4, 22]-=-, a linear algebra concept is part of the interface of the higher dimensional kernel models Cartesian d<FT,LA> and Homogeneous d<RT,LA>. The linear algebra concept provides a standard interface to mat... |

31 | EXACUS: Efficient and exact algorithms for curves and surfaces - Berberich, Eigenwillig, et al. - 2005 |

31 | Towards an open curved kernel - Emiris, Kakargias, et al. - 2004 |

29 |
Scientic and Engineering C
- Barton, Nackman
- 1994
(Show Context)
Citation Context ...metric types; the ideas oftraits classes and kernel representations have been unified. The implementation is accomplished by using a template programming idiom similar to the Barton-Nackman technique =-=[4,10]-=- that uses a derived class as a template argument for a base class template. A similar idiom has been used in Cgal to solve cyclic template dependencies in the halfedge data structure and polyhedral s... |

25 | Techniques for scientific C
- Veldhuizen
- 1999
(Show Context)
Citation Context ...ith pointers to functions, though, there is an additional indirection involved (lookup in the virtual function table); moreover, many compiler optimisations are not possible through virtual functions =-=[31]-=-, as the actual types are not known at compile time. This overhead is considerable in our context [27]. So if virtual functions are too costly, how about making construct line 2 a plain member functio... |

20 |
Template Library Programmer's Guide http://www.sgi.com/tech/stl
- Standard
(Show Context)
Citation Context ...ints. The last argument is the traits class, that is, our kernel. For a thorough description of the standard iterator concepts refer to the book of Austern [2] 12sor the online reference of SGI’s STL =-=[29]-=-. Informally speaking, one can think of randomaccess iterators as pointers to an array, while bidirectional iterators can be regarded as pointers to a doubly-linked list. Let us flesh out the example ... |

18 |
A case study on the cost of geometric computing
- Schirra
- 1999
(Show Context)
Citation Context ...ght about even more flexibility at a higher level in the library and, for example, allowed an easy means of comparison of different kernels in CGAL and LEDA using appropriate traits classes from CGAL =-=[27]-=-. As a kernel is generally considered to represent a basic set of building blocks for geometric computations, it is quite natural to assume that the kernel itself can be used as a traits class for man... |

16 | The LEDA class real number
- Burnikel, Mehlhorn, et al.
- 1996
(Show Context)
Citation Context ...eing classified wrongly; the whole combinatorics can break down, causing the algorithm to output garbage or even to loop endlessly. While there is an easy way out, that is, using an exact number type =-=[8, 20]-=- instead of double, this often has to be paid for with a considerable loss in performance. An inbetween solution is to do the calculations on the fast floating point type and calculate an error-bound ... |

16 |
The exact solution of systems of linear equations with polynomial coefficients
- McClellan
(Show Context)
Citation Context ...s the implementation and integration of a generic linear algebra module. Since the dimension is now a parameter of the interface and since the solution of linear systems can be done in different ways =-=[13, 4, 22]-=-, a linear algebra concept is part of the interface of the higher dimensional kernel models Cartesian d<FT,LA> and Homogeneous d<RT,LA>. The linear algebra concept provides a standard interface to mat... |

16 | K.Mehlhorn.Look: A lazy object-oriented kernel for geometric computation.In - Funke - 2000 |

15 | Applications of the generic programming paradigm in the design of CGAL
- Brönnimann, Kettner, et al.
- 2000
(Show Context)
Citation Context ...l. The recent overview [15] gives an extensive account of functionality, design, and implementation techniques in the library. Generic programming is one of the tools used to achieve this flexibility =-=[7, 24, 25]-=-. In the original design of the geometry kernel of CGAL [14], the geometric objects were each parameterized by a representation class, which was in turn parameterized by a number type. This design pro... |

11 | A generic lazy evaluation scheme for exact geometric computations - Pion, Fabri - 2007 |

9 |
for binary floating point arithmetic, ANSI/IEEE Std 754
- Standard
- 1985
(Show Context)
Citation Context ...try kernel concept described in Section 3. Infact,we use class templates to create a whole family ofmodels at once. The template 2 A double precision floating point number type as defined in IEEE 754 =-=[16]-=-.s88 Susan Hert et al. parameter is usually the number type used for coordinates and arithmetic. We categorize our kernel families according to coordinate representation, object reference and construc... |

3 |
GeomLib: Algorithm engineering for a geometric computing library
- Baker, Tamassia, et al.
- 1997
(Show Context)
Citation Context ...hy, and a common base class. The C++ library LEDA [23] provides in its geometry part two kernels, one using exact rational arithmetic and the other floating point arithmetic. The Java library GEOMLIB =-=[3]-=- provides a kernel built in a hierarchical manner and designed around Java interfaces. None has addressed the questions of easily exchangeable and adaptable kernels. Flexibility is one of the cornerst... |

3 | Designing and implementing a general purpose halfedge data structure - Brönnimann - 2001 |

2 |
NACKMAN, L.R.Scientific and Engineering C
- BARTON
- 1997
(Show Context)
Citation Context ...geometric types; the ideas of traits classes and kernel representations have been unified. The implementation is accomplished by using a template programming idiom similar to the Barton-Nackman trick =-=[5, 11]-=- that uses a derived class as a template argument for a base class template. A similar idiom has been used in CGAL to solve cyclic template dependencies in the halfedge data structure and polyhedral s... |

1 |
Computational solutions of matrix problems over an integral domain
- Barreis
- 1972
(Show Context)
Citation Context ...s the implementation and integration of a generic linear algebra module. Since the dimension is now a parameter of the interface and since the solution of linear systems can be done in different ways =-=[13, 4, 22]-=-, a linear algebra concept is part of the interface of the higher dimensional kernel models Cartesian d<FT,LA> and Homogeneous d<RT,LA>. The linear algebra concept provides a standard interface to mat... |

1 |
a library for planar geometry, and SpaGeo, a library for spatial geometry
- Giezeman
- 1994
(Show Context)
Citation Context ...tis [19]. 2 Motivation and Previous Work Over the past 10 years, a number of geometry libraries have been developed, each with its own notion of a geometry kernel. The C++ libraries PLAGEO and SPAGEO =-=[17]-=- provide kernels for 2- and 3-dimensional objects using floating point arithmetic, a class hierarchy, and a common base class. The C++ library LEDA [23] provides in its geometry part two kernels, one ... |

1 | Applications of the generic programming paradigm in the design of CGAL - ONNIMANN, KETTNER, et al. |

1 | Exact linear algebra - lep mla 1.0 - Ashoff, Seel |

1 | 2d and 3d kernel - Brönnimann, Fabri, et al. - 2006 |