Vous voulez voir cette page en français ? Cliquez ici.


or
Sign in to turn on 1-Click ordering.
or
Amazon Prime Free Trial required. Sign up when you check out. Learn More
More Buying Choices
Have one to sell? Sell yours here
Tell the Publisher!
I'd like to read this book on Kindle

Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.

Computer Graphics: Principles and Practice in C (2nd Edition) [Hardcover]

James D. Foley , Andries van Dam , Steven K. Feiner , John F. Hughes
4.4 out of 5 stars  See all reviews (38 customer reviews)
List Price: CDN$ 104.99
Price: CDN$ 82.78 & FREE Shipping. Details
You Save: CDN$ 22.21 (21%)
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
Only 1 left in stock (more on the way).
Ships from and sold by Amazon.ca. Gift-wrap available.
Want it delivered Thursday, July 31? Choose One-Day Shipping at checkout.

Formats

Amazon Price New from Used from
Hardcover CDN $82.78  
Paperback --  
There is a newer edition of this item:
Computer Graphics: Principles and Practice (3rd Edition) Computer Graphics: Principles and Practice (3rd Edition)
CDN$ 84.41
In Stock.
Join Amazon Student in Canada


Book Description

Aug. 4 1995 0201848406 978-0201848403 2
The best-selling book on computer graphics is now available in this C-language version. All code has been converted into C, and changes through the ninth printing of the second edition have been incorporated. The book's many outstanding features continue to ensure its position as the standard computer graphics text and reference.
By uniquely combining current concepts and practical applications in computer graphics, four well-known authors provide here the most comprehensive, authoritative, and up-to-date coverage of the field. The important algorithms in 2D and 3D graphics are detailed for easy implementation, including a close look at the more subtle special cases. There is also a thorough presentation of the mathematical principles of geometric transformations and viewing.

Features and Benefits


Customers Who Bought This Item Also Bought


Product Details


Product Description

From Amazon

Computer Graphics: Principles and Practice is the most exhaustive overview of computer graphics techniques available. This textbook's 21 chapters cover graphics hardware, user interface software, rendering and a host of other subjects. Assuming a solid background in computer science or a related field, Computer Graphics gives example programs in C and provides exercises at the end of each chapter to test your knowledge of the material. The guide has more than 100 beautiful, four-colour photographs that illustrate important topics and algorithms, such as ray tracing and bump maps, and also inspire you to acquire the skills necessary to produce them. Encyclopaedic in its coverage, the book has a good table of contents so that you can immediately turn to information on the z-Buffer algorithm or the chapter on animation. --Jake Bond

From the Inside Flap

"Interactive graphics is a field whose time has come. Until recently it was an esoteric specialty involving expensive display a hardware, substantial computer resources, and idiosyncratic software. In the last few years, however, it has benefited from the steady and sometimes even spectacular reduction in the hardware price/performance ration (E.G., personal computers for home or office with their standard graphics terminals), and from the development of high-level , device -independent graphics packages that help make graphics programming rational and straightforward. Interactive graphics is now finally ready to fulfill its promise to provide us with pictorial communication and thus to become a major facilitator of man/machine interaction." (From preface, Fundamentals of Interactive Computer Graphics, James Foley and Andries van Dam, 1982)

This assertion that computer graphics had finally arrived was made before the revolution in computer culture sparked by Apple's Macintosh and the IBM PC and its clones. Now even preschool children are comfortable with interactive-graphics techniques, such as the desktop metaphor for window manipulation and menu and icon selection with a mouse. Graphics-based user interfaces have made productive users of neophytes, and the desk without its graphics computer is increasingly rare.

At the same time that interactive graphics has become common in user interfaces and visualization of data and objects, the rendering of 3D objects has become dramatically more realistic, as evidenced by the ubiquitous computer-generated commercials and movie special effects. Techniques that were experimental in the early eighties are now standard practice, and more remarkable "photorealistic" effects are around the corner. The simpler kinds of pseudorealism, which took hours of computer time per image in the early eighties, now are done routinely at animation rates (ten or more frames/second) on personal computers. Thus "real-time" vector displays in 1981 showed moving wire-frame objects made of tens of thousands of vectors without hidden-edge removal; in 1990 real-time raster displays can show not only the same kinds of line drawings but also moving objects composed of as many as one hundred thousand triangles rendered with Gouraud or Phong shading and specular highlights and with full hidden-surface removal. The highest-performance systems provide real-time texture mapping, anitialiasing, atmospheric attenuation for fog and haze, and other advanced effects.

