Computer Graphics with Open GL

Computer Graphics with Open GL

Paperback

By (author) Donald Hearn, By (author) M. Pauline Baker, By (author) Warren Carithers

List price $156.19

Unavailable - AbeBooks may have this title.

Additional formats available

Format
Hardback $153.02
  • Publisher: Pearson Education (US)
  • Format: Paperback | 888 pages
  • Dimensions: 204mm x 249mm x 44mm | 1,476g
  • Publication date: 1 January 2011
  • Publication City/Country: Upper Saddle River
  • ISBN 10: 0132484579
  • ISBN 13: 9780132484572
  • Edition: 11004
  • Edition statement: International ed of 4th revised ed
  • Sales rank: 452,430

Product description

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.

Other people who viewed this bought:

Showing items 1 to 10 of 10

Other books in this category

Showing items 1 to 11 of 11
Categories:

Author information

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.

Review quote

"I think the authors [Hearn/Baker] presented the materials in one of the best ways. They are very clear so that the students can understand...especially, adding the OpenGL example codes help the students a lot." - Jong Kwan Lee, Bowling Green University "A strong suit of this book [Hearn/Baker] is its sound integration of graphics foundations, algorithms, technology, libraries, and programming. The book provides a good overview of the key areas of graphics that a university student would want to know in a first course and beyond. The text can be a valuable reference after the course as it provides "room to grow." - Timothy Newman, University of Alabama - Huntsville "The features stressed should be the good explanation of concepts with sound mathematical concepts, great illustrations to explain each concept and the code snippets that actually show an implementation of the OpenGL function being explained." - Amar Raheja, California State Polytechnic University "The clarity of presentation, completeness of concept delivery and illustration, the book versatility and usability as professional reference and course textbook are a few of the features that differentiates this text from others." - Iren Valova, University of Massachusetts - Dartmouth "I think it [Hearn/Baker] has excellent coverage of material, discusses concepts at a reachable level, and doesn't muddle the learning with lofty messages, concepts, or complexity." - Dana Wortman, University of Colorado - Colorado Springs

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 Bezier Spline Curves 423 Bezier Curve Equations 424 Example Bezier Curve-Generating Program 425 Properties of Bezier Curves 428 Design Techniques Using Bezier Curves 429 Cubic Bezier Curves 430 14-9 Bezier 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 Bezier-Spline Curve Functions 450 OpenGL Bezier-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