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.

9780136053583

Computer Graphics with Open GL

by ; ;
  • ISBN13:

    9780136053583

  • ISBN10:

    0136053580

  • Edition: 4th
  • Format: Hardcover
  • Copyright: 2010-11-09
  • Publisher: Pearson

Note: Supplemental materials are not guaranteed with Rental or Used book purchases.

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
  • Complimentary 7-Day eTextbook Access - Read more
    When you rent or buy this book, you will receive complimentary 7-day online access to the eTextbook version from your PC, Mac, tablet, or smartphone. Feature not included on Marketplace Items.
List Price: $199.99 Save up to $143.75
  • Rent Book $119.99
    Add to Cart Free Shipping Icon Free Shipping

    TERM
    PRICE
    DUE

    7-Day eTextbook Access 7-Day eTextbook Access

    USUALLY SHIPS IN 24-48 HOURS
    *This item is part of an exclusive publisher rental program and requires an additional convenience fee. This fee will be reflected in the shopping cart.

Supplemental Materials

What is included with this book?

Summary

Computer Graphics with OpenGL, 4/e is appropriate for junior-to graduate-level courses in computer graphics.

Assuming no background in computer graphics, this junior-to graduate-level course presents basic principles for the design, use, and understanding of computer graphics systems and applications. The authors, authorities in their field, offer an integrated approach to two-dimensional and three-dimensional graphics topics. A comprehensive explanation of the popular OpenGL programming package, along with C++ programming examples illustrates applications of the various functions in the OpenGL basic library and the related GLU and GLUT packages.

Author Biography

Donald Hearn joined the Computer Science faculty at the University of Illinois at Urbana-Champaign in 1985. Dr. Hearn has taught a wide range of courses in computer graphics, scientific visualization, computational science, mathematics, and applied science. Also, he has directed numerous research projects and published a wide variety of technical articles in these areas.

M. Pauline Baker is on the faculty of the School of Informatics at Indiana University-Purdue University Indianapolis (IUPUI), where she is director of the Media Arts and Science program. She also directs the Visualization and Interactive Spaces Lab, part of the Pervasive Technology Institute at Indiana University. Before moving to Indiana, Prof. Baker was director of Visualization and Virtual Environments at the National Center for Supercomputing Applications (NCSA) at the University of Illinois. Prof. Baker holds a BS degree in Psychology (Cornell University), an MS degree in Education (Syracuse University), and a PhD in Computer Science (University of Illinois),

Warren R. Carithers joined the faculty of the Department of Computer Science at Rochester Institute of Technology in 1981. In addition to teaching many of the department's courses in computer graphics, Professor Carithers develops and teaches courses in a wide range of other areas including operating systems, computer architecture and organization, systems software, programming language design, and security.

Table of Contents

Preface xxi
About the Authors xxvi
1 A Survey of Computer Graphics 1
1-1 Graphs and Charts 2
1-2 Computer-Aided Design 2
1-3 Virtual-Reality Environments 4
1-4 Data Visualizations 4
1-5 Education and Training 5
1-6 Computer Art 5
1-7 Entertainment 6
1-8 Image Processing 7
1-9 Graphical User Interfaces 7
1-10 Summary 8

2 Computer Graphics Hardware 9
2-1 Video Display Devices 10
Refresh Cathode-Ray Tubes 10
Raster-Scan Displays 13
Random-Scan Displays 15
Color CRT Monitors 16
Flat-Panel Displays 18
Three-Dimensional Viewing Devices 20
Stereoscopic and Virtual-Reality Systems 21
2-2 Raster-Scan Systems 22
Video Controller 22
Raster-Scan Display Processor 24
2-3 GraphicsWorkstations and Viewing Systems 25
2-4 Input Devices 26
Keyboards, Button Boxes, and Dials 26
Mouse Devices 26
Trackballs and Spaceballs 27
Joysticks 27
Data Gloves 28
Digitizers 28
Image Scanners 29
Touch Panels 29
Light Pens 30
Voice Systems 30
2-5 Hard-Copy Devices 30
2-6 Graphics Networks 32
2-7 Graphics on the Internet 32
2-8 Summary 33