Graphics software standards have also advanced significantly since our first edition. The SIGGRAPH Core '79 package, on which the first edition's SGP package was based, has all but disappeared, along with direct-view storage tube and refresh vector displays. The much more powerful PHIGS package, supporting storage and editing of structure hierarchy, has become an official ANSI and ISO standard, and it is widely available for real-time geometric graphics in scientific and engineering applications, along with PHIGS+, which supports lighting, shading, curves, and surfaces. Official graphics standards complement lower-level, more efficient de facto standards, such as Apple's QuickDraw X Window System's Xlip 2D integer raster graphics package, and Silicon Graphics' GL 3D library. Also widely available are implementations of Pixar's RenderMan interface for photorealistic rendering and Post Script interpreters for hardcopy page and screen image description. Better graphics software has been used to make dramatic improvements in the "look and feel" of user interfaces, and we may expect increasing use of 3D effects, both for aesthetic reasons and for providing new metaphors for organizing and presenting, and navigating through information.

Perhaps the most important new movement in graphics is the increasing concern for modeling objects, not just for creating their pictures. Furthermore, interest is growing in describing the time-varying geometry and behavior of 3D objects. Thus graphics is increasingly concerned with simulation, animation, and a "back to physics" movement in both modeling and rendering in order to create objects that look and behave as realistically as possible.

As the tools and capabilities available become more and more sophisticated and complex, we need to be able to apply them effectively. Rendering is no longer the bottleneck. Therefore researchers are beginning to apply artificial-intelligence techniques to assist in the design of object models, in motion planning, and in the layout of effective 2D and 3D graphical presentations.

Today the frontiers of graphics are moving very rapidly, and a text that sets out to be a standard reference work must periodically be updated and expanded. This book is almost a total rewrite of the Fundamentals of Interactive Computer Graphics, and although this second edition contains nearly double the original 623 pages, we remain painfully aware of how much material we have been forced to omit.

Major differences from the first edition include the following:

  • The vector-graphics orientation is replaced by a raster orientation.
  • The simple 2D floating-point graphics package (SG) is replaced by two packages--SRGP and SPHIGS--that reflect the two major schools of interactive graphics programming. SRGP combines features of the QuickDraw and Xlib 2D integer raster graphics packages. SPHIGS, based on PHIGS, provides the fundamental features of a 3D floating-point package with hierarchical display lists. We explain how to do applications programming in each of these packages and who how to implement the basic clipping, scan conversion, viewing, and display list traversal algorithms that underlie these systems.
  • User-interface issues are discussed at considerable length, both for 2D desktop metaphors and for 3D interaction devices.
  • Coverage of modeling is expanded to include NURB (nonuniform rational B-spline) curves and surfaces, a chapter on solid modeling, and a chapter on advanced modeling techniques, such as physically based modeling, procedural models, factals, L-grammar systems, and particle systems.
  • Increased coverage of rendering includes a detailed treatment of antialiasing and greatly expanded chapters on visible-surface determination, illumination, and shading, including physically based illumination models, ray tracing, and radiosity.
  • Material is added on advanced raster graphics architectures and algorithms, including clipping and scan-conversion of complex primitives and simple image-processing operations, such as compositing.
  • A brief introduction to animation is added.

This text can be used by those without prior background in graphics and only some background in Pascal programming, basic data structures and algorithms, computer architecture, and simple linear algebra. An appendix reviews the necessary mathematical foundations. The book covers enough material for a full-year course, but is partitioned into groups to make selective coverage possible. The reader, therefore, can progress through a carefully designed sequence of units, starting with simple, generally applicable fundamentals and ending with more complex and specialized subjects.

