This text is the culmination of more than fifteen years of teaching and over twenty years of research in computer graphics. It is built on the author's conviction that computer graphics provides the foundation for a new paradigm in computing that is revolutionizing the ways in which humans interact with computers. The tools are finally here, in the forms of personal workstations and astounding arrays of applications programs, to provide everyone who has an interest and a modest budget with a computer graphics system that has high-quality, integrated tools for visualization. The goals of this book are to provide students with the algorithmic tools of traditional computer graphics and to introduce them to tools for visualization and image processing.

The production of this book, itself, illustrates the concepts of integration and visualization in computer graphics systems. It was designed and built from initial prospectus through cameraready copy on the author's Macintosh and MS-DOS workstations. All graphics appearing in the text were generated by the algorithms, application programs, and image sources described in the text. All images and image processing results shown in the text were generated, transformed, and embedded in the text on the same machine. This text is unique among books in the field because it is a product of the graphical systems and processes that it describes. By demonstrating to students the graphical capabilities of systems widely available on their own campuses, we hope to inspire them to explore and extend the graphics paradigm in their own programs.

Many of the advanced graphics tools described, such as digital image scanners, digital video protocols, image libraries of 3D clip-art and movies, and animation tools, were simply not available on earlier personal workstations at any price. The present text demonstrates not only the graphical capabilities of such tools but also illustrates how graphical information from diverse hardware and software systems can be integrated in one document. Our objective in this project was to produce a book distinguished by its emphasis on visualization, integration, and authenticity.


Our basic assumption is that most students of computer graphics are interested in tools for visualization, that is, algorithms, software, and hardware systems that will enable them to generate, manipulate, and present visual information. Such tools greatly improve one's ability to understand complex data and complicated systems and to communicate this understanding to others. The power of the visual paradigm is now widely recognized and is the foundation for graphicsbased systems such as Apple's Macintosh, Microsoft's Windows, and MIT's X Window System development environment for UNIX. Confirmation of the significance of the graphical paradigm is evident by the speed and unanimity with which computer companies have adopted the window/icon/menu/pointer (WIMP) interface. While "userfriendly" graphical interfaces do not necessarily guarantee quality in application programs, one of the most obvious and universal hallmarks of modern, highquality software is an elegant graphical interface.

Visualization also provides the key for solving one of the most severe problems posed by supercomputers and presentday, highcapacity instrumentation for measurement and data collection. This is the problem of the information explosion. Weather satellites, seismic sensors, and medical scanners produce data far more rapidly than trained humans can analyze it. By offering tools for visualization, computer graphics provides a highly efficient technique for data representation and reduction that helps humans extract meaning from the "fire hose" of raw data produced by modern instrumentation.


The second theme running through this textbook is the concept of integration of the synthetic and analytic aspects of computer graphics. Traditional texts in computer graphics have stressed the synthetic aspect - the representation and rendering of graphical models - with little or no attention to the analytical aspect. Image processing and analysis is the complementary area to image synthesis and constitutes an essential component of computer graphics. All of the mathematics and algorithmic techniques developed for image synthesis apply equally well to image analysis.

Image processing and analysis represents a rapidly growing field with applications in surveillance, automation, robotics, pattern recognition, and penbased operating systems. In this text, we attempt to integrate these two complementary areas by recognizing images generated by electronic transducers (video, scanners, and so on) as graphical objects equivalent to those generated by algorithmic techniques. Images of real objects are used throughout the book to illustrate graphics concepts, and a whole chapter is devoted to special techniques for image processing and analysis.

This integration approach is possible through the multimedia capabilities of modern workstations. Integration occurs at the application program level through the ability to capture photographic, video, and screen images and transfer them throughout many programs via the cut and paste option available on graphicsbased operating systems. Thus, graphical data from Pascal programs, painting and drawing programs, and various image digitizers are readily transferred from image enhancement programs to word processors, for example. The integration of applications programs is essential for the production of effective and attractive visual media in all fields of human communication. The advent of dynamic data types, such as the QuickTime™ protocol, has extended the domain of multimedia integration to include sound, animation, and video information.

Another level of integration in which computer graphics plays a key role is at the multitasking and network level. Examples of this integration are provided by Macintosh System 7 and Microsoft Windows NT which allow multiple windows to be open, each of which is actively processing an application program. Through networking, individual workstations become nodes of a massive, parallel architecture. Computer graphics provides the key for understanding and controlling such complex operating systems that would be virtually impenetrable if implemented on oldfashioned, commandline systems.