3 Computer Graphics
Software 35
3-1 Coordinate Representations 36
3-2 Graphics Functions 37
3-3 Software Standards 38
3-4 Other Graphics Packages 39
3-5 Introduction to OpenGL 40
Basic OpenGL Syntax 40
Related Libraries 40
Header Files 41
Display-Window Management Using GLUT 42
A Complete OpenGL Program 43
Error Handling in OpenGL 47
3-6 Summary 48

4 Graphics Output Primitives 51
4-1 Coordinate Reference Frames 52
Screen Coordinates 52
Absolute and Relative Coordinate Specifications 53
4-2 Specifying A Two-Dimensional World-Coordinate Reference Frame in OpenGL 54
4-3 OpenGL Point Functions 55
4-4 OpenGL Line Functions 57
4-5 OpenGL Curve Functions 58
4-6 Fill-Area Primitives 59
4-7 Polygon Fill Areas 60
Polygon Classifications 61
Identifying Concave Polygons 61
Splitting Concave Polygons 62
Splitting a Convex Polygon into a Setof Triangles 63
Inside-Outside Tests 63
Polygon Tables 66
Plane Equations 67
Front and Back Polygon Faces 68
4-8 OpenGL Polygon Fill-Area Functions 70
4-9 OpenGL Vertex Arrays 76
4-10 Pixel-Array Primitives 78
4-11 OpenGL Pixel-Array Functions 79
OpenGL Bitmap Function 79
OpenGL Pixmap Function 81
OpenGL Raster Operations 82
4-12 Character Primitives 83
4-13 OpenGL Character Functions 85
4-14 Picture Partitioning 86
4-15 OpenGL Display Lists 87
Creating and Naming an OpenGL Display List 87
Executing OpenGL Display Lists 88
Deleting OpenGL Display Lists 89
4-16 OpenGL Display-Window Reshape Function 89
4-17 Summary 92

5 Attributes of Graphics Primitives 105
5-1 OpenGL State Variables 106
5-2 Color and Grayscale 106
RGB Color Components 106
Color Tables 107
Grayscale 108
Other Color Parameters 109
5-3 OpenGL Color Functions 109
The OpenGL RGB and RGBA Color Modes 109
OpenGL Color-Index Mode 110
OpenGL Color Blending 111
OpenGL Color Arrays 112
Other OpenGL Color Functions 114
5-4 Point Attributes 115
5-5 OpenGL Point-Attribute Functions 115
5-6 Line Attributes 115
Line Width 115
Line Style 116
Pen and Brush Options 116
5-7 OpenGL Line-Attribute Functions 117
OpenGL Line-Width Function 117
OpenGL Line-Style Function 117
Other OpenGL Line Effects 119
5-8 Curve Attributes 119
5-9 Fill-Area Attributes 120
Fill Styles 120
Color-Blended Fill Regions 121
5-10 OpenGL Fill-Area Attribute Functions 121
OpenGL Fill-Pattern Function 121
OpenGL Texture and Interpolation Patterns 122
OpenGL Wire-Frame Methods 123
OpenGL Front-Face Function 126
5-11 Character Attributes 126
5-12 OpenGL Character-Attribute Functions 129
5-13 OpenGL Antialiasing Functions 129
5-14 OpenGL Query Functions 130
5-15 OpenGL Attribute Groups 131
5-16 Summary 131

6 Implementation Algorithms for Graphics Primitives and Attributes 137
6-1 Line-Drawing Algorithms 138
Line Equations 138
DDA Algorithm 139
Bresenham’s Line Algorithm 140
Displaying Polylines 144
6-2 Parallel Line Algorithms 144
6-3 Setting Frame-Buffer Values 146
6-4 Circle-Generating Algorithms 147
Properties of Circles 147
Midpoint Circle Algorithm 149
6-5 Ellipse-Generating Algorithms 153
Properties of Ellipses 153
Midpoint Ellipse Algorithm 154
6-6 Other Curves 160
Conic Sections 161
Polynomials and Spline Curves 162
6-7 Parallel Curve Algorithms 163
6-8 Pixel Addressing and Object Geometry 163
Screen Grid Coordinates 164
Maintaining Geometric Properties of Displayed Objects 164
6-9 Attribute Implementations for Straight-Line Segments and Curves 166
Line Width 166
Line Style 168
Pen and Brush Options 169
Curve Attributes 170
6-10 General Scan-Line Polygon-Fill Algorithm 171
6-11 Scan-Line Fill of Convex Polygons 175
6-12 Scan-Line Fill for Regions with Curved Boundaries 176
6-13 Fill Methods for Areas with Irregular Boundaries 176
Boundary-Fill Algorithm 176
Flood-Fill Algorithm 180
6-14 Implementation Methods for Fill Styles 180
Fill Styles 181
Color-Blended Fill Regions 181
6-15 Implementation Methods for Antialiasing 183
Supersampling Straight-Line Segments 184
Subpixel Weighting Masks 186
Area Sampling Straight-Line Segments 186
Filtering Techniques 186
Pixel Phasing 186
Compensating for Line-Intensity Differences 187
Antialiasing Area Boundaries 188
6-16 Summary 190

