Abstract
Implicit surfaces are defined by a real valued function. They can easily be defined and manipulated and have therefore gained great popularity in computer graphics. This paper presents a purely functional implementation of a well known algorithm to polygonize implicit surfaces, based on spatial partitioning by means of octrees. While conventional implementations are laden with practical issues, our implementation in Clean is straightforward, implements the algorithm very concisely and makes essential use of lazy evaluation.
Further we present two enhancements to this basic algorithm: Introducing a memo function greatly improves time efficiency. The appearance of a visualized implicit surface can be greatly enhanced by providing normal vector information. For calculating normal vectors we adopt a lazy implementation of automatic differentiation.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Andrea L. Ames, David R. Nadeau, John L. Moreland. VRML 2.0 Sourcebook. New York, NY, 1996
Jules Bloomenthal. Polygonization of Implicit Surfaces. Computer Aided Geometric Design, vol. 5, no. 4, 1988, pp. 341–355
Jules Bloomenthal. An Implicit Surface Polygonizer. In Paul Heckbert, editor. Graphics Gems IV. New York, NY, 1994
Andreas Griewank. Evaluating Derivatives: Principles and Techniques of Algorithmic Differentiation. SIAM, Philadelphia, PA, 2000
John Hughes. Lazy Memo-functions. In Jean-Pierre Jouannaud: Functional Programming Languages and Computer Architecture. LNCS 201, Nancy, France, 1985
John Hughes. Why functional programming matters. The Computer Journal, vol.32, no. 2, 1989
Jerzy Karczmarczuk. Functional Di.erentiation of Computer Programs. Proc. Third International Summer School on Advanced Functional Programming, Baltimore, MD, 1998, pp. 195–203
Jerzy Karczmarczuk. Functional Coding of Differential Forms. Proc. First Scottish Workshop on Functional Programming, Stirling, Scotland, 1999
Jerzy Karczmarczuk. Geometric Modelling in Functional Style. Proc. Third Latin-American Conference on Functional Programming, Recife, Brazil, 1999
John O'Donnel, Gudula Rünger. A Coordination Level Functional Implementation of the Hierarchical Radiosity Algorithm. Draft proc. Glasgow Workshop on Functional Programming, Ullapool, Scotland, 1997
Alexander Pasko, Valery Adzhiev, Alexei Sourin, Vladimir Savchenko. Function Representation in Geometric Modeling: Concepts, Implementation and Applications. The Visual Computer, vol. 11, no. 8, 1995, pp. 429–446
Simon Peyton Jones, Simon Marlow, Conal Elliott. Stretching the storage Manager: Weak Pointers and Stable Names in Haskell. In Pieter Koopman, Chris Clack: Implementation of Functional Languages. LNCS 1868, Lochem, The Netherlands, 1999
Rinus Plasmeijer, Marko van Eekelen. Concurrent Clean Language Report-version 1.3. Technical Report CSI-R9816, Computing Science Institute, University of Nijmegen, The Netherlands, 1998
Louis B. Rall, George F. Corliss. An Introduction to Automatic Differentiation. In Martin Berz, Christian Bischof, George Corliss, Andreas Griewank, Editors. Computational Differentiation: Techniques, Applications, and Tools SIAM, Philadelphia, PA, 1996
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
Zörner, T.HG., Koopman, P., van Eekelen, M., Plasmeijer, R. (2001). Polygonizing Implicit Surfaces in a Purely Functional Way. In: Mohnen, M., Koopman, P. (eds) Implementation of Functional Languages. IFL 2000. Lecture Notes in Computer Science, vol 2011. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45361-X_10
Download citation
DOI: https://doi.org/10.1007/3-540-45361-X_10
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-41919-8
Online ISBN: 978-3-540-45361-1
eBook Packages: Springer Book Archive