This introductory text recognizes that beginners learn computer graphics more quickly by doing it. Taking a top-down approach, the book gets you started early in writing interesting 3D graphics programs. Each chapter is built around a nontrivial application program. In this programming context, key principles and techniques are explained as needed and in increasing detail. Coverage includes all the topics required for a fundamental understanding of computer graphics, such as light-material interactions, shading, modeling, curves and surfaces, anti-aliasing, texture mapping, and compositing, as well as important hardware issues.
To enable this top-down approach, the book first describes an important application programmer's interface, OpenGL, a graphics library available on most platforms, from high-end graphics workstations to PCs. This high-level interface and a basic knowledge of C programming allow you to generate complex interactive applications, even applications involving 3D viewing and event-driven input. OpenGL's well-defined architecture also facilitates the book's technical discussions of algorithm implementations.
The Second Edition of this widely used book features enhanced discussion of hierarchy and object orientation, visualization, interaction, and projection; includes additional code examples, such as two new variants of the Sierpinski gasket, display of hierarchical models, shadow generation, and visualization; and covers functionality added to OpenGL 1.1, including vertex arrays.
"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.
Intended Audience
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:
angel@cs.unm.edu Acknowledgments
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, Nepal
more quickly by doing it. Taking a top-down approach, the book gets you started early in writing interesting 3D graphics programs. Each chapter is built around a nontrivial application program. In this programming context, key principles and techniques are explained as needed and in increasing detail. Coverage includes all the topics required for a fundamental understanding of computer graphics, such as light-material interactions, shading, modeling, curves and surfaces, anti-aliasing, texture mapping, and compositing, as well as important hardware issues.
To enable this top-down approach, the book first describes an important application programmer's interface, OpenGL, a graphics library available on most platforms, from high-end graphics workstations to PCs. This high-level interface and a basic knowledge of C programming allow you to generate complex interactive applications, even applications involving 3D viewing and event-driven input. OpenGL's well-defined architecture also facilitates the book's technical discussions of algorithm implementations.
The Second Edition of this widely used book features enhanced discussion of hierarchy and object orientation, visualization, interaction, and projection; includes additional code examples, such as two new variants of the Sierpinski gasket, display of hierarchical models, shadow generation, and visualization; and covers functionality added to OpenGL 1.1, including vertex arrays.
020138597XB04062001
"About this title" may belong to another edition of this title.
Shipping:
FREE
Within U.S.A.
Seller: Wonder Book, Frederick, MD, U.S.A.
Condition: Very Good. Very Good condition. 2nd edition. A copy that may have a few cosmetic defects. May also contain a few markings such as an owner's name, short gifter's inscription or light stamp. Seller Inventory # L16B-01770
Quantity: 1 available
Seller: Books From California, Simi Valley, CA, U.S.A.
hardcover. Condition: Good. Ex- library book with stamps/ stickers. Seller Inventory # mon0003288648
Quantity: 1 available
Seller: Goodwill of Silicon Valley, SAN JOSE, CA, U.S.A.
Condition: good. Supports Goodwill of Silicon Valley job training programs. The cover and pages are in Good condition! Any other included accessories are also in Good condition showing use. Use can include some highlighting and writing, page and cover creases as well as other types visible wear. Seller Inventory # GWSVV.020138597X.G
Quantity: 1 available
Seller: medimops, Berlin, Germany
Condition: very good. Gut/Very good: Buch bzw. Schutzumschlag mit wenigen Gebrauchsspuren an Einband, Schutzumschlag oder Seiten. / Describes a book or dust jacket that does show some signs of wear on either the binding, dust jacket or pages. Seller Inventory # M0020138597X-V
Quantity: 1 available
Seller: a2zbooks, Burgin, KY, U.S.A.
Hardcover. Condition: Very Good. 2nd Edition. The text appears clean, pages are white and crisp. Cuts on the front cover. Number stamps on the inside on the fly page. Quantity Available: 1. Shipped Weight: Under 1 kilo. Category: Computers & Internet; ISBN: 020138597X. ISBN/EAN: 9780201385977. Pictures of this item not already displayed here available upon request. Inventory No: 1561003003. Seller Inventory # 1561003003
Quantity: 1 available
Seller: a2zbooks, Burgin, KY, U.S.A.
Hardcover. Condition: Very Good. 2nd Edition. The text appears clean, the cover has very light lower corner scuffs. Cuts on the front cover. Number stamps on the inside on the fly page. Multiple copies available this title. Quantity Available: 4. Shipped Weight: Under 1 kilo. Category: Computers & Internet; ISBN: 020138597X. ISBN/EAN: 9780201385977. Pictures of this item not already displayed here available upon request. Inventory No: 1561002959. Seller Inventory # 1561002959
Quantity: 4 available
Seller: a2zbooks, Burgin, KY, U.S.A.
Hardcover. Condition: Good. 2nd Edition. The text appears to have writing and highlighting, the cover has light shelf and corner wear and corner scuffing. Binding is in good condition. Quantity Available: 1. Shipped Weight: Under 1 kilo. Category: Computers & Internet; ISBN: 020138597X. ISBN/EAN: 9780201385977. Pictures of this item not already displayed here available upon request. Inventory No: 1561003004. Seller Inventory # 1561003004
Quantity: 1 available
Seller: The Book Spot, Sioux Falls, MN, U.S.A.
Hardcover. Condition: New. Seller Inventory # Abebooks586010
Quantity: 1 available
Seller: Romtrade Corp., STERLING HEIGHTS, MI, U.S.A.
Condition: New. This is a Brand-new US Edition. This Item may be shipped from US or any other country as we have multiple locations worldwide. Seller Inventory # ABTA-275131
Quantity: 1 available
Seller: Basi6 International, Irving, TX, U.S.A.
Condition: Brand New. New. US edition. Expediting shipping for all USA and Europe orders excluding PO Box. Excellent Customer Service. Seller Inventory # ABEJUNE24-65436
Quantity: 1 available