7 Two-Dimensional Geometric Transformations 195
7-1 Basic Two-Dimensional Geometric Transformations 196
Two-Dimensional Translation 196
Two-Dimensional Rotation 198
Two-Dimensional Scaling 200
7-2 Matrix Representations and
Homogeneous Coordinates 201
Homogeneous Coordinates 202
Two-Dimensional Translation Matrix 203
Two-Dimensional Rotation Matrix 203
Two-Dimensional Scaling Matrix 203
7-3 Inverse Transformations 204
7-4 Two-Dimensional Composite Transformations 204
Composite Two-Dimensional
Translations 205
Composite Two-Dimensional Rotations 205
Composite Two-Dimensional Scalings 205
General Two-Dimensional Pivot-Point Rotation 206
General Two-Dimensional Fixed-Point Scaling 206
General Two-Dimensional Scaling Directions 207
Matrix Concatenation Properties 208
General Two-Dimensional Composite Transformations and Computational Efficiency 209
Two-Dimensional Rigid-Body Transformation 210
Constructing Two-Dimensional Rotation Matrices 211
Two-Dimensional Composite-Matrix Programming Example 211
7-5 Other Two-Dimensional Transformations 216
Reflection 216
Shear 218
7-6 Raster Methods for Geometric Transformations 220
7-7 OpenGL Raster Transformations 221
7-8 Transformations between Two-Dimensional Coordinate Systems 222
7-9 OpenGL Functions for Two-Dimensional
Geometric Transformations 224
Basic OpenGL Geometric Transformations 224
OpenGL Matrix Operations 226
7-10 OpenGL Geometric-Transformation Programming Examples 228
7-11 Summary 229

8 Two-Dimensional Viewing 233
8-1 The Two-Dimensional Viewing Pipeline 234
8-2 The ClippingWindow 235
Viewing-Coordinate Clipping Window 236
World-Coordinate Clipping Window 236
8-3 Normalization and Viewport Transformations 237
Mapping the Clipping Window into a Normalized Viewport 237
Mapping the Clipping Window into a Normalized Square 239
Display of Character Strings 241
Split-Screen Effects and Multiple Output Devices 241
8-4 OpenGL Two-Dimensional Viewing Functions 241
OpenGL Projection Mode 241
GLU Clipping-Window Function 242
OpenGL Viewport Function 242
Creating a GLUT Display Window 243
Setting the GLUT Display-Window Mode and Color 244
GLUT Display-Window Identifier 244
Deleting a GLUT Display Window 244
Current GLUT Display Window 244
Relocating and Resizing a GLUT Display Window 245
Managing Multiple GLUT Display Windows 245
GLUT Subwindows 246
Selecting a Display-Window Screen-Cursor Shape 246
Viewing Graphics Objects in a GLUT Display Window 247
Executing the Application Program 247
Other GLUT Functions 248
OpenGL Two-Dimensional Viewing Program Example 248
8-5 Clipping Algorithms 250
8-6 Two-Dimensional Point Clipping 250
8-7 Two-Dimensional Line Clipping 251
Cohen-Sutherland Line Clipping 252
Liang-Barsky Line Clipping 257
Nicholl-Lee-Nicholl Line Clipping 260
Line Clipping Using Nonrectangular Polygon Clip Windows 262
Line Clipping Using Nonlinear Clipping-Window Boundaries 262
8-8 Polygon Fill-Area Clipping 263
Sutherland--Hodgman Polygon Clipping 265
Weiler-Atherton Polygon Clipping 269
Polygon Clipping Using Nonrectangular Polygon Clip Windows 271
Polygon Clipping Using Nonlinear Clipping-Window Boundaries 272
8-9 Curve Clipping 272
8-10 Text Clipping 273
8-11 Summary 274