The final level of integration explored and demonstrated in this text is that of interoperability between computer systems. Standards such as the X Window protocol have simplified the communication of graphical information between heterogeneous networked workstations. Perhaps even more important are the de facto standards for data exchange between major workstation manufacturers like Sun, Apple and IBM. Already most major software manufacturers offer word processing, spread sheets, database, desktop publishing, and CAD programs for the Macintosh and IBM-PC lines which write data files accessible on both systems.

This interoperability at the data level has greatly reduced the risk factor for prospective buyers of workstation systems - and for textbook authors - considering the optimum platform. The advantages of standards for interoperability are apparent in the success of the PostScript page description language, AutoCAD's DFX file format, and the TIFF image file format. One of the goals of the Apple/IBM consortium is that of program interoperability. That level of integration will encourage graphics users to focus on the capabilities of visualization software (the important stuff) rather than the peculiarities of individual platforms (a moving target).


The advent of personal workstations and the software inspired by these computers makes possible the final feature distinguishing this book from previous efforts - authenticity. By authenticity, we simply mean that essentially all graphics presented in the book have been produced by the programs and tools described, rather than reproduced from the work of others. While many previous computer graphics texts contain excellent discussions of the principal algorithms used in computer graphics, the convincing, realistic graphics they present were rendered on expensive commercial systems not generally available to college students. Most computer graphics texts are, in fact, illustrated by some combination of three modes: a) lowresolution, bitmapped raster graphics, b) artist renderings illustrating graphics concepts, or c) reproductions of output from expensive, dedicated graphics workstations, which frequently come with attribution credits reading "Courtesy of Evans and Sutherland."

Previous graphics books have also frequently been limited to algorithms implemented in FORTRAN, BASIC, Pascal, or C with limited graphics capabilities. Significant application examples such as image processing and CAD, if presented at all, were drawn from a fragmented assortment of graphics workstations, mainframe computers, and specialpurpose machines. We finally have computers available with substantial computing power, excellent graphics rendering features, and a remarkable range of image generation and processing capabilities. A principal objective of this text is to demonstrate the breadth and depth of computer graphics tools available on the major personal workstations. By restricting the examples and illustrations to those readily available on lowcost machines - rather than relying on reproductions of output from a hodgepodge of specialized systems) - we have tried to produce a truly authentic computer graphics book. Students of this text need not gaze wistfully at "Courtesy of …" reproductions, but rather can plunge into the excitement of creating their own graphics masterpieces using the tools and techniques described.

A final aspect of authenticity is the theme of model authenticity developed throughout the book. The success of ray tracing and radiosity rendering models is interpreted as a direct result of incorporating the physics of light and energy. Model authenticity represents the key to realistic simulation of the behavior of physical objects interacting with their environment. This principle has been used to produce realistic graphical simulations of fractal landscapes, draped garments, human smile formation, and somersaulting Luxo lamps. Model authenticity is demonstrated by numerous detailed examples, including the simulation of a chaotic pendulum motion and the use of finite element analysis for visualizing beam deflection. Such techniques will play a critical role in the emerging field of virtual reality.

A Note to the Instructor

As a university instructor with many years experience, I know better than to tell other instructors how to use this book. However, the following note may help prospective instructors understand the motivation for the book's organization and how it might be used in various courses.


The purpose of Section One (Chapters 1 - 3) is to provide background and motivation for the subsequent two sections. Chapter 1 is intended to explain how visualization offers a coherent theme which provides the rationale for computer graphics and unifies its many aspects. Chapters 2 and 3 provide background on hardware, software, standards, and environments available for computer graphics. All three chapters are independent of each other, and none is required to understand the algorithmic development in Section Two.

Section Two (Chapters 4 - 11) presents the material of a standard computer graphics course through a systematic development and elaboration on the theme of N dimensions. A somewhat unique aspect of this approach, which I have found very helpful in my own courses, is to introduce homogeneous coordinates and transformations in one dimension. This simplifies the mathematical treatment and is easily extended to 2D and 3D in later chapters. Several styles of presentation graphics (pie charts, bar charts, and so on) are presented in a 1D context as examples of representing scalar quantities.

The section devotes increased attention to the increasing complexity involved with representing and rendering images of 2D and 3D scenes. Ray tracing and radiosity are presented as effective approaches for achieving visual realism, and detailed examples of realistic rendering are presented using the REYES architecture of RenderMan. The section concludes with an indepth discussion of fractals as objects of fractional dimension and great visual appeal. Several fractal algorithms are presented, and the chapter concludes with a discussion of iterated function systems as a promising technique for image compression. The material in this section is highly interdependent, and the chapters should be studied in order.

