图书前言

     computer graphics remains one of the most exalting and rapidly growing eomputer fields. Since the appearance of the first edition of this book, computer graphics has now become a common element in user interfaces, data visualization, television commercials, motion pictures, and many, many other applications. Hardware devices and algorithms have been developed for improving the effectiveness, realism, and speed of picture generation, and the current trend in computer graphics is to incorporate more physics principles into three-dimensional graphics algorithms to better simulate the complex interactions between objects and the lighting environment.

Software Standards

Significant improvements in graphics software standards have been developed since the acceptance of the first graphics package, the Graphical Kernel System (GKS), by the International Standards Organization (ISO) and the American National Standards Institute (ANSI). The Programmer's Hierarchical Interactive Graphics Standard (PHIGS) is now both an ANSI and an ISO standard. Both PHIGS and the expanded PHIGS+ packages are Widely available. In addition, a number of popular industry packages have emerged, including Silicon Graphics GL (Graphics Library), OpenGL, the Pixar RenderMan interface, PostScript interpreters for page descriptions, and a variety of painting, drawing, and design systems.

New Topics

Because of the tremendous number of changes that have occurred in the field of computer graphics, we decided to completely rewrite the book for the second edition, while maintaining the general organization of the first edition. All topics from the first edition were expanded to include discussions of current technology, and a great many new topics have been added. Topics that have been significantly expanded include antialiasing, fractal and other object-representation methods, ray tracing, spline curves and surfaces, illumination models, surfacerendering methods, and computer animation. New topics that have been added to this second edition include virtual reality, parallel implementations for graphics algorithms, superquadrics, BSP trees, shape grammars, particle systems, physically based modeling, scientific visualization, business visualization, quaternion methods in graphics algorithms, distribution ray tracing, fast-Phong shading, radiosity, bump mapping, morphing, and discussions of various mathematical methods useful in graphics applications.

     This second edition can be used both as a text for students with no prior background in computer graphics and as a reference for graphics professionals. We emphasize basic principles needed to design, use, and understand computer graphics systems. Both hardware and software components of graphics systems are discussed, as well as various applications of computer graphics. We also include programming examples written in C to demonstrate the implementation and applications of the graphics algorithms. And we explore the features of PHIGS, PHIGS+, GKS, and other graphics libraries, while using PHIGS and PHIGS+ functions in the C programs to illustrate algorithm implementations and graphics applications.

Required Background

We assume no prior familiarity with computer graphics, but we do assume the reader has some knowledge of computer programming and basic data structures. A variety of mathematical methods are used in computer graphics algorithms, and these methods are discussed in some detail in the appendix. Mathematical topics covered in the appendix include techniques from analytic geometry, linear algebra, vector and tensor analysis, complex numbers, quaternions, and numerical analysis.

How to Use This Book as a Text

The material in this second edition evolved from notes used in a number of courses we have taught over the past several years, including introductory computer graphics, advanced graphics topics, scientific visualization, and graphics project courses. For a one-semester course, a subset of topics dealing with either two-dimensional methods or a combination of two-dimensional and three-dimensional topics can be chosen, depending on the requirements of a particular course. A two-semester course sequence can be used to cover the basic graphics concepts and methods in the first course and advanced three-dimensional methods and algorithms in the second course. For the serf-study reader, early chapters can be used to provide an understanding of graphics concepts, with individual topics selected from the later chapters according to the interests of the reader.

     At the undergraduate level, an introductory two-dimensional graphics course can be organized with a detailed treatment of fundamental topics from Chapters 2 through 8 plus the introduction to three-dimensional concepts and methods given in Chapter 9. Selected topics, such as color models, animation, spline curves, or two-dimensional fractal representations, from the later chapters could be used as supplemental material. For a graduate or upper-level undergraduate course, basic two-dimensional concepts and methods can be covered in the first half of the course, with selected topics from three-dimensional modeling, viewing, and rendering covered in the second half. A second, or advanced-topics, course can be used to cover selected topics from object representations, surface rendering, and computer animation.

    Chapter 1 is a survey of computer graphics, illustrating the diversity of applications areas. Following an introduction to the hardware and software components of graphics systems in Chapter 2, fundamental algorithms for the representation and display of two-dimensional graphics objects are presented in Chapters 3 and 4. These two chapters examine methods for producing basic picture components and techniques for adjusting size, color, and other object attributes. This introduces students to the programming techniques necessary for implementing graphics routines. Chapters 5 and 6 discuss two-dimensional geometric transformations and viewing algorithms. Methods for modeling and organizing two-dimensional picture components into separate structures are given in Chapter 7. In Chapter 8, we present graphics methods for user interfaces and for interactive input in various applications, including virtual-reality systems.

    Three-dimensional techniques are introduced in Chapter 9. We then discuss in Chapter 10 the different ways that three-dimensional objects can be graphically represented, depending on the characteristics of the objects. Chapter 11 presents methods for modeling and performing geometric transformations in three-dimensions. Methods for obtaining views of a three-dimensional scene are detailed in Chapter 12. The various algorithms for identifying visible surfaces in a scene are discussed in Chapter 13. Illumination models and surface-rendering methods, such as ray tracing and radiosity, are taken up in Chapter 14; Color mode.Is and methods are discussed in Chapter 15, and animation techniques are explored in Chapter 16.

Acknowledgments

Many people have contributed to this project in a variety of ways over the years. To the organizations and individuals who furnished photographs and other materials, we again express our appreciation. We also acknowledge the many helpful comments received form our students in various computer graphics and visualization courses and seminars. We are indebted to all those who provided  reviews or suggestions for improving the material covered in this book, and we  extend our apologies to anyone we may have failed to mention. Thank you: Ed Angel, Norman Badler, Phillip Barry, Brian Barsky, Hedley Bond, Bart Braden, Lara Burton, Robert Burton, Greg Chwelos, John Cross, Steve Cunningham, John DeCatrel, Victor Duvaneko, Gary Eerkes, Parris Egbert, Tony Faustini, Thomas Foley, Thomas Frank, Don Gillies, Jack Goldfeather, Georges Grinstein, Eric Haines, Robert Herbst, Larry Hodges, Eng-Kiat Koh, Mike Krogh, Michael Laszlo, Suzanne Lea, Michael May, Nelson Max, David McAllister, Jeffrey McConnell, Gary McDonald, C. L. Morgan, Gred Nielson, James Oliver, Lee-Hian Quek, Laurence Rainville, Paul Ross, David Salomon, Gunther Schrack, Steven Shafer, Cliff Shaffer, Pete Shirley, Carol Smith, Stephanie Smullen, Jeff Spears, William Taffe, Wai Wan Tsang, Spencer Thomas, Sam Uselton, David Wen, Bill Wicker, Andrew Woo, Angelo Yfantis, Marek Zaremba, and Michael Zyda. Our thanks go also to Robert Burton's Fall 1995 Computer Graphics course at Brigham Young University for running and testing the C code for this book. And we thank our editor Alan Apt, Sondra Chavez, and the Colorado staff for their help, suggestions, and encouragement during the preparation of this C version of the second edition. To our production editors, Bayani DeLeon and Joe Scordato, and the Prentice Hall staff, we offer our thanks for another outstanding production job. Finally, a special thanks goes to Carol Hubbard for her help in developing the C code.

Urbana-Champaign 

Donald Hearn

M. Pauline Baker