Basic Group. Chapter 1 provides a historical perspective and some fundamental issues in hardware, software, and applications. Chapters 2 and 3 describe, respectively, the use and the implementation of SRGP, a simple 2D integer graphics package. Chapter 4 introduces graphics hardware, including some hints about how to use hardware in implementing the operations described in the preceding chapters. The next two chapters, 5 and 6, introduce the ideas of transformations in the plane and 3-space, representations by matrices, the use of homogeneous coordinates unify linear and affine transformations, and the description of 3D views, including the transformations from arbitrary view volumes to canonical view volumes. Finally, Chapter 7 introduces SPHIGS, a 3D floating-point hierarchical graphics package that is a simplified version of the PHIGS standard, and describes its use in some basic modeling operations. Chapter 7 also discusses the advantages and disadvantages of the hierarchy available in PHIGS and the structure of applications that use this graphics package.

User Interface Group. Chapters 8-10 describe the current technology of interaction devices and then address the higher-level issues in user-interface design. Various popular user-interface paradigms are described and critiqued. In the final chapter user-interface software, such as window mangers, interaction technique-libraries, and user-interface management systems, is addressed.

Model Definition Group. The first two modeling chapters, 11 and 12, describe the current technologies used in geometric modeling: the representation of curves and surfaces by parametric functions, especially cubic splines, and the representation of solids by various techniques, including boundary representations and CSG models. Chapter 13 introduces the human color-vision system, various color-description systems, and conversion from one to another. This chapter also briefly addresses rules for the effective use of color.

Image Syntheses Group. Chapter 14, the first in a four-chapter sequence, describes the quest for realism from the earliest vector drawings to state-of-the-art shaded graphics. The artifacts caused by aliasing are of crucial concern in raster graphics, and this chapter discusses their causes and cures in considerable detail by introducing the Fourier transform and convolution. Chapter 15 describes a variety of strategies for visible-surface determination in enough detail to allow the reader to implement some of the most important ones. Illumination and shading algorithms are covered in detail in Chapter 16. The early part of part of this chapter discusses algorithms most commonly found in current hardware, while the remainder treats texture, shadows, transparency, reflections, physically based illumination models, rat tracing, and radiosity methods. The last chapter in this group, Chapter 17, describes both image manipulations, such as scaling, shearing, and rotating pixmaps, and image storage techniques, including various image-compression schemes.

Advanced Techniques Group. The last four chapters give an overview of the current state of the art (a moving target, of course). Chapter 18 describes advanced graphics hardware used in high-end commercial and research machines; this chapter was contributed by Steven Molnar and Henry Fuchs, authorities on high-performance graphics architectures. Chapter 19 describes the complex raster algorithms used for such tasks as scan-converting arbitary conics, generating antialiased text, and implementing page-description languages, such as PostScript. The final two chapters survey some of the most important techniques in the fields of high-level modeling and computer animation.

The first two groups cover only elementary material and thus can be used for a basic course at the undergraduate level. A follow-on course can then use the more advanced chapters. Alternatively, instructors can assemble customized courses by picking chapters out of the various groups.

For example, a course designed to introduce students to primarily 2D graphics would include Chapters 1 and 2, simple scan conversion and clipping from Chapter 3, a technology overview with emphasis on raster architectures and interaction devices from Chapter 4, homogeneous mathematics from Chapter 5, and 3D viewing only from a "how to use it" point of view from Sections 6.1 to 6.3. The User Interface Group, Chapters 8-10, would be followed by selected introductory sections and simple algorithms from the Image Syntheses Group, Chapters 14, 15, and 16.

A one-course general overview of graphics would include Chapters 1 and 2, basic algorithms from Chapter 3, raster architectures and interaction devices from Chapter 4, Chapter 5, and most of Chapters 6 and 7 on viewing and SPHIGs. The second half of the course would include sections on modeling from Chapters 11 and 13, on image syntheses from Chapters 14, 15, and 16, and on advanced modeling from Chapter 20 to give breadth of coverage in these slightly more advanced areas.

A course emphasizing 3D modeling and rendering would start with Chapter 3 sections on scan converting, clipping of lines and polygons, and introducing antialiasing. The course would then progress to Chapters 5 and 6 on the basic mathematics of transformations and viewing. Chapter 13 on color, and then cover the key Chapters 14, 15 and 16 in the Image Syntheses Group. Coverage would be rounded off by selections in surface and solid modeling. Chapter 20 on advanced modeling, and Chapter 21 on animation from the Advanced Techniques Group.

