Home > Store

Computer Graphics: Principles and Practice in C, 2nd Edition

Register your product to gain access to bonus material or receive a coupon.

Computer Graphics: Principles and Practice in C, 2nd Edition

Book

  • Sorry, this book is no longer in print.
Not for Sale

About

Features

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.

In this book, the authors explore multiple perspectives on computer graphics: the user's, the application programmer's, the package implementor's, and the hardware designer's. For example, the issues of user-centered design are expertly addressed in three chapters on interaction techniques, dialogue design, and user interface software. Hardware concerns are examined in a chapter, contributed by Steven Molnar and Henry Fuchs, on advanced architectures for real-time, high performance graphics.

The comprehensive topic coverage includes:

  • Programming with SRGP, a simple but powerful raster graphics package that combines features of Apple's QuickDraw and the MIT X Window System graphics library.
  • Hierarchical, geometric modeling using SPHIGS, a simplified dialect of the 3D graphics standard PHIGS.
  • Raster graphics hardware and software, including both basic and advanced algorithms for scan converting and clipping lines, polygons, conics, spline curves, and text.
  • Image synthesis, including visible-surface determination, illumination and shading models, image manipulation, and antialiasing.
  • Techniques for photorealistic rendering, including ray tracing and radiosity methods.
  • Surface modeling with parametric polynomials, including NURBS, and solid-modeling representations such as B-reps, CSG, and octrees.
  • Advanced modeling techniques such as fractals, grammar-based models, particle systems.
  • Concepts of computer animation and descriptions of state-of-the-art animation systems.

Over 100 full-color plates and over 700 figures illustrate the techniques presented in the book.

Description

  • Copyright 1996
  • Edition: 2nd
  • Book
  • ISBN-10: 0-201-84840-6
  • ISBN-13: 978-0-201-84840-3

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.

In this book, the authors explore multiple perspectives on computer graphics: the user's, the application programmer's, the package implementor's, and the hardware designer's. For example, the issues of user-centered design are expertly addressed in three chapters on interaction techniques, dialogue design, and user interface software. Hardware concerns are examined in a chapter, contributed by Steven Molnar and Henry Fuchs, on advanced architectures for real-time, high performance graphics.

The comprehensive topic coverage includes:

  • Programming with SRGP, a simple but powerful raster graphics package that combines features of Apple's QuickDraw and the MIT X Window System graphics library.
  • Hierarchical, geometric modeling using SPHIGS, a simplified dialect of the 3D graphics standard PHIGS.
  • Raster graphics hardware and software, including both basic and advanced algorithms for scan converting and clipping lines, polygons, conics, spline curves, and text.
  • Image synthesis, including visible-surface determination, illumination and shading models, image manipulation, and antialiasing.
  • Techniques for photorealistic rendering, including ray tracing and radiosity methods.
  • Surface modeling with parametric polynomials, including NURBS, and solid-modeling representations such as B-reps, CSG, and octrees.
  • Advanced modeling techniques such as fractals, grammar-based models, particle systems.
  • Concepts of computer animation and descriptions of state-of-the-art animation systems.

Over 100 full-color plates and over 700 figures illustrate the techniques presented in the book.



0201848406B04062001

Downloads

Source Code

Untitled Document Software

PC - SRGP and SPHIGS

Requires any PC using an 80826 or higher microprocessor with a minimum of 1 megabyte of RAM (combined conventional and extended memory); Hercules monochrome adapter, or EGA color monitor or better; a hard-disk drive; Microsoft Mouse or compatible pointing device; Microsoft Windows v3.1, Windows95, or DOS v5.0 or later; Microsoft Software Development Kit for Windows; Borland's Turbo C v2.0 or later.

The PC files are contained in sphigs.exe and srgp.exe. They are archived with PKZIP 2.04G, then made self-extracting. You need no extra software to unarchive these files on your Windows or DOS machine. First be sure that you are in binary mode before transferring the files: Type "binary" at the "ftp>" prompt. Once transferred, use the syntax:

filename -d

The "filename" is the name of the file, minus the ".exe" extension. The "-d" preserves directory structure where directories have been created.

Software

Macintosh - SRGP and SPHIGS

Requires any model Apple Macintosh with a minimum of 1 megabyte of RAM; 2 megabytes of RAM are required to run the debugger; System Software v7.0 or later; Metrowerks CodeWarrior v.10 or later.

The Macintosh files are contained in sphigs.sit.hqx and srgp.sit.hqx in stuffed binhex format (ASCII). These files may be extracted using StuffIt Expander, which is available from Aladdin.

Software

UNIX - SRGP and SPHIGS

Requires a workstation running UNIX and the X Window System; X11 release R4 or later; an ANSII C Compiler (gcc is recommended); either v4.3 or v4.4 BSD, System V UNIX, or Solaris 2.0.

The UNIX files are contained in sphigs.tar and srgp.tar in UNIX format (binary). To untar under UNIX, use the following command:

     tar -xvf filename.tar

Sample Content

Table of Contents



1. Introduction.

Image Processing as Picture Analysis.

The Advantages of Interactive Graphics.

Representative Uses of Computer Graphics.

Classification of Applications.

Development of Hardware and Software for Computer Graphics.

Conceptual Framework for Interactive Graphics.



2. Programming in the Simple Raster Graphics Package (SRGP)/.

Drawing with SRGP/.

Basic Interaction Handling/.

Raster Graphics Features/.

Limitations of SRGP/.



3. Basic Raster Graphics Algorithms for Drawing 2d Primitives.

Overview.

Scan Converting Lines.

Scan Converting Circles.

Scan Convertiing Ellipses.

Filling Rectangles.

Fillign Polygons.

Filling Ellipse Arcs.

Pattern Filling.

Thick Primiives.

Line Style and Pen Style.

Clipping in a Raster World.

Clipping Lines.

Clipping Circles and Ellipses.

Clipping Polygons.

Generating Characters.

SRGP_copyPixel.

Antialiasing.



4. Graphics Hardware.

Hardcopy Technologies.

Display Technologies.

Raster-Scan Display Systems.

The Video Controller.

Random-Scan Display Processor.

Input Devices for Operator Interaction.

Image Scanners.



5. Geometrical Transformations.

2D Transformations.

Homogeneous Coordinates and Matrix Representation of 2D Transformations.

Composition of 2D Transformations.

The Window-to-Viewport Transformation.

Efficiency.

Matrix Representation of 3D Transformations.

Composition of 3D Transformations.

Transformations as a Change in Coordinate System.



6. Viewing in 3D.

Projections.

Specifying an Arbitrary 3D View.

Examples of 3D Viewing.

The Mathematics of Planar Geometric Projections.

Implementing Planar Geometric Projections.

Coordinate Systems.



7. Object Hierarchy and Simple PHIGS (SPHIGS).

Geometric Modeling.

Characteristics of Retained-Mode Graphics Packages.

Defining and Displaying Structures.

Modeling Transformations.

Hierarchical Structure Networks.

Matrix Composition in Display Traversal.

Appearance-Attribute Handling in Hierarchy.

Screen Updating and Rendering Modes.

Structure Network Editing for Dynamic Effects.

Interaction.

Additional Output Features.

Implementation Issues.

Optimizing Display of Hierarchical Models.

Limitations of Hierarchical Modeling in PHIGS.

Alternative Forms of Hierarchical Modeling.



8. Input Devices, Interaction Techniques, and Interaction Tasks.

Interaction Hardware.

Basic Interaction Tasks.

Composite Interaction Tasks.



9. Dialogue Design.

The Form and Content of User-Computer Dialogues.

User-Interfaces Styles.

Important Design Considerations.

Modes and Syntax.

Visual Design.

The Design Methodology.



10. User Interface Software.

Basic Interaction-Handling Models.

Windows-Management Systems.

Output Handling in Window Systems.

Input Handling in Window Systems.