Section Three (Chapters 12 - 16) summarizes some of the most impressive software tools available for visualization. All of the languages and examples presented illustrate the important computer graphics concepts and algorithms of Section Two. Starting with the development of graphical user interfaces (GUIs) in Chapter 12, it spans the fields of design, engineering, mathematics, physics, image processing, and the design of virtual realities. Real visualization examples are presented, using such outstanding tools as Visual Basic, Mathematica, and the Spyglass series. The chapters of Section Three are independent of each other and may be used to provide material to illustrate the graphics concepts of Section Two.

Course Structure

Three possible course configurations in which this text could be used include the following:

A final comment on "reinventing the wheel" is appropriate at this point. Most of the algorithms described in the first two sections of the book have been effectively incorporated into many commercial computer graphics applications programs. So why do we sweat through the mathematics of matrix multiplication to implement these algorithms when applications programs have already solved our problem?

There are two points to consider when deciding whether to "build or buy." One is that, for most oneshot graphics applications, there probably exists an excellent commercial program capable of performing the graphics functions you require. In such cases, intelligent project management suggests that you purchase and utilize the appropriate application program.

The second point that should be stressed is that the hallmarks of modern, userfriendly software are graphical user interfaces and extensive use of computer graphics throughout. Software engineers and even casual programmers need some awareness of the underlying graphical data structures, transformations, and algorithms in order to implement graphics in the programs they build. The formalism of the first two sections is intended to develop this understanding of fundamental concepts essential for effective graphics programming. Because the commercial programs demonstrated in the text all incorporate fundamental graphical concepts, students will gain insight into the concepts themselves and inspiration for their own programming through exposure to wellwritten application programs.


A number of colleagues and institutions have contributed to the production of this textbook. First, I want to thank Earl McPeek, Linda Meehan, and Carla Kipper of Wm. C. Brown Publishers for their enthusiastic support of this project. My colleague Yong Auh contributed greatly to the conceptualization and critical review of the text and to the production of the Vectors and Matrices Appendix. I greatly appreciate the careful reading and creative wordsmithing by Theodora Gottstein and Sue Hess. Particular thanks are due my former student, colleague, and fellow biker, David Siegler, for his contributions in algorithm development, operating system details, and stimulating conversations. Dan Knudson, PHIGS guru and fellow climber, contributed greatly by writing the Fundamental Interactive Graphics System, FIGS, and developing examples of graphical user interfaces. I also appreciate the effort of former student, Scott Singer, in writing the Simulator GUI example. Debra Schroeder also deserves much thanks for appearing like an angel to enter proofreader corrections in the final stages of publication.

I owe a considerable debt to the professional computer graphics community, primarily SIGGRAPH, for the stimulation its publications, short courses and conferences provided. In particular, I want to thank Donald Greenberg, Brian Barsky, Craig Upson, Benoit Mandelbrot, Robert Wolff, Loren Carpenter, Richard Voss, and Alva Ray Smith for inspiring me with the beauty of their graphics and revealing the importance of visualization. Michael Barnsley and Dale Snider were particularly helpful in their reviews of the fractal chapter. Brad Horn of Wolfram Research made valuable corrections and improvements to the Mathematica discussion. V. I. Weingarten, President of Structural Analysis and Research Corporation, contributed to the accuracy of the discussion of finite element analysis. Brand Fortner, of Spyglass, Inc., supported the effort on volume visualization with his programs, Transform and Dicer.

Outside evaluation and critical review were of great assistance throughout the development of the book. In particular, I want to thank the following reviewers: J. D. Robertson, Daniel Lamet, Marc Armstrong, Rosalee NerheimWolfe, Mark Measures, Nan Schaller, Richard Detmer, Jeff Spears, John Lowther, J. Eugene Ball, and Evelyn Rozanski.

Finally, I want to thank the University of WisconsinParkside for a sabbatical year during which the structure of the project emerged and serious writing began. I am indebted to my colleagues Russell Ashdown, Phil Charest, Steven Dolins, Steven Firebaugh, Tim Fossum, Ben Greenebaum, Ron Gutkowski, Tony Larsen, Bill Moy, Bill Ogden, George Perdikaris, Rabah Rennane, Jim Wick, and my computer graphics students for their interest and feedback throughout the development of the book.

M. W. F.
January, 1993

On to Chapter 1