9 Three-Dimensional Geometric Transformations 279
9-1 Three-Dimensional Translation 280
9-2 Three-Dimensional Rotation 281
Three-Dimensional Coordinate-Axis Rotations 282
General Three-Dimensional Rotations 284
Quaternion Methods for Three-Dimensional Rotations 289
9-3 Three-Dimensional Scaling 293
9-4 Composite Three-Dimensional Transformations 295
9-5 Other Three-Dimensional Transformations 298
Three-Dimensional Reflections 298
Three-Dimensional Shears 299
9-6 Transformations between Three-Dimensional Coordinate Systems 299
9-7 Affine Transformations 300
9-8 OpenGL Geometric-Transformation Functions 300
OpenGL Matrix Stacks 300
9-9 OpenGL Three-Dimensional Geometric-Transformation Programming Examples 302
9-10 Summary 303

10 Three-Dimensional Viewing 307
10-1 Overview of Three-Dimensional Viewing Concepts 308
Viewing a Three-Dimensional Scene 308
Projections 308
Depth Cueing 309
Identifying Visible Lines and Surfaces 309
Surface Rendering 309
Exploded and Cutaway Views 309
Three-Dimensional and Stereoscopic Viewing 310
10-2 The Three-Dimensional Viewing Pipeline 310
10-3 Three-Dimensional Viewing-Coordinate Parameters 312
The View-Plane Normal Vector 312
The View-Up Vector 313
The uvn Viewing-Coordinate Reference Frame 313
Generating Three-Dimensional Viewing Effects 314
10-4 Transformation fromWorld to Viewing Coordinates 314
10-5 Projection Transformations 316
10-6 Orthogonal Projections 316
Axonometric and Isometric Orthogonal Projections 317
Orthogonal Projection Coordinates 317
Clipping Window and Orthogonal-Projection View Volume 318
Normalization Transformation for an Orthogonal Projection 320
10-7 Oblique Parallel Projections 321
Oblique Parallel Projections in Drafting and Design 322
Cavalier and Cabinet Oblique Parallel Projections 323
Oblique Parallel-Projection Vector 324
Clipping Window and Oblique
Parallel-Projection View Volume 325
Oblique Parallel-Projection Transformation Matrix 325
Normalization Transformation for an Oblique Parallel Projection 326
10-8 Perspective Projections 327
Perspective-Projection Transformation Coordinates 327
Perspective-Projection Equations: Special Cases 328
Vanishing Points for Perspective Projections 330
Perspective-Projection View Volume 331
Perspective-Projection Transformation Matrix 332
Symmetric Perspective-Projection Frustum 333
Oblique Perspective-Projection Frustum 335
Normalized Perspective-Projection Transformation Coordinates 338
10-9 The Viewport Transformation and Three- Dimensional Screen Coordinates 341
10-10 OpenGL Three-Dimensional Viewing Functions 341
OpenGL Viewing-Transformation Function 342
OpenGL Orthogonal-Projection Function 342
OpenGL Symmetric Perspective-Projection Function 344
OpenGL General Perspective-Projection Function 344
OpenGL Viewports and Display Windows 345
OpenGL Three-Dimensional Viewing Program Example 345
10-11 Three-Dimensional Clipping Algorithms 347
Clipping in Three-Dimensional Homogeneous Coordinates 348
Three-Dimensional Region Codes 349
Three-Dimensional Point and Line Clipping 350
Three-Dimensional Polygon Clipping 352
Three-Dimensional Curve Clipping 353
Arbitrary Clipping Planes 353
10-12 OpenGL Optional Clipping Planes 355
10-13 Summary 356

11 Hierarchical Modeling 359
11-1 Basic Modeling Concepts 360
System Representations 360
Symbol Hierarchies 361
11-2 Modeling Packages 363
11-3 General Hierarchical Modeling Methods 363
Local Coordinates 364
Modeling Transformations 364
Creating Hierarchical Structures 364
11-4 Hierarchical Modeling Using OpenGL Display Lists 366
11-5 Summary 367

