An adaptable and extensible geometry kernel

Geometric algorithms are based on geometric objects such as points, lines and circles. The term Kernel refers to a collection of representations for constant-size geometric objects and operations on these representations. This paper describes how such a geometry kernel can be designed and implemented in C++, having special 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 [9], the Computational Geometry Algorithms Library.

[1]  Lee R. Nackman,et al.  Scientific and Engineering C , 1995 .

[2]  Hervé Brönnimann Designing and Implementing a General Purpose Halfedge Data Structure , 2001, Algorithm Engineering.

[3]  J. Edmonds Systems of distinct representatives and linear algebra , 1967 .

[4]  Todd L. Veldhuizen,et al.  Techniques for Scientific C , 1999 .

[5]  Matthew Harold Austern,et al.  Generic programming and the STL , 1998 .

[6]  Sylvain Pion,et al.  Interval arithmetic yields efficient dynamic filters for computational geometry , 1998, SCG '98.

[7]  Remco C. Veltkamp,et al.  Generic Geometric Programming in the Computational Geometry Algorithms Library , 1999, Comput. Graph. Forum.

[8]  Geert-Jan Giezeman,et al.  The CGAL Kernel: A Basis for Geometric Computation , 1996, WACG.

[9]  Erwin H. Bareiss,et al.  Computational Solutions of Matrix Problems Over an Integral Domain , 1972 .

[10]  Lutz Kettner,et al.  Using generic programming for designing a data structure for polyhedral surfaces , 1999, Comput. Geom..

[11]  Mark de Berg,et al.  Computational geometry: algorithms and applications , 1997 .

[12]  Christopher J. Van Wyk,et al.  Static analysis yields efficient exact integer arithmetic for computational geometry , 1996, TOGS.

[13]  A. M. Andrew,et al.  Another Efficient Algorithm for Convex Hulls in Two Dimensions , 1979, Inf. Process. Lett..

[14]  K. Mehlhorn,et al.  The LEDA class real number , 1996 .

[15]  Remco C. Veltkamp,et al.  Applications of the Generic Programming Paradigm in the Design of CGAL , 1998, Generic Programming.

[16]  Kurt Mehlhorn,et al.  LEDA: a platform for combinatorial and geometric computing , 1997, CACM.

[17]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[18]  Kurt Mehlhorn,et al.  LOOK: A Lazy Object-Oriented Kernel design for geometric computation , 2002, Comput. Geom..

[19]  Michael T. McClellan,et al.  The Exact Solution of Systems of Linear Equations with Polynomial Coefficients , 1973, JACM.

[20]  Chee Yap,et al.  The exact computation paradigm , 1995 .

[21]  Stefan Schirra Designing a Computational Geometry Algorithms Library , 1997 .

[22]  Geert-Jan Giezeman,et al.  On the design of CGAL a computational geometry algorithms library , 2000, Softw. Pract. Exp..

[23]  Kurt Mehlhorn,et al.  A platform for combinatorial and geometric computing , 1995 .

[24]  Lutz Kettner,et al.  On the design of CGAL the computational geometry algorithms library , 1998 .

[25]  Jonathan Richard Shewchuk,et al.  Adaptive Precision Floating-Point Arithmetic and Fast Robust Geometric Predicates , 1997, Discret. Comput. Geom..

[26]  Alexander A. Stepanov,et al.  Generic Programming , 1988, ISSAC.

[27]  Geert-Jan Giezeman,et al.  On the design of CGAL a computational geometry algorithms library , 2000 .

[28]  James O. Coplien,et al.  Curiously recurring template patterns , 1995 .

[29]  Kurt Mehlhorn,et al.  Look — a Lazy Object-Oriented Kernel for geometric computation , 2000, SCG '00.

[30]  Matthew H. Austern Generic programming and the STL - using and extending the C++ standard template library , 1999, Addison-Wesley professional computing series.

[31]  Mark H. Overmars Designing the Computational Geometry Algorithms Library CGAL , 1996, WACG.

[32]  Alexander A. Stepanov,et al.  Algorithm‐oriented generic libraries , 1994, Softw. Pract. Exp..

[33]  Guido D. Salvucci,et al.  Ieee standard for binary floating-point arithmetic , 1985 .

[34]  L Brenner Core library. , 1969, The New England journal of medicine.

[35]  Stefan Schirra,et al.  A Case Study on the Cost of Geometric Computing , 1999, ALENEX.