Interaction-Technique Toolkits.

User-Interface Management Systems.



11. Representing Curves and Surfaces.

Polygon Meshes.

Parametric Cubic Curves.

Parametric Bicubic Surfaces.

Quadric Surfaces.



12. Solid Modeling.

Representing Solids.

Regularized Boolean Set Operations.

Primitive Instancing.

Sweep Representations.

Boundary Representations.

Spatial-Partitioning Representations.

Constructive Solid Geometry.

Comparison of Representations.

User Interfaces for Solid Modeling.



13. Achromatic and Colored Light.

Achromatic Light.

Chromatic Color.

Color Models for Raster Graphics.

Reproducing Color.

Using Color in Computer Graphics.



14. The Quest for Visual Realism.

Why Realism?

Fundamental Difficulties.

Rendering Techniques for Line Drawings.

Rendering Techniques for Shaded Images.

Improved Object Models.

Dynamics.

Stereopsis.

Improved Displays.

Interacting with Our Other Senses.

Aliasing and Antialiasing.



15. Visible-Surface Determination.

Functions of Two Variables.

Techniques for Efficient Visible-Surface Determination.

Algorithms for Visible-Line Determination.

The z-Buffer Algorithm.

List-Priority Algorithms.

Scan-Line Algorithms.

Area-Subdivision Algorithms.

Algorithms for Octrees.

Algorithms for Curved Surfaces.

Visible-Surface Ray Tracing.



16. Illumination And Shading.

Illumination Modeling.

Shading Models for Polygons.

Surface Detail.

Shadows.

Transparency.

Interobject Reflections.

Physically Based Illumination Models.

Extended Light Sources.

Spectral Sampling.

Improving the Camera Model.

Global Illumination Algorithms.

Recursive Ray Tracing.

Radiosity Methods.

The Rendering Pipeline.



17. Image Manipulation and Storage.

What Is an Image?

Filtering.

Image Processing.

Geometric Transformations of Images.

Multipass Transformations.

Image Compositing.

Mechanisms for Image Storage.

Special Effects with Images.

Summary.



18. Advanced Raster Graphic Architecture.

Simple Raster-Display System.

Display-Processor Systems.

Standard Graphics Pipeline.

Introduction to Multiprocessing.

Pipeline Front-End Architecture.

Parallel Front-End Architectures.

Multiprocessor Rasterization Architectures.

Image-Parallel Rasterization.

Object-Parallel Rasterization.

Hybrid-Parallel Rasterization.

Enhanced Display Capabilities.



19. Advanced Geometric and Raster Algorithms.

Clipping.

Scan-Converting Primitives.

Antialiasing.

The Special Problems of Text.

Filling Algorithms.

Making copyPixel Fast.

The Shape Data Structure and Shape Algebra.

Managing Windows with bitBlt.

Page Description Languages.



20. Advanced Modeling Techniques.

Extensions of Previous Techniques.

Procedural Models.

Fractal Models.

Grammar-Based Models.

Particle Systems.

Volume Rendering.

Physically Based Modeling.

Special Models for Natural and Synthetic Objects.

Automating Object Placement.



21. Animation.

Conventional and Computer-Assisted Animation.

Animation Languages.

Methods of Controlling Animation.

Basic Rules of Animation.

Problems Peculiar to Animation.

Appendix: Mathematics for Computer Graphics.

Vector Spaces and Affine Spaces.

Some Standard Constructions in Vector Spaces.

Dot Products and Distances.

Matrices.

Linear and Affine Transformations.

Eigenvalues and Eigenvectors.

Newton-Raphson Iteration for Root Finding.



Bibliography.


Index. 0201848406T04062001

Preface

"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

Updates

Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.

Overview


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information


To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.

Surveys

Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.

Newsletters

If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information


Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.

Security


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.

Children


This site is not directed to children under the age of 13.

Marketing


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information


If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.

Choice/Opt-out


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information


Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents


California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure


Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.

Links


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact


Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice


We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020