12 Computer Animation 369
12-1 Raster Methods for Computer Animation 370
Double Buffering 370
Generating Animations Using Raster Operations 371
12-2 Design of Animation Sequences 372
12-3 Traditional Animation Techniques 373
12-4 General Computer-Animation Functions 374
12-5 Computer-Animation Languages 374
12-6 Key-Frame Systems 375
Morphing 375
Simulating Accelerations 377
12-7 Motion Specifications 380
Direct Motion Specification 380
Goal-Directed Systems 380
Kinematics and Dynamics 381
12-8 Character Animation 382
Articulated Figure Animation 382
Motion Capture 383
12-9 Periodic Motions 384
12-10 OpenGL Animation Procedures 385
12-11 Summary 388

13 Three-Dimensional Object Representations 393
13-1 Polyhedra 394
13-2 OpenGL Polyhedron Functions 394
OpenGL Polygon Fill-Area Functions 394
GLUT Regular Polyhedron Functions 394
Example GLUT Polyhedron Program 396
13-3 Curved Surfaces 397
13-4 Quadric Surfaces 398
Sphere 398
Ellipsoid 398
Torus 399
13-5 Superquadrics 400
Superellipse 400
Superellipsoid 401
13-6 OpenGL Quadric-Surface and Cubic-Surface Functions 401
GLUT Quadric-Surface Functions 401
GLUT Cubic-Surface Teapot Function 402
GLU Quadric-Surface Functions 403
Example Program Using GLUT and GLU Quadric-Surface Functions 405
13-7 Summary 407

14 Spline Representations 411
14-1 Interpolation and Approximation Splines 412
14-2 Parametric Continuity Conditions 413
14-3 Geometric Continuity Conditions 414
14-4 Spline Specifications 415
14-5 Spline Surfaces 416
14-6 Trimming Spline Surfaces 416
14-7 Cubic-Spline Interpolation Methods 417
Natural Cubic Splines 417
Hermite Interpolation 418
Cardinal Splines 419
Kochanek-Bartels Splines 423
14-8 Bézier Spline Curves 423
Bézier Curve Equations 424
Example Bézier Curve-Generating Program 425
Properties of Bézier Curves 428
Design Techniques Using Bézier Curves 429
Cubic Bézier Curves 430
14-9 Bézier Surfaces 431
14-10 B-Spline Curves 433
B-Spline Curve Equations 433
Uniform Periodic B-Spline Curves 434
Cubic Periodic B-Spline Curves 437
Open Uniform B-Spline Curves 439
Nonuniform B-Spline Curves 440
14-11 B-Spline Surfaces 442
14-12 Beta-Splines 442
Beta-Spline Continuity Conditions 442
Cubic Periodic Beta-Spline Matrix Representation 443
14-13 Rational Splines 443
14-14 Conversion Between Spline Representations 445
14-15 Displaying Spline Curves and Surfaces 446
Horner’s Rule 447
Forward-Difference Calculations 447
Subdivision Methods 448
14-16 OpenGL Approximation-Spline Functions 450
OpenGL Bézier-Spline Curve Functions 450
OpenGL Bézier-Spline Surface
Functions 453
GLU B-Spline Curve Functions 455
GLU B-Spline Surface Functions 457
GLU Surface-Trimming Functions 459
14-17 Summary 461

15 Other Three-Dimensional Object Representations 467
15-1 Blobby Objects 468
15-2 Sweep Representations 469
15-3 Constructive Solid-Geometry Methods 470
15-4 Octrees 472
15-5 BSP Trees 474
15-6 Physically Based Modeling 475
15-7 Summary 476

16 Visible-Surface Detection Methods 479
16-1 Classification of Visible-Surface Detection Algorithms 480
16-2 Back-Face Detection 480
16-3 Depth-Buffer Method 481
16-4 A-Buffer Method 484
16-5 Scan-Line Method 486
16-6 Depth-Sorting Method 487
16-7 BSP-Tree Method 490
16-8 Area-Subdivision Method 491
16-9 Octree Methods 493
16-10 Ray-Casting Method 494
16-11 Comparison of Visibility-Detection Methods 495
16-12 Curved Surfaces 496
Curved-Surface Representations 496
Surface Contour Plots 496
16-13 Wire-Frame Visibility Methods 497
Wire-Frame Surface-Visibility Algorithms 497
Wire-Frame Depth-Cueing Algorithm 498
16-14 OpenGL Visibility-Detection Functions 499
OpenGL Polygon-Culling Functions 499
OpenGL Depth-Buffer Functions 499
OpenGL Wire-Frame Surface-Visibility Methods 501
OpenGL Depth-Cueing Function 501
16-15 Summary 502

