did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

We're the #1 textbook rental company. Let us show you why.

9780321321374

Interactive Computer Graphics: A Top-Down Approach Using OpenGL

by
  • ISBN13:

    9780321321374

  • ISBN10:

    0321321375

  • Edition: 5th
  • Format: Hardcover
  • Copyright: 2009-01-01
  • Publisher: Addison Wesley
  • View Upgraded Edition
  • Purchase Benefits
  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $119.40

Summary

Interactive Computer Graphics fourth edition presents introductory computer graphics concepts using a proven top-down, programming-oriented approach and careful integration of OpenGL to teach core concepts. The fourth edition has been revised to more closely follow the OpenGL pipeline architecture and includes a new chapter on programmable hardware topics (vertex shaders). As with previous editions, readers learn to program three-dimensional applications as soon as possible. The Fourth edition focuses on core theory in graphics. Topics such as light-material interactions, shading, modeling, curves and surfaces, antialiasing, texture mapping, and compositing and hardware issues are covered.

Author Biography

Edward Angel is Professor of Computer Science, Electrical and Computer Engineering, and Media Arts at the University of New Mexico.

Table of Contents

Preface xxiii
Graphics Systems and Models
1(38)
Applications of Computer Graphics
2(3)
Display of Information
2(1)
Design
3(1)
Simulation and Animation
3(1)
User Interfaces
4(1)
A Graphics System
5(5)
Pixels and the Frame Buffer
6(1)
Output Devices
7(3)
Input Devices
10(1)
Images: Physical and Synthetic
10(5)
Objects and Viewers
11(1)
Light and Images
12(2)
Imaging Models
14(1)
Imaging Systems
15(4)
The Pinhole Camera
16(2)
The Human Visual System
18(1)
The Synthetic-Camera Model
19(2)
The Programmer's Interface
21(8)
The Pen-Plotter Model
22(2)
Three-Dimensional APIs
24(2)
A Sequence of Images
26(2)
The Modeling--Rendering Paradigm
28(1)
Graphics Architectures
29(4)
Display Processors
29(1)
Pipeline Architectures
30(1)
The Graphics Pipeline
31(1)
Vertex Processing
31(1)
Clipping and Primitive Assembly
32(1)
Rasterization
33(1)
Fragment Processing
33(1)
Programmable Pipelines
33(1)
Performance Characteristics
34(5)
Summary and Notes
35(1)
Suggested Readings
36(1)
Exercises
36(3)
Graphics Programming
39(60)
The Sierpinski Gasket
39(1)
Programming Two-Dimensional Applications
40(6)
Coordinate Systems
45(1)
The OpenGL API
46(4)
Graphics Functions
47(1)
The Graphics Pipeline and State Machines
48(1)
The OpenGL Interface
49(1)
Primitives and Attributes
50(10)
Polygon Basics
52(1)
Polygon Types in OpenGL
53(2)
Approximating a Sphere
55(1)
Text
56(2)
Curved Objects
58(1)
Attributes
58(2)
Color
60(6)
RGB Color
62(2)
Indexed Color
64(1)
Setting of Color Attributes
65(1)
Viewing
66(5)
The Orthographic View
67(2)
Two-Dimensional Viewing
69(1)
Matrix Modes
70(1)
Control Functions
71(5)
Interaction with the Window System
71(2)
Aspect Ratio and Viewports
73(1)
The main, display, and myinit Functions
74(2)
Program Structure
76(1)
The Gasket Program
76(1)
Polygons and Recursion
77(3)
The Three-Dimensional Gasket
80(5)
Use of Three-Dimensional Points
80(2)
Use of Polygons in Three Dimensions
82(2)
Hidden-Surface Removal
84(1)
Plotting Implicit Functions
85(14)
Marching Squares
86(7)
Summary and Notes
93(1)
Suggested Readings
94(1)
Exercises
95(4)
Input and Interaction
99(58)
Interaction
99(1)
Input Devices
100(7)
Physical Input Devices
101(3)
Logical Devices
104(1)
Input Modes
105(2)
Clients and Servers
107(1)
Display Lists
108(7)
Definition and Execution of Display Lists
110(2)
Text and Display Lists
112(2)
Fonts in Glut
114(1)
Programming Event-Driven Input
115(7)
Using the Pointing Device
116(3)
Window Events
119(2)
Keyboard Events
121(1)
The Display and Idle Callbacks
121(1)
Window Management
122(1)
Menus
122(2)
Picking
124(7)
Picking and Selection Mode
125(6)
A Simple Paint Program
131(6)
Building Interactive Models
137(3)
Animating Interactive Programs
140(5)
The Rotating Square
140(2)
Double Buffering
142(2)
Using a Timer
144(1)
Design of Interactive Programs
145(1)
Toolkits, Widgets, and the Frame Buffer
145(1)
Logic Operations
146(11)
Drawing Erasable Lines
147(3)
XOR and Color
150(1)
Cursors and Overlay Planes
151(1)
Summary and Notes
151(1)
Suggested Readings
152(1)
Exercises
153(4)
Geometric Objects and Transformations
157(76)
Scalars, Points, and Vectors
158(8)
Geometric Objects
158(1)
Coordinate-Free Geometry
159(1)
The Mathematical View: Vector and Affine Spaces
160(1)
The Computer Science View
161(1)
Geometric ADTs
162(1)
Lines
162(1)
Affine Sums
163(1)
Convexity
164(1)
Dot and Cross Products
164(1)
Planes
165(1)
Three-Dimensional Primitives
166(2)
Coordinate Systems and Frames
168(12)
Representations and N-Tuples
170(1)
Change of Coordinate Systems
171(2)
Example Change of Representation
173(1)
Homogeneous Coordinates
174(3)
Example Change in Frames
177(2)
Working with Representations
179(1)
Frames in OpenGL
180(5)
Modeling a Colored Cube
185(7)
Modeling the Faces
185(1)
Inward- and Outward-Pointing Faces
186(1)
Data Structures for Object Representation
187(1)
The Color Cube
187(2)
Bilinear Interpolation
189(1)
Vertex Arrays
190(2)
Affine Transformations
192(2)
Translation, Rotation, and Scaling
194(6)
Translation
195(1)
Rotation
196(1)
Scaling
197(3)
Transformations in Homogeneous Coordinates
200(4)
Translation
200(1)
Scaling
201(1)
Rotation
202(1)
Shear
203(1)
Concatenation of Transformations
204(8)
Rotation About a Fixed Point
205(2)
General Rotation
207(1)
The Instance Transformation
208(1)
Rotation About an Arbitrary Axis
209(3)
OpenGL Transformation Matrices
212(6)
The Current Transformation Matrix
213(1)
Rotation, Translation, and Scaling
214(1)
Rotation About a Fixed Point in OpenGL
214(1)
Order of Transformations
215(1)
Spinning of the Cube
216(1)
Loading, Pushing, and Popping Matrices
217(1)
Interfaces to Three-Dimensional Applications
218(6)
Using Areas of the Screen
218(1)
A Virtual Trackball
219(3)
Smooth Rotations
222(1)
Incremental Rotation
223(1)
Quaternions
224(9)
Complex Numbers and Quaternions
224(1)
Quaternions and Rotation
225(2)
Summary and Notes
227(1)
Suggested Readings
228(1)
Exercises
229(4)
Viewing
233(52)
Classical and Computer Viewing
233(7)
Classical Viewing
235(1)
Orthographic Projections
236(1)
Axonometric Projections
237(1)
Oblique Projections
238(1)
Perspective Viewing
239(1)
Viewing with a Computer
240(2)
Positioning of the Camera
242(10)
Positioning of the Camera Frame
242(5)
Two Viewing APIs
247(3)
The Look-At Function
250(1)
Other Viewing APIs
251(1)
Simple Projections
252(4)
Perspective Projections
252(3)
Orthogonal Projections
255(1)
Projections in OpenGL
256(4)
Perspective in OpenGL
257(1)
Parallel Viewing in OpenGL
258(2)
Hidden-Surface Removal
260(2)
Culling
262(1)
Interactive Mesh Displays
262(5)
Meshes
262(2)
Walking Through a Scene
264(2)
Polygon Offset
266(1)
Parallel-Projection Matrices
267(7)
Projection Normalization
268(1)
Orthogonal-Projection Matrices
268(3)
Oblique Projections
271(3)
Perspective-Projection Matrices
274(5)
Perspective Normalization
274(4)
OpenGL Perspective Transformations
278(1)
Projections and Shadows
279(6)
Summary and Notes
282(1)
Suggested Readings
282(1)
Exercises
283(2)
Shading
285(38)
Light and Matter
286(3)
Light Sources
289(4)
Color Sources
290(1)
Ambient Light
290(1)
Point Sources
291(1)
Spotlights
292(1)
Distant Light Sources
292(1)
The Phong Reflection Model
293(6)
Ambient Reflection
295(1)
Diffuse Reflection
295(2)
Specular Reflection
297(1)
The Modified Phong Model
298(1)
Computation of Vectors
299(5)
Normal Vectors
300(2)
Angle of Reflection
302(2)
Polygonal Shading
304(5)
Flat Shading
304(2)
Smooth and Gouraud Shading
306(2)
Phong Shading
308(1)
Approximation of a Sphere by Recursive Subdivision
309(3)
Light Sources in OpenGL
312(2)
Specification of Materials in OpenGL
314(2)
Shading of the Sphere Model
316(1)
Global Illumination
317(6)
Summary and Notes
319(1)
Suggested Readings
320(1)
Exercises
320(3)
From Vertices to Fragments
323(56)
Basic Implementation Strategies
324(2)
Four Major Tasks
326(4)
Modeling
326(1)
Geometry Processing
327(1)
Rasterization
328(1)
Fragment Processing
329(1)
Clipping
330(1)
Line-Segment Clipping
330(5)
Cohen-Sutherland Clipping
331(2)
Liang-Barsky Clipping
333(2)
Polygon Clipping
335(3)
Clipping of Other Primitives
338(2)
Bounding Boxes and Volumes
338(1)
Curves, Surfaces, and Text
339(1)
Clipping in the Frame Buffer
340(1)
Clipping in Three Dimensions
340(3)
Rasterization
343(3)
Bresenham's Algorithm
346(2)
Polygon Rasterization
348(4)
Inside--Outside Testing
348(2)
OpenGL and Concave Polygons
350(1)
Fill and Sort
351(1)
Flood Fill
351(1)
Singularities
352(1)
Hidden-Surface Removal
352(11)
Object-Space and Image-Space Approaches
353(1)
Sorting and Hidden-Surface Removal
354(1)
Scanline Algorithms
355(1)
Back-Face Removal
356(1)
The z-Buffer Algorithm
357(2)
Scan Conversion with the z-Buffer
359(2)
Depth Sort and the Painter's Algorithm
361(2)
Antialiasing
363(2)
Display Considerations
365(14)
Color Systems
366(3)
The Color Matrix
369(1)
Gamma Correction
370(1)
Dithering and Halftoning
371(1)
Summary and Notes
372(1)
Suggested Readings
373(1)
Exercises
374(5)
Discrete Techniques
379(70)
Buffers
379(2)
Digital Images
381(3)
Writing into Buffers
384(4)
Writing Modes
385(2)
Writing with XOR
387(1)
Bit and Pixel Operations in OpenGL
388(7)
OpenGL Buffers and the Pixel Pipeline
389(1)
Bitmaps
390(1)
Raster Fonts
391(2)
Pixels and Images
393(1)
Lookup Tables
394(1)
Examples
395(4)
The Mandelbrot Set
395(3)
Testing Algorithms
398(1)
Buffers for Picking
399(1)
Mapping Methods
399(2)
Texture Mapping
401(7)
Two-Dimensional Texture Mapping
402(6)
Texture Mapping in OpenGL
408(10)
Two-Dimensional Texture Mapping
409(3)
Texture Sampling
412(3)
Working with Texture Coordinates
415(2)
Texture Objects
417(1)
Multitexturing
418(1)
Texture Generation
418(1)
Environment Maps
419(6)
Compositing Techniques
425(7)
Opacity and Blending
425(1)
Image Compositing
426(1)
Blending and Compositing in OpenGL
427(1)
Antialiasing Revisited
428(2)
Back-to-Front and Front-to-Back Rendering
430(1)
Depth Cueing and Fog
431(1)
Multirendering and the Accumulation Buffer
432(5)
Scene Antialiasing
433(1)
Bump Mapping and Embossing
433(1)
Image Processing
434(1)
Imaging Extensions
435(1)
Other Multipass Methods
436(1)
Sampling and Aliasing
437(12)
Sampling Theory
437(5)
Reconstruction
442(2)
Quantization
444(1)
Summary and Notes
444(1)
Suggested Readings
445(1)
Exercises
446(3)
Programmable Shaders
449(48)
Programmable Pipelines
449(1)
Shading Languages
450(2)
Shade Trees
451(1)
Extending OpenGL
452(2)
OpenGL Versions and Extensions
453(1)
GLSL and Cg
454(1)
The OpenGL Shading Language
454(4)
Vertex Shaders
454(3)
Fragment Shaders
457(1)
The OpenGL Shading Language
458(5)
GLSL Execution
458(1)
Data Types and Qualifiers
459(3)
Operators and Functions
462(1)
Linking Shaders with OpenGL Programs
463(2)
Moving Vertices
465(5)
Scaling Vertex Positions
465(2)
Morphing
467(1)
Particle Systems
468(2)
Lighting with Shaders
470(4)
Phong Shading
470(3)
Nonphotorealistic Shading
473(1)
Fragment Shaders
474(1)
Per-Vertex Versus Per-Fragment Phong Shading
474(2)
Samplers
476(4)
Cube Maps
480(7)
Reflection Maps
480(2)
Refraction
482(3)
Normalization Maps
485(2)
Bump Mapping
487(10)
Finding Bump Maps
487(2)
Bump Mapping with Height Fields
489(1)
Bump Mapping with Fragment Shaders
490(1)
Example
490(2)
Summary and Notes
492(1)
Suggested Readings
493(1)
Exercises
493(4)
Modeling
497(72)
Symbols and Instances
498(1)
Hierarchical Models
499(2)
A Robot Arm
501(3)
Trees and Traversal
504(4)
A Stack-Based Traversal
505(3)
Use of Tree Data Structures
508(4)
Animation
512(1)
Graphical Objects
513(8)
Methods, Attributes, and Messages
514(2)
A Cube Object
516(2)
Implementing the Cube Object
518(1)
Objects and Hierarchy
519(1)
Geometric Objects
520(1)
Scene Graphs
521(2)
A Simple Scene Graph API
523(16)
The Node Class
523(2)
Geometry Nodes
525(2)
Camera Class
527(1)
Lights and Materials
528(1)
Transformations
529(1)
The Robot Figure
530(2)
Implementing the Viewer
532(4)
Implementing a Node
536(3)
Other Tree Structures
539(6)
CSG Trees
539(2)
BSP Trees
541(2)
Quadtrees and Octrees
543(2)
Graphics and the Internet
545(4)
Networks and Protocols
545(1)
Hypermedia and HTML
546(1)
Databases and VRML
547(1)
Java and Applets
548(1)
Procedural Methods
549(2)
Physically Based Models and Particle Systems
551(1)
Newtonian Particles
552(5)
Independent Particles
554(1)
Spring Forces
554(2)
Attractive and Repulsive Forces
556(1)
Solving Particle Systems
557(3)
Constraints
560(9)
Collisions
560(3)
Soft Constraints
563(1)
Summary and Notes
564(1)
Suggested Readings
565(1)
Exercises
565(4)
Curves and Surfaces
569(56)
Representation of Curves and Surfaces
569(6)
Explicit Representation
569(2)
Implicit Representations
571(1)
Parametric Form
572(1)
Parametric Polynomial Curves
573(1)
Parametric Polynomial Surfaces
574(1)
Design Criteria
575(1)
Parametric Cubic Polynomial Curves
576(1)
Interpolation
577(6)
Blending Functions
579(2)
The Cubic Interpolating Patch
581(2)
Hermite Curves and Surfaces
583(3)
The Hermite Form
583(2)
Geometric and Parametric Continuity
585(1)
Bezier Curves and Surfaces
586(5)
Bezier Curves
586(3)
Bezier Surface Patches
589(2)
Cubic B-Splines
591(5)
The Cubic B-Spline Curve
591(3)
B-Splines and Basis
594(1)
Spline Surfaces
595(1)
General B-Splines
596(4)
Recursively Defined B-Splines
597(1)
Uniform Splines
598(1)
Nonuniform B-Splines
599(1)
Nurbs
599(1)
Rendering of Curves and Surfaces
600(8)
Polynomial Evaluation Methods
601(1)
Recursive Subdivision of Bezier Polynomials
602(3)
Rendering of Other Polynomial Curves by Subdivision
605(1)
Subdivision of Bezier Surfaces
605(3)
The Utah Teapot
608(2)
Algebraic Surfaces
610(5)
Quadrics
610(1)
Rendering of Surfaces by Ray Casting
611(1)
Subdivision Curves and Surfaces
611(1)
Mesh Subdivision
612(3)
Curves and Surfaces in OpenGL
615(10)
Bezier Curves
616(1)
Bezier Surfaces
617(1)
Displaying the Teapot
618(2)
Nurbs Functions
620(1)
Quadrics
620(1)
Summary and Notes
621(1)
Suggested Readings
622(1)
Exercises
622(3)
Advanced Rendering
625(38)
Going Beyond Pipeline Rendering
625(1)
Ray Tracing
626(4)
Building a Simple Ray Tracer
630(6)
Recursive Ray Tracing
630(2)
Calculating Intersections
632(3)
Ray-Tracing Variations
635(1)
The Rendering Equation
636(2)
Radiosity
638(8)
The Radiosity Equation
639(1)
Solving the Radiosity Equation
640(2)
Computing Form Factors
642(2)
Carrying Out Radiosity
644(2)
RenderMan
646(1)
Large-Scale Rendering
647(8)
Sort-Middle Rendering
648(2)
Sort-Last Rendering
650(3)
Sort-First Rendering
653(2)
Image-Based Rendering
655(8)
A Simple Example
655(3)
Summary and Notes
658(1)
Suggested Readings
659(1)
Exercises
659(4)
APPENDIX A SAMPLE PROGRAMS
663(62)
A.1 Sierpinski Gasket Program
664(2)
A.2 Recursive Generation of Sierpinski Gasket
666(1)
A.3 Recursive Three-Dimensional Sierpinski Gasket
667(3)
A.4 Marching Squares
670(4)
A.5 Square Drawing Program
674(3)
A.6 Paint Program
677(7)
A.7 Double-Buffering Example
684(2)
A.8 Selection-Mode Picking Program
686(3)
A.9 Rotating-Cube Program
689(2)
A.10 Rotating Cube Using Vertex Arrays
691(2)
A.11 Rotating Cube with a Virtual Trackball
693(4)
A.12 Moving Viewer
697(3)
A.13 Sphere Program
700(3)
A.14 Mandelbrot Set Program
703(4)
A.15 Bresenham's Algorithm
707(2)
A.16 Rotating Cube with Texture
709(3)
A.17 GLSL Example
712(4)
A.18 Scene-Graph Example
716(5)
A.19 Program for Drawing Bezier Curves
721(4)
APPENDIX B SPACES
725(10)
B.1 Scalars
725(1)
B.2 Vector Spaces
726(2)
B.3 Affine Spaces
728(1)
B.4 Euclidean Spaces
729(1)
B.5 Projections
730(1)
B.6 Gram-Schmidt Orthogonalization
731(4)
Suggested Readings
732(1)
Exercises
732(3)
APPENDIX C MATRICES
735(10)
C.1 Definitions
735(1)
C.2 Matrix Operations
736(1)
C.3 Row and Column Matrices
737(1)
C.4 Rank
738(1)
C.5 Change of Representation
739(2)
C.6 The Cross Product
741(1)
C.7 Eigenvalues and Eigenvectors
742(3)
Suggested Readings
743(1)
Exercises
744(1)
APPENDIX D SYNOPSIS OF OPENGL FUNCTIONS
745(18)
D.1 Specifying Simple Geometry
745(1)
D.2 Attributes
746(1)
D.3 Working with the Window System
747(1)
D.4 Interaction
748(2)
D.5 Enabling Features
750(1)
D.6 Transformations
750(1)
D.7 Viewing
751(1)
D.8 Defining Discrete Primitives
752(1)
D.9 Display Lists
753(1)
D.10 Picking
754(1)
D.11 Lighting
755(1)
D.12 Texture Mapping
755(2)
D.13 State and Buffer Manipulation
757(1)
D.14 Vertex Arrays
757(1)
D.15 Blending Functions
758(1)
D.16 Query Functions
758(1)
D.17 Curve and Surface Functions
758(1)
D.18 GLU Quadrics
759(1)
D.19 GLSL Functions
760(3)
References 763(8)
Function Index 771(2)
Subject Index 773

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Rewards Program