Abstract
Constructing interactive, animated 3D graphics applications has been notoriously difficult for well over twenty years. Even though significant advances in the state- of-the-art have been made, this situation persists. The system described here simplifies the programmatic construction of geometry in ways that we have not seen elsewhere, and does so within the framework of an accepted production language, C++. It has been our experience that the resulting programs are quite succinct and comprehensible, and execute efficiently. The programmer is presented with a simple, general interface that is both declarative and conforms to the functional programming paradigm. Pursuing a functional interface for developing interactive 3D applications is a novel concept that, in our experience, has been successful in providing a simple, powerful interface and a relatively straightforward implementation. The implementation of the system is highly object-oriented, relying heavily upon multiple dispatching. The system itself is extensible and adding new geometric primitives and operations is straightforward. Entirely new media types, such as sound and image, may be (and have been) added to the system.
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
Kavi Arya . A Functional Approach to Animation. In Computer Graphics Forum, 5(4), pages 297–311, December 1986.
Craig Chambers, David Ungar, and Elgin Lee. An Efficient Implementation of Self, a Dynamically-Typed Object-Oriented Language Based on Prototypes. In Lisp and Symbolic Computation 4, pages 243–281, 1991.
Roger B. Dannenberg, Christopher Lee Fraley, and Peter Velikonja. Fugue: A Functional Language for Sound Synthesis. In IEEE Computer, July 1991, 1991.
Conal Elliott, Greg Schechter, Ricky Yeung, and Salim Abi-Ezzi. TBAG: A High Level Framework for Interactive, Animated 3D Graphics Applications. In Computer Graphics (SIGGRAPH ’94 Proceedings), volume 28(2), July 1994.
A.J. Field and P.G. Harrison. Functional Programming. Addison Wesley, Reading, Mass., 1988.
Rich Gossweiler, Shuichi Koga Chris Long, and Randy Pausch. Virtual Environment Research Platform. In IEEE Symposium on Research Frontiers in Virtual Reality, October 1993.
International Standard ISO/IEC 9592. Programmer’s Hierarchical Interactive Graphics System (PHIGS), 1989.
Sonya E. Keene . Object-Oriented Programming in Common Lisp. Addison Wesley, Reading, Mass., 1989.
Larry Koved and Wayne L. Wooten. GROOP: An object-oriented toolkit for animated 3D graphics. In OOPSLA 93 Proceedings, October 1993.
Kubota Pacific Computer, Inc. Doré Programmer’s Guide, Release 5. 0, 1991.
Paul S. Strauss and Rikk Carey. An Object-Oriented 3D Graphics Toolkit. In Computer Graphics (SIGGRAPH ’92 Proceedings), volume 26(2), July 1992.
Bjarne Stroustrup and Dmitry Lenkov. Run-Time Type Identification for C++ (Revised yet again). Technical report, ANSI document x3jl6/92–0121, WG21/N0198, 1992.
Sun Microsystems, Inc. Solaris XGL 3.0 Reference Manual, 1992.
Mark A. Tarlton and P. Nong Tarlton. A framework for dynamic visual applications. In 1992 Symposium on Interactive 3D Graphics, pages 161–164, 1992.
Garry Wiegand and Bob Covey. HOOPS Reference Manual, Version 3. 0. Technical report, Ithaca Software, 1991.
Peter Wisskirchen. Object-Oriented Graphics: From GKS and PHIGS to Object-Oriented Systems. Springer-Verlag, Berlin, 1990.
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1996 EUROGRAPHICS The European Association for Computer Graphics
About this chapter
Cite this chapter
Schechter, G., Elliott, C., Yeung, R., Abi-Ezzi, S. (1996). Functional 3D Graphics in C++ — with an Object-Oriented, Multiple Dispatching Implementation. In: Wisskirchen, P. (eds) Object-Oriented and Mixed Programming Paradigms. Focus on Computer Graphics. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-61062-2_13
Download citation
DOI: https://doi.org/10.1007/978-3-642-61062-2_13
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-64676-8
Online ISBN: 978-3-642-61062-2
eBook Packages: Springer Book Archive