Graphics Packages

The SRGP and SPHIGS graphics packages, designed by David Sklar, coauthor of the two chapters on these packages, are available from the publisher for the IBM PC (ISBN 0-201-54700-7), the Macintosh (ISBN 0-201-54701-5), and UNIX workstations running X11, as are many of the algorithms for scan conversion, clipping, and viewing (see page 1175).

Acknowledgments

This book could not have been produced without the dedicated work and the indulgence of many friends and colleagues. We acknowledge here our debt to those who have contributed significantly to one or more chapters; many others have helped by commenting on individual chapters, and we are grateful to them as well. We regret any inadvertent omissions. Katrina Avery and Lyn Dupré did a superb job of editing. Additional valuable editing on multiple versions of multiple chapters was provided by Debbie van Dam, Melissa Gold, and Clare Campbell. We are especially grateful to our production supervisor Bette Aaronson, our art director, Joe Vetere, and our editor, Keith Wollman, not only for their great help in producing the book, but also for their patience and good humor under admittedly adverse circumstances--if we ever made a promised deadline during these frantic five years, we can't remember it!

Computer graphics has become too complex for even a team of four main authors and three guest authors to be expert in all areas. We relied on colleagues and students to amplify our knowledge, catch our mistakes and provide constructive criticism of form and content. We take full responsibility for any remaining sins of omission and commission. Detailed technical readings on one or more chapters were provided by John Airey, Kurt Akeley, Tom Banchoff, Brian Barsky, David Bates, Cliff Beshers, Gary Bishop, Peter J Bono, Marvin Bunker, Bill Buxton, Edward Chang, Norman Chin, Michael F. Cohen, William Cowan, John Dennis, Tom Dewald, Scott Draves, Steve Drucker, Tom Duff, Richard Economy, David Ellsworth, Nick England, Jerry Farrell, Robin Forrest, Alain Fournier, Alan Freiden, Christina Gibbs, Melissa Gold, Mark Green, Cathleen Greenberg, Margaret Hagen, Griff Hamlin, Pat Hanrahan, John Heidema, Rob Jacob, Abid Kamran, Mike Kappel, Henry Kaufman, Karen Kendler, David Kurlander, David Laidlaw, Keith Lantz, Hsien-Che Lee, Aaron Marcus, Nelson Max, Deborah Mayhew, Barbara Meier, Gary Meyer, Jim Michener, Jakob Nielsen, Mark Nodine, Randy Pausch, Ari Requicha, David Rosenthal, David Salesin, Nanan Samet, James Sanford, James Sargent, Robin Schaufler, Robert Scheifler, John Schnizlein, Michael Shantzis, Ben Shneiderman, Ken Shoemake, Judith Schrier, John Sibert, Dave Simons, Jonathan Steinhart, Maureen Stone, Paul Strauss, Seth Tager, Peter Tanner, Bruce Tebbs, Ben Trumbore, Yi Tso, Greg Turk, Jeff Vroom, Colin Ware, Gary Watkins, Chuck Weger, Kevin Weiler, Turner Whitted, George Wolberg, and Larry Wolff.

Several colleagues, including Jack Bresenham, Brian Barsky, Jerry Van Aken, Dilip Da Silva (who suggested the uniform midpoint treatment of Chapter 3) and Don Hatfield, not only read chapters closely but also provided detailed suggestions on algorithms.

Welcome word-processing relief was provided by Katrina Avery, Barbara Britten, Clare Campbell, Tina Cantor, Joyce Cavatoni, Louisa Hogan, Jenni Rodda, and Debbie van Dam. Drawings for Chapters 1-3 were ably created by Dan Robbins, Scott Snibbe, Tina Cantor, and Clare Campbell. Figure and image sequences created for this book were provided by Beth Cobb, David Kurlander, Allen Paeth, and George Wolberg (with assistance from Peter Karp). Plates II.21-37, showing a progression of rendering techniques, were designed and rendered at Pixar by Thomas Williams and H.B. Siegel, under the direction of M.W. Mantle, using Pixar's PhotoRealistic Renderman software. Thanks to Industrial Light & Magic for the use of their laser scanner to create Plates II.24-37, and to Norman Chin for computing vertex normals for Color Plates II.30-32. L. Lu and Carles Castellsagué wrote programs to make figures.

