Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Andrew, A. M. Another efficient algorithm for convex hulls in two dimensions. Inform. Process. Lett. 9,5 (1979), 216–219.
Austern, M. H.Generic Programming and the STL. Addison-Wesley, 1998.
Baker, J. E., Tamassia, R., AND Vismara, L. GeomLib: Algorithm engineering for a geometric computing library, 1997. (Preliminary report).
Barton, J. J., AND Nackman, L. R.Scientific and Engineering C++. Addison Wesley, Reading, MA, 1997.
Brönnimann, H., Burnikel, C., AND Pion, S. Interval arithmetic yields efficient dynamic filters for computational geometry. In Proc. 14th Annu. ACM Sympos. Comput. Geom. (1998), pp. 165–174.
Brönnimann, H., Kettner, L., Schirra, S., AND Veltkamp, R. Applications of the generic programming paradigm in the design of CGAL. In Generic Programming—Proceedings of a Dagstuhl Seminar (2000), M. Jazayeri, R. Loos, and D. Musser, Eds., LNCS 1766, Springer-Verlag.
Burnikel, C., Mehlhorn, K., AND Schirra, S. The LEDA class real number. Technical Report MPI-I-96-1-001, Max-Planck Institut Inform., Saarbrücken, Germany, Jan. 1996.
International standard ISO/IEC 14882: Programming languages-C++. American National Standards Institute, 11 West 42nd Street, New York 10036, 1998.
CGAL, the Computational Geometry Algorithms Library. http://www.cgal.org/.
Coplien, J. O. Curiously recurring template patterns. C++ Report (Feb. 1995), 24–27.
De Berg, M., VAN Kreveld, M., Overmars, M., AND Schwarzkopf, O.Computational Geometry: Algorithms and Applications. Springer-Verlag, Berlin, 1997.
Fabri, A., Giezeman, G.-J., Kettner, L., Schirra, S., AND Schönherr, S. The CGAL kernel: A basis for geometric computation. In Proc. 1st ACM Workshop on Appl. Comput. Geom. (1996), M. C. Lin and D. Manocha, Eds., vol. 1148 of Lecture Notes Comput. Sci., Springer-Verlag, pp. 191–202.
Fabri, A., Giezeman, G.-J., Kettner, L., Schirra, S., AND Schönherr, S. On the design of CGAL, the computational geometry algorithms library. Software-Practice and Experience 30 (2000), 1167–1202.
Fortune, S., and Van Wyk, C. J. Static analysis yields efficient exact integer arithmetic for computational geometry. Acm Trans. Graph. 15, 3 (July 1996), 223–248.
Giezeman, G.-J.PlaGeo, a library for planar geometry, and SpaGeo, a library for spatial geometry. Utrecht University, 1994.
IEEE Standard for binary floating point arithmetic, ANSI/IEEE Std 754-1985. New York, NY, 1985. Reprinted in SIGPLAN Notices, 22(2):9–25, 1987.
Josuttis, N. M.The C++ Standard Library, A Tutorial and Reference. Addison-Wesley, 1999.
Karamcheti, V., Li, C., Pechtchanski, I., AND Yap, C.The CORE Library Project, 1.2 ed., 1999. http://www.cs.nyu.edu/exact/core/.
Kettner, L. Using generic programming for designing a data structure for polyhedral surfaces. Comput. Geom. Theory Appl. 13 (1999), 65–90.
Mehlhorn, K., AND Näher, S.LEDA: A Platform for Combinatorial and Geometric Computing. Cambridge University Press, Cambridge, UK, 2000.
Musser, D. R., AND Stepanov, A. A. Generic programming. In 1st Intl. Joint Conf. of ISSAC-88 and AAEC-6 (1989), Springer LNCS 358, pp. 13–25.
Musser, D. R., AND Stepanov, A. A. Algorithm-oriented generic libraries. Software-Practice and Experience 24,7 (July 1994), 623–642.
Myers, N. C. Traits: A new and useful template technique. C++ Report (June 1995). http://www.cantrip.org/traits.html.
Schirra, S. A case study on the cost of geometric computing. In Proc. Workshop on Algorithm Engineering and Experimentation (1999), vol. 1619 of Lecture Notes Comput. Sci., Springer-Verlag, pp. 156–176.
Shewchuk, J. R. Adaptive precision floating-point arithmetic and fast robust geometric predicates. Discrete Comput. Geom. 18,3 (1997), 305–363.
Stroustrup, B.The C++ Programming Language, 3rd Edition. Addison-Wesley, 1997.
Veldhuizen, T. Techniques for scientific C++. Technical Report 542, Department of Computer Science, Indiana University, 2000. http://www.extreme.indiana.edu/~tveldhui/papers/techniques/.
Yap, C. K., AND Dubé, T. The exact computation paradigm. In Computing in Euclidean Geometry, D.-Z. Du and F. K. Hwang, Eds., 2nd ed., vol. 4 of Lecture Notes Series on Computing. World Scientific, Singapore, 1995, pp. 452–492.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Hert, S., Hoffmann, M., Kettner, L., Pion, S., Seel, M. (2001). An Adaptable and Extensible Geometry Kernel. In: Brodal, G.S., Frigioni, D., Marchetti-Spaccamela, A. (eds) Algorithm Engineering. WAE 2001. Lecture Notes in Computer Science, vol 2141. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-44688-5_7
Download citation
DOI: https://doi.org/10.1007/3-540-44688-5_7
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-42500-7
Online ISBN: 978-3-540-44688-0
eBook Packages: Springer Book Archive