PROGRAMMER'S BOOKSHELF

Computer Graphics: Principles and Practice

Ray Duncan

The subspeciality of computer graphics programming is a craft, an art, a science, and (for some) a bit of a religious avocation as well. It's hard to think of any other niche in our industry that can appeal to practioners with such a wide range of backgrounds, levels of training, or native talent. Computer scientists and mathematicians develop ever-bigger-and-better algorithms for transformations, ray-tracing, and solid-modeling; the Silicon Valley engineers design ever-faster graphics coprocessors; the Far-Eastern manufacturers crank out ever-cheaper color CRTs with ever-higher resolutions; the systems software people develop graphical user interfaces to soak up the pixels and CPU cycles as fast as they appear; and self-taught teenagers can write video games that make some of them wealthy before they are old enough to drive.

When I first became involved with personal computers, the computer graphics market was defined by incredibly expensive workstations on the high end and the Apple II on the low end. Most of the readily available graphics terminals were vector-based, because serial lines simply didn't have the bandwidth to support raster graphics, and the generation of a few minutes of high-resolution raster animation required days of mainframe computer time. There was little in the way of hardware between these extremes that the average programmer could play with, and the trade press reflected this situation. Most books on computer graphics that I could lay my hands on were stiflingly formal, academic texts with a heavy emphasis on mathematical proofs and floating point, and a surprising paucity of quality illustrations.

Computer Graphics: Principles and Practice, Second Edition

James D. Foley, Andries van Dam, Steven K. Feiner, and John F. Hughes Reading, Mass.: Addison-Wesley 1990, 1174 pp., $64.50 ISBN 0-201-12110-7

Both the release of the original IBM PC in 1981 and the appearance of Foley and van Dam's Fundamentals of Interactive Computer Graphics in 1982 foreshadowed the enormous changes that were about to sweep the field of computing. The PC was the first representative of a standardized hardware platform that would put 80386-based, 640 x 480, 16-color graphics capabilities (or better) and sophisticated tools within the financial reach of nearly every programmer by the end of the decade. Similarly, Foley and van Dam's book made graphics software technology accessible to the programming masses. The book was of manageable length and highly readable, yet it covered an enormous range of graphical issues -- from plotting bar graphs to three-dimensional transformations and chromatic color models -- and discussed them in sufficient detail for the needs of all but the most advanced practitioners. My own copy, which is always within easy reach of the keyboard, has become tattered and stained from use.

But although the first edition of Foley and van Dam achieved "classic" status almost immediately, the passing years and the inexorable march of technology have not treated the book kindly. The amount of space it devoted to raster graphics seems hopelessly inadequate no . (The description of an important raster flood-fill algorithm, for example, is limited to a single diagram and caption.) The book's treatment of menus and user interactions has long since been outstripped by evolution in modern graphical user interfaces such as the Macintosh's System 7, Unix's Motif, and DOS's Windows. And its selection of color plates, many of which were based on Atari game computers or Evans and Sutherland flight simulators, appear severely dated in our era of inexpensive RISC workstations, photorealistic rendering, and shrink-wrapped mass-market software like Autodesk Animator.

Fortunately, 1990 brought us a new edition of Foley and van Dam, which seems likely to be even more important than the original volume. The book now has four authors instead of two (Feiner and Hughes joined the team), a different title (Computer Graphics: Principles and Practice), and a massive amount of new material -- the number of pages has almost doubled. The printed material has been fortified with an impressive number of dazzling full-color illustrations -- several times as many as in the first edition -- that reflect the very latest presentation technology. The subject matter has been reoriented toward raster graphics and gives equal time to both integer and floating-point graphics toolboxes. The algorithms have been recast in a Pascal-like structured pseudocode. In short, the book has been revamped so drastically that the most puzzling aspect is why Addison-Wesley chose to call it a 2nd Edition.

In its new incarnation, Computer Graphics: Principles and Practice is divided into five main sections or groups of chapters. The first section includes some historical perspective, basic graphics hardware concepts, a simple integer graphics package that resembles Quick-Draw, 2-D and 3-D transformations, and a 3-D floating-point graphics package that supports hierarchies of graphic objects. The second section is devoted to user interfaces and is completely up to date with authoritative discussions of Open Look, Motif, the Macintosh, Next-Step, the latest arcade games, and even the cutting-edge experiments in virtual reality. The third group embraces the topics of curves, surfaces, modeling, and color systems. The fourth set of chapters talks about image synthesis and surveys a gamut of complex issues, ranging from ray tracing to the projection of textures and reflections onto contoured surfaces. The last few chapters are concerned with page description languages, animation, and finally with state-of-the-art products and research -- the most sophisticated graphics hardware and software that man has yet devised and/or that money can buy.

I should warn you that Foley and van Dam's new opus has a high intimidation factor compared to its predecessor. Whereas the first edition was just about the right length and had the right tone to be browsed from beginning to end, the second edition is encyclopedic in its appearance and considerably more demanding in its nature. Although the writing is excellent, and the explanations are admirably lucid, you would hardly be any more inclined to read this book straight through than you would be tempted to make a project of devouring Knuth's three-volume Art of Computer Programming during your summer vacation. The depth and breadth is simply too great, even if you've got the mathematical background to handle the most advanced material (as it happens, I don't). Nevertheless, this is one of the finest reference works on the bookstore shelves today, and sooner or later you're going to need one of the pearls this book has to offer. Buy it now to read the delightful chapters on design and implementation of user interfaces, and keep it nearby for those graphical emergencies of the future.


Copyright © 1991, Dr. Dobb's Journal