This book teaches beginners how to create interesting computer graphics. It takes a top-down approach that starts readers creating interesting computer graphics from the start using OpenGL. Interactive Computer Graphics, 3/e features a top-down, programming-oriented approach to computer graphics. Capitalizing upon this top-down and hands-on approach, the text quickly gets readers writing interesting 3D graphics programs. Angel uses OpenGL, a graphics library supported by most workstations, as well as the C and C++ programming languages, allowing readers to be aware of what is happening at the lowest levels of computer-graphics programming. This revision includes extensive 2-color art and graphics to bring important concepts to life. This book is ideal for programmers looking for a hands-on introduction to computer-graphics programming that allows them to start writing 3D graphics programs early on.
"synopsis" may belong to another edition of this title.
This book is an introduction to computer graphics, with an emphasis on applications programming. Since I wrote my previous text1, the field has continued to experience enormous growth---a rate of growth that has exceeded most people's expectations, including my own. The recent release of the first feature-length computer-animated movie, the explosion of interest in graphical applications over the Internet, and the increase in graphics capabilities coupled with the reduced costs of both high- and low-end workstations are just a few of the exciting advances that have enhanced students' and professionals' interest in computer graphics.
A Top-Down Approach
These recent advances have reinforced my belief in a top-down, programming-oriented approach to introductory computer graphics. Although many computer-science and engineering departments now support more than one course in the subject, most students will take only a single course.
Such a course is placed in the curriculum after students have already studied programming, data structures, algorithms, software engineering, and basic mathematics. A class in computer graphics allows the instructor to build on these topics in a way that can be both informative and fun. I want these students to be programming three-dimensional applications as soon as possible. Low-level algorithms, such as those that draw lines or fill polygons, can be dealt with later, after students are creating graphics.
John Kemeny, a pioneer in computer education, adapted a familiar automobile analogy to give computer literacy a programming slant: You don't have to know what's under the hood to be literate, he agreed, but unless you know how to program, you'll be sitting in the back seat instead of driving. That same analogy applies to the way we teach computer graphics. One approach---the algorithmic approach---is to teach everything about what makes a car function: the engine, the transmission, the combustion process.
A second approach---the survey approach---is to hire a chauffeur, to sit back, and to see the world as a spectator. The third approach---the programming approach that I have adopted here---is to teach you how to drive, and how to take yourself wherever you want to go. As the old auto-rental commercial used to say, ``Let us put you in the driver's seat.''
Programming with OpenGLTM
The greatest impediment to implementing a programming-oriented course, and to writing a textbook for that course, has been the lack of a widely accepted grapics library or application programmer's interface (API). Difficulties have included high cost, limited availability, lack of generality, and high complexity. The development of OpenGL appears to have resolved most of the difficulties many of us have experienced with other APIs (such as GKS and PHIGS), and with the alternative of using home-brewed software. OpenGL today is supported by most workstation suppliers and is available for most platforms through third-party vendors. It is bundled with MicrosoftWindows NT, and both Microsoft and Silicon Graphics offer implementations for Windows 95. There is also available a free OpenGL version for most systems and an inexpensive LINUX version (see AppendixA.)
A graphics class teaches far more than the use of a particular API, but a good API makes it easier to teach key graphics topics, such as three-dimensional graphics, shading, client--server graphics, modeling, and implementation algorithms. I believe that OpenGL's capabilities and well-defined architecture lead to a stronger foundation for teaching both theoretical and practical aspects of the field, and for teaching about important new capabilities, such as texture mapping and compositing, that, until recently, were not supported in any API.
I switched my classes to OpenGL about 2 years ago, and the results astounded me. By the middle of the semester every student was able to write a moderately complex three-dimensional program that required understanding of three-dimensional viewing and event-driven input. In 15 years of teaching computer graphics, I had never come even close to this result. That class led me to rewrite my previous book from scratch.
This book is a textbook on computer graphics; it is not an OpenGL manual. Consequently, I do not cover all aspects of the OpenGL API, but rather explain what is necessary for mastering this book's contents. I present OpenGL at a level that should permit users of other APIs to have little difficulty with the material.
I have chosen to use the C programming language in this book, rather than C++ or another object-oriented language. There are two reasons for this decision. First, OpenGL is not object-oriented, so using C++ would not add significantly to the presentation, unless I were to insert an object-oriented geometric library between OpenGL and the user. I have not taken this step, despite its appealing features, because it would detract from the graphics and would make the book less accessible to students who are good programmers, but who are unfamiliar with object-oriented languages.
Second my experience with object-oriented graphics has been that object-oriented approaches shield the user from what is going on inside (as they should), whereas, in an introduction to computer graphics, I want readers to be aware of what is happening at the lowest levels. Although the use of computer graphics is a wonderful way to introduce students to object-oriented programming, in my view, an object-oriented approach is not the most effective way to teach graphics to computer science and engineering students.
This book is suitable for advanced undergraduates and first-year graduate students in computer science and engineering, and for students in other disciplines who have good programming skills. The book also will be useful to many professionals. I have taught approximately 100 short courses for professionals: my experiences with those students have had a great influence on what I have chosen to include in the book.
Prerequisites for the book are good programming skills in C, an understanding of basic data structures (linked list, trees), and a rudimentary knowledge of linear algebra and trigonometry. I have found that the mathematical backgrounds of computer-science, students, whether of undergraduates or of graduates, vary considerably. Hence, I have chosen to integrate into the text much of the linear algebra and geometry that is required for fundamental computer graphics.
Organization of the Book
The book is organized as follows. Chapter 1 overviews the field and introduces image formation by optical devices; thus, we start with three-dimensional concepts immediately. Chapter 2 introduces programming using OpenGL. Although the example program that we develop---each chapter has one or more complete programming examples---is two dimensional, it is embedded in a three-dimensional setting. In chaper 3, we discuss interactive graphics in a modern client--server setting, and develop event-driven graphics programs. Chapters 4 and 5 concentrate on three-dimensional concepts; Chapter 4 is concerned with defining and manipulating three-dimensional objects, whereas Chapter 5 is concerned with viewing them. Chapter 6 introduces light--material interactions and shading. These chapters should be covered in order, and can be done in about 10 weeks of a 15-week semester.
The last four chapters can be read in any order. All four are somewhat open ended, and can be covered at a survey level, or individual topics can be pursued in depth. Chapter 7 surveys implementation. It gives one or two major algorithms for each of the basic steps in the viewing pipeline.
Chapter 8 contains a number of topics that fit loosely under the heading of modeling. These topics range from hierarchical models, such as are used in figure animation, to fractals, to models of surfaces built from data.
Curves and surfaces are discussed in Chapter 9. Finally, Chapter 10 introduces many of the new capabilities that are now supported in graphics hardware and by OpenGL. All these techniques involve working with various buffers. We conclude with a short discussion of aliasing problems in computer graphics.
Programs from the book are included in Appendix A. Programs from the book, as well as alternative versions of these programs, are available over the Internet via anonymous ftp at:
ftp.cs.unm.edu/pub/angel Or at: ftp.aw.com/cseng/authors/angel
I welcome suggestions regarding other supplements that readers would find useful, as well as comments on the book itself:
I have been fortunate over the past few years to have worked with some wonderful students at UNM. They were the first to get me interested in OpenGL, and I have learned much from them. They include Pat Crossno, Tommie Daniel, Lisa Desjarlais, Lee Ann Fisk, Maria Gallegos, Brian Jones, Thomas Keller, Pat McCormick, Martin Muller, Jim Pinkerton, Dave Rogers, and Dave Vick. Many of the examples in the Color Plates were created by these students.
This book was written during my sabbatical; various parts were written in five different countries. The experience speaks wonders for portable computers and the universality of the Internet. Nevertheless the task would not have been accomplished without the help of a number of people and institutions that made their facilities available to me. I am greatly indebted to Jonas Montilva and Chris Birkbeck of the Universidad de los Andes (Venezuela), to Rodrigo Gallegos and Aristides Novoa of the Universidad Tecnologica Equinoccial (Ecuador), to Long Wen Chang of the National Tsing Hua University (Taiwan), and to Kin Hong Wong and Pheng Ann Heng of the Chinese University of Hong Kong. John Brayer and Jason Stewart at the University of New Mexico, and Helen Goldstein at Addison Wesley Longman, somehow managed to get a variety of items to me, wherever I happened to be.
Silicon Graphics and Apple Computer were generous in making equipment available to me. John Schimpf at Silicon Graphics was a helpful resource with regard to my OpenGL needs. Portable~Graphics, Template Graphics, and Metrowerks were kind enough to provide software so that I could test sample programs on a variety of platforms.
A number of other people provided significant help. I thank Gonzalo Cartagenova, Kathi Collins, Dave Klingler, Chuck Hansen, Mark Henne, Bernard Moret, Dick Nordhaus, Helen Saona, Gwen Sylvan, Carlton van Putten, and Mason Woo. I especially thank Ben Bederson and his class for class testing a draft of this manuscript. The sequence of images at the beginning of the Color Plates are from a project done by four students in that class.
Reviewers of my manuscript drafts provided a variety of viewpoints on what I should include, and on what level of presentation I should use. These reviewers included Hamid Arabnia (University of Georgia), Wayne Carlson (Ohio State University), Norman Chin (Silicon Graphics), Scott Grissom (University of Illinois, Springfield), Dick Phillips (formerly Los Alamos National Laboratories), Tom McReynolds (Silicon Graphics), and Jane Wilhelms (University of California, Santa Cruz). Although the final decisions may not reflect their views---which differed considerably from one another---each reviewer forced me to reflect on every page of the manuscript.
I acknowledge the whole production team at Addison Wesley Longman; these people, in addition to doing their usual great job, took on the additional burden of working with someone who was never in one place for long. My editor, Peter Gordon, was such a pleasure to work with that I am almost sorry the book is done. I am especially grateful to Lyn Dupré. I am not a natural writer. If the readers could see the original draft of this book, they would understand the wonders that Lyn does with a manuscript.
My wife Rose Mary Molnar, did the figures for my previous book, many of which form the basis for the figures in this book. Wisely choosing not to fight over use of our only notebook computer, she was able to preserve our relationship and to contribute in a thousand other ways.
Edward Angel Katmandu, NepalAbout the Author:
Edward Angel is currently a professor of Computer Science, Electrical and Computer Engineering and Media Arts at the University of New Mexico. He was recently named the Director of the Art Tech Center at UNM in the College of Fine Arts.
Professor Angel received his Ph.D. in electrical engineering from the University of Southern California in 1968 and has since held visiting positions in Sweden, India, and England. His present research interests focus on computer graphics and scientific visualization.
"About this title" may belong to another edition of this title.
Book Description Addison Wesley, 2002. Hardcover. Book Condition: New. Never used!. Bookseller Inventory # P110201773430