17 Illumination Models and Surface-Rendering Methods 507
17-1 Light Sources 508
Point Light Sources 509
Infinitely Distant Light Sources 509
Radial Intensity Attenuation 509
Directional Light Sources and Spotlight Effects 510
Angular Intensity Attenuation 511
Extended Light Sources and the Warn Model 512
17-2 Surface Lighting Effects 512
17-3 Basic Illumination Models 513
Ambient Light 513
Diffuse Reflection 514
Specular Reflection and the Phong Model 516
Combined Diffuse and Specular
Reflections 519
Diffuse and Specular Reflections from Multiple Light Sources 519
Surface Light Emissions 519
Basic Illumination Model with Intensity Attenuation and Spotlights 520
RGB Color Considerations 521
Other Color Representations 522
Luminance 522
17-4 Transparent Surfaces 522
Translucent Materials 523
Light Refraction 523
Basic Transparency Model 524
17-5 Atmospheric Effects 525
17-6 Shadows 526
17-7 Camera Parameters 526
17-8 Displaying Light Intensities 526
Distributing System Intensity Levels 527
Gamma Correction and Video Lookup Tables 528
Displaying Continuous-Tone Images 529
17-9 Halftone Patterns and Dithering Techniques 529
Halftone Approximations 531
Dithering Techniques 533
17-10 Polygon Rendering Methods 535
Constant-Intensity Surface Rendering 536
Gouraud Surface Rendering 536
Phong Surface Rendering 538
Fast Phong Surface Rendering 539
17-11 OpenGL Illumination and Surface-Rendering Functions 540
OpenGL Point Light-Source Function 540
Specifying an OpenGL Light-Source Position and Type 541
Specifying OpenGL Light-Source Colors 542
Specifying Radial-Intensity Attenuation Coefficients for an OpenGL Light Source 543
OpenGL Directional Light Sources (Spotlights) 543
OpenGL Global Lighting Parameters 544
OpenGL Surface-Property Function 545
OpenGL Illumination Model 546
OpenGL Atmospheric Effects 547
OpenGL Transparency Functions 548
OpenGL Surface-Rendering Functions 549
OpenGL Halftoning Operations 550
17-12 Summary 551

18 Texturing and Surface-Detail Methods 555
18-1 Modeling Surface Detail with Polygons 556
18-2 Texture Mapping 556
Linear Texture Patterns 557
Surface Texture Patterns 557
Volume Texture Patterns 560
Texture Reduction Patterns 561
Procedural Texturing Methods 561
18-3 Bump Mapping 561
18-4 Frame Mapping 562
18-5 OpenGL Texture Functions 563
OpenGL Line-Texture Functions 563
OpenGL Surface-Texture Functions 566
OpenGL Volume-Texture Functions 568
OpenGL Color Options for Texture Patterns 568
OpenGL Texture-Mapping Options 569
OpenGL Texture Wrapping 569
Copying OpenGL Texture Patterns from the Frame Buffer 570
OpenGL Texture-Coordinate Arrays 570
Naming OpenGL Texture Patterns 570
OpenGL Texture Subpatterns 572
OpenGL Texture Reduction Patterns 572
OpenGL Texture Borders 573
OpenGL Proxy Textures 573
Automatic Texturing of Quadric Surfaces 574
Homogeneous Texture Coordinates 574
Additional OpenGL Texture Options 575
18-6 Summary 575

19 Color Models and Color Applications 579
19-1 Properties of Light 580
The Electromagnetic Spectrum 580
Psychological Characteristics of Color 581
19-2 Color Models 582
Primary Colors 582
Intuitive Color Concepts 583
19-3 Standard Primaries and the Chromaticity Diagram 583
The XYZ Color Model 584
Normalized XYZ Values 584
The CIE Chromaticity Diagram 585
Color Gamuts 585
Complementary Colors 585
Dominant Wavelength 586
Purity 586
19-4 The RGB Color Model 586
19-5 The YIQ and Related Color Models 588
The YIQ Parameters 588
Transformations Between RGB and YIQ Color Spaces 588
The YUV and YCrCb Systems 589
19-6 The CMY and CMYK Color Models 589
The CMY Parameters 589
Transformations Between CMY and RGB Color Spaces 590
19-7 The HSV Color Model 590
The HSV Parameters 590
Selecting Shades, Tints, and Tones 591
Transformations Between HSV and RGB Color Spaces 592
19-8 The HLS Color Model 594
19-9 Color Selection and Applications 595
19-10 Summary 595