Jeff Vogel implemented the algorithms of Chapter 3, and he and Atul Butte verified the code in Chapters 2 and 7. David Sklar wrote the Mac and X11 implementations of SRGP and SPHIGS with help from Ron Balsys, Scott Boyajian, Atul Butte, Alex Contovounesios, and Scott Draves. Randy Pausch and his students ported the packages to the PC environment.

We have installed an automated electronic mail server to allow our readers to obtain machine-readable copies of many of the algorithms, suggest exercises, report errors in the text and in SRGP/SPHIGS, and obtain errata lists for the text and software. Send email to "graphtext @ cs.brown.edu" with a Subject line of "Help" to receive the current list of available services (See page 1175 for information on how to order SRGP and SPHIGS.)

Preface to the C Edition

This is the C-language version of a book originally written with examples in Pascal. It includes all changes through the ninth printing of the Pascal second edition, as well as minor modifications to several algorithms, and all it s Pascal code has been rewritten in ANSI C. The interfaces to the SRGP and SPHIGS graphics packages are now defined in C, rather than Pascal, and correspond to the new C implementations of these packages. (See page 1175 for information on obtaining the software.)

We wish to thank Norman Chin for converting the Pascal code of the second edition to C, proofreading it, and formatting it using the typographic conventions of the original. Thanks to Matt Ayers for careful proofing of Chapters 2, 3, and 7, and for useful suggestions about conversion problems.



0201848406P04062001

Sell a Digital Version of This Book in the Kindle Store

If you are a publisher or author and hold the digital rights to a book, you can sell a digital version of it in our Kindle Store. Learn more

What Other Items Do Customers Buy After Viewing This Item?


Customer Reviews