20 Interactive Input Methods and Graphical User Interfaces 599
20-1 Graphical Input Data 600
20-2 Logical Classification of Input Devices 600
Locator Devices 600
Stroke Devices 601
String Devices 601
Valuator Devices 601
Choice Devices 601
Pick Devices 602
20-3 Input Functions for Graphical Data 603
Input Modes 604
Echo Feedback 604
Callback Functions 604
20-4 Interactive Picture-Construction Techniques 605
Basic Positioning Methods 605
Dragging 605
Constraints 605
Grids 606
Rubber-Band Methods 606
Gravity Field 607
Interactive Painting and Drawing Methods 607
20-5 Virtual-Reality Environments 608
20-6 OpenGL Interactive Input-Device Functions 608
GLUT Mouse Functions 609
GLUT Keyboard Functions 613
GLUT Tablet Functions 617
GLUT Spaceball Functions 618
GLUT Button-Box Function 618
GLUT Dials Function 618
OpenGL Picking Operations 619
20-7 OpenGL Menu Functions 624
Creating a GLUT Menu 624
Creating and Managing Multiple GLUT Menus 626
Creating GLUT Submenus 627
Modifying GLUT Menus 629
20-8 Designing a Graphical User Interface 630
The User Dialogue 630
Windows and Icons 630
Accommodating Multiple Skill Levels 631
Consistency 631
Minimizing Memorization 631
Backup and Error Handling 632
Feedback 632
20-9 Summary 633

21 Global Illumination 639
21-1 Ray-Tracing Methods 640
Basic Ray-Tracing Algorithm 640
Ray—Surface Intersection Calculations 643
Ray—Sphere Intersections 644
Ray—Polyhedron Intersections 645
Reducing Object-Intersection Calculations 646
Space-Subdivision Methods 646
Simulating Camera Focusing Effects 648
Antialiased Ray Tracing 650
Distributed Ray Tracing 651
21-2 Radiosity Lighting Model 654
Radiant-Energy Terms 654
The Basic Radiosity Model 655
Progressive Refinement Radiosity Method 658
21-3 Environment Mapping 660
21-4 Photon Mapping 661
21-5 Summary 662

22 Programmable Shaders 665
22-1 A History of Shading Languages 666
Cook’s Shade Trees 666
Perlin’s Pixel Stream Editor 668
RenderMan 668
22-2 The OpenGL Pipeline 670
The Fixed-Function Pipeline 670
Changing the Pipeline Structure 671
Vertex Shaders 672
Fragment Shaders 672
Geometry Shaders 672
Tessellation Shaders 672
22-3 The OpenGL Shading Language 673
Shader Structure 673
Using Shaders in OpenGL 675
Basic Data Types 679
Vectors 679
Matrices 680
Structures and Arrays 680
Control Structures 681
GLSL Functions 681
Communicating with OpenGL 682
22-4 Shader Effects 683
A Phong Shader 684
Texture Mapping 687
Bump Mapping 689
22-5 Summary 693

23 Algorithmic Modeling 695
23-1 Fractal-Geometry Methods 696
Fractal Generation Procedures 697
Classification of Fractals 697
Fractal Dimension 698
Geometric Construction of Deterministic
Self-Similar Fractals 700
Geometric Construction of Statistically Self-Similar Fractals 703
Affine Fractal-Construction Methods 704
Random Midpoint-Displacement Methods 704
Controlling Terrain Topography 706
Self-Squaring Fractals 708
Self-Inverse Fractals 717
23-2 Particle Systems 719
23-3 Grammar-Based Modeling Methods 720
23-4 Summary 722

24 Visualization of Data Sets 725
24-1 Visual Representations for Scalar Fields 726
24-2 Visual Representations for Vector Fields 728
24-3 Visual Representations for Tensor Fields 728
24-4 Visual Representations for Multivariate Data Fields 729
24-5 Summary 729