Most helpful customer reviews
3 of 3 people found the following review helpful
By A Customer
Format:Hardcover
This book will acquaint you with nearly every graphic technique and algorithm. It's THE book to have if you expect to be involved in more than a narrow range of graphics programming. If your ambition is limited to writing a Quake-like engine, you'll find yourself mouthing silliness like "it covers too many topics, many of which are trivial and unimportant such as the coverage of 2D graphics." This book does not hold your hand; the algorithms are explained thoroughly but you are expected to write your own code. If you're looking for off-the-shelf solutions or a way to cheat on your homework, this isn't your book.
I've owned this book for nearly ten years and have turned to it time and again when taking on new tasks related to graphics - color space conversions, lighting algorithms in 3D, dithering, 2D primitive rendering for print graphics, and many more... it's the best value I've ever gotten in a computer-related book.
Was this review helpful to you?
2 of 2 people found the following review helpful
5.0 out of 5 stars A good use of my money Nov. 21 2000
Format:Hardcover
For someone new to the field of computer graphics, I was looking for a book that would provide me with a solid from-the-ground up discussion. This book meets and exceeds my expectations. The book is well structured and more than thorough enough for a newbie like myself. I like that the author explains not only how to do everything, but describes the various advantages and disadvantages of every technique, usually offering several different techniques to achieve the same result. I plan to read this book cover to cover and then again, there is so much good info.
Was this review helpful to you?
Format:Hardcover
I have found this book to be _the_ most useful book in my line of work yet. I have been involved in computer graphics and software development for about 10 years, and this stands out as the ideal reference book.
Dont bother with this book if you just want source code. This book is all about explanation of the fundamentals of computer graphics. It is excellent in helping with design descisions and implementation strategies. Dont overlook this book if you are in anyway involved with the creation of a computer graphics application. The theory and algorithms described are old, but these are still used today - interestingly other reviewers seem to think this is bad, its not. It saves you spending months researching a method only to find it was already mentioned in this book, and the benefits and disadvantages are often written well with solid references.
In my opinion, in Computer Graphics, this is the Bible. The theories and algorithms assist in solving any problem you will find in the computer graphics world. It wont give you the code, but it will give you a solution.
Was this review helpful to you?
4.0 out of 5 stars Good book for 3D graphics June 7 2003
Format:Hardcover
It is a book for the ones who like math, not for general programmers.
Was this review helpful to you?
3.0 out of 5 stars Once the standard text, now badly out of date April 17 2003
Format:Hardcover
Once upon a time any student interested in computer graphics was referred straight to this book, and indeed what you've got here is an amazing smorgasbord of nearly every technique that was state of the art several years ago. Unfortunately the times have moved on and Foley et al. have not quite been able to keep up with them; entire chapters are still devoted to PHIGS, while modern methods of rotation such as quaternions are covered in only the most cursory way.
Another problem is the book's extremely terse, high-level approach to many important concepts; often a mathematical approach or an algorithm will be mentioned as a solution to a given problem (quadtrees, let's say), but once you try to take that knowledge from the chalkboard to the compiler, you begin to realize that there are some important pieces missing. Of course, no one expects a text like this to be a cookbook of code snippets, but as a primary textbook for an applications programmer this falls short. The tiny print and unhelpful illustrations don't improve matters much for pedagogy.
So, even though this is the Classic Textbook, I've found myself better served by a combination of other, more recent books -- Alan Watt's text on graphics in combination with Eric Lengyel's on 3D Mathematics, specifically. They won't cover *everything* there is to know, but they'll do a better job of getting you started than Foley, and the stuff they don't address can be found in other books or SIGGRAPH papers.
Was this review helpful to you?
3.0 out of 5 stars Too much info in too little space Aug. 1 2002
By A Customer
Format:Hardcover
This book mentions almost every concept useful in computer graphics. This is actually where the book fails. There are so many concepts, it can't cover all of them adequately. Things like rendering primitives, scanline conversion, and shadows are explained in detail while other concepts like quaternion interpolation, environmental mapping, and image filtering are barely summarized. The choice of SPHIGS as the language of examples is also questionable at best.
Was this review helpful to you?
By A Customer
Format:Hardcover
This book provides an excellent overview of computer graphics. The only disadvantages is that it may seem to cover topics that may seem irrevalent. Such as the study of an raster API that isn't used at all. However, this study of generic integer and 3D raster API's provides a very good grasp of a generic API so you can easily shift to a more specific one, especially OpenGL as it follows many of the same standards as this book.
The organization is very good and there aren't really any good books out there like it. And if they are then they aren't as detailed as this one is.
Was this review helpful to you?
Want to see more reviews on this item?
Most recent customer reviews
5.0 out of 5 stars Most thorough book on theoretical computer graphics
This was an incredibly thorough book and one I would recommend without any hesitation. It covered every area I was aware of in graphical programming and design, and even... Read more
Published on July 10 2001 by "fat-boi"
5.0 out of 5 stars If you're only going to get _one_ graphics book...
then let this be the one.
This book is considered to be the "Bible" of computer graphics. Read more
Published on June 21 2001 by "tslettebo"
4.0 out of 5 stars Authoritative, Yes.. But not completely accurate.
I have just begun to delve into this book, and have been referenced to it by two other sources in the last week so I can only presume it is the authoritative text, that's why I... Read more
Published on Nov. 3 2000 by Robert Wilkens
4.0 out of 5 stars A must-have for graphics professionals
I give this book only four stars because it is getting a bit old. Some of the book is a bit dated or vague, but there is no doubt that this is the most comprehensive book on... Read more
Published on Sept. 8 2000 by Peter S. Shirley
5.0 out of 5 stars Wonderful - all I've ever been looking for
This book was just the book I was looking for - it covers just about everything you would want to know with regards to computer graphics. Read more
Published on Aug. 26 2000 by Stefanus Du Toit
5.0 out of 5 stars Fundamental Text for Anyone Working on The Subject
This is one of the best books on computer graphics. It's fundamental for those on graphics programming and a starting point for thos just running visualization packages or... Read more
Published on Aug. 20 2000 by Richard Axor
Search Customer Reviews
Only search this product's reviews

Look for similar items by category


Feedback