A Mathematics for ComputerGraphics 731
A-1 Coordinate Reference Frames 731
Two-Dimensional Cartesian Screen Coordinates 731
Standard Two-Dimensional Cartesian Reference Frames 732
Polar Coordinates in the xy Plane 732
Standard Three-Dimensional Cartesian Reference Frames 733
Three-Dimensional Cartesian Screen Coordinates 733
Three-Dimensional Curvilinear-Coordinate Systems 734
Solid Angle 735
A-2 Points and Vectors 735
Point Properties 735
Vector Properties 736
Vector Addition and Scalar Multiplication 737
Scalar Product of Two Vectors 738
Vector Product of Two Vectors 738
A-3 Tensors 739
A-4 Basis Vectors and the Metric Tensor 739
Determining Basis Vectors for a Coordinate Space 740
Orthonormal Basis 740
Metric Tensor 741
A-5 Matrices 742
Scalar Multiplication and Matrix Addition 742
Matrix Multiplication 743
Matrix Transpose 744
Determinant of a Matrix 744
Matrix Inverse 744
A-6 Complex Numbers 745
Basic Complex Arithmetic 745
Imaginary Unit 746
Complex Conjugate and Modulus of a Complex Number 746
Complex Division 746
Polar-Coordinate Representation for a Complex Number 747
A-7 Quaternions 747
A-8 Nonparametric Representations 748
A-9 Parametric Representations 749
A-10 Rate-of-Change Operators 750
Gradient Operator 750
Directional Derivative 751
General Form of the Gradient Operator 751
Laplace Operator 751
Divergence Operator 752
Curl Operator 752
A-11 Rate-of-Change Integral Transformation Theorems 752
Stokes’s Theorem 753
Green’s Theorem for a Plane Surface 753
Divergence Theorem 754
Green’s Transformation Equations 755
A-12 Area and Centroid of a Polygon 755
Area of a Polygon 755
Centroid of a Polygon 756
A-13 Calculating Properties of Polyhedra 757
A-14 Numerical Methods 758
Solving Sets of Linear Equations 758
Finding Roots of Nonlinear Equations 760
Evaluating Integrals 761
Solving Ordinary Differential Equations 763
Solving Partial Differential Equations 764
Least-Squares Curve-Fitting Methods for Data Sets 765

B Graphics File Formats 767
B-1 Image-File Configurations 767
B-2 Color-Reduction Methods 768
Uniform Color Reduction 768
Popularity Color Reduction 768
Median-Cut Color Reduction 769
B-3 File-Compression Techniques 769
Run-Length Encoding 770
LZW Encoding 770
Other Pattern-Recognition Compression Methods 771
Huffman Encoding 771
Arithmetic Encoding 773
Discrete Cosine Transform 774
B-4 Composition of the Major File Formats 776
JPEG: Joint Photographic Experts Group 776
CGM: Computer-Graphics Metafile Format 778
TIFF: Tag Image-File Format 778
PNG: Portable Network-Graphics Format 779
XBM: X Window System Bitmap Format and XPM: X Window System Pixmap Format 779
Adobe Photoshop Format 779
MacPaint: Macintosh Paint Format 780
PICT: Picture Data Format 780
BMP: Bitmap Format 780
PCX: PC Paintbrush File Format 780
TGA: Truevision Graphics-Adapter Format 780
GIF: Graphics Interchange Format 781
B-5 Summary 781
C The World of OpenGL 783
C-1 The Evolution of OpenGL 783
The Early Years: OpenGL 1.x 784
OpenGL Goes Tiny: OpenGL ES 1.x 785
Under New Management: OpenGL and Khronos Group 786
Programmable Everything: OpenGL 2.x 786 Tiny Programs: OpenGL ES 2.x 787
Geometry and Vertex Processing Evolution: OpenGL 3.x 787
This Generation: OpenGL 4.x 789
The OpenGL Extension Mechanism 790
Where Next? 791
C-2 OpenGL beyond C and C++ 792
OpenGL for Java 792
Multithreading 795
Python and OpenGL 798
Conclusions and Directions 803
C-3 GPU Architecture, Past, Present, and Future 803
The Early Days 804
The Middle Ages 805
Modern GPUs 806
Parallelism 806
Getting the Most out of a Modern GPU 810
Balance the Workload 810
Always Move Forwards 811
Feed the Pipeline 811
Make Best Use of Your Resources 811
Bibliography 813
Index 825
OpenGL Function Index 859
Core Library Functions 859
GLSL Library Functions 860
GLU Library Functions 861
GLUT Library Functions 861

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