Computer Graphics with Open GL

Computer Graphics with Open GL : International Edition

3.73 (118 ratings by Goodreads)
By (author)  , By (author)  , By (author) 

List price: US$88.00

Currently unavailable

Add to wishlist

AbeBooks may have this title (opens in new window).

Try AbeBooks


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.
show more

Product details

  • Paperback | 888 pages
  • 204 x 249 x 44mm | 1,476g
  • Pearson Education (US)
  • Pearson
  • United States
  • English
  • 4th edition
  • 0132484579
  • 9780132484572
  • 649,164

Table of contents

Preface xxiAbout the Authors xxvi1 A Survey of Computer Graphics 11-1 Graphs and Charts 21-2 Computer-Aided Design 21-3 Virtual-Reality Environments 41-4 Data Visualizations 41-5 Education and Training 51-6 Computer Art 51-7 Entertainment 61-8 Image Processing 71-9 Graphical User Interfaces 71-10 Summary 82 Computer Graphics Hardware 92-1 Video Display Devices 10Refresh Cathode-Ray Tubes 10Raster-Scan Displays 13Random-Scan Displays 15Color CRT Monitors 16Flat-Panel Displays 18Three-Dimensional Viewing Devices 20Stereoscopic and Virtual-Reality Systems 212-2 Raster-Scan Systems 22Video Controller 22Raster-Scan Display Processor 242-3 GraphicsWorkstations and Viewing Systems 252-4 Input Devices 26Keyboards, Button Boxes, and Dials 26Mouse Devices 26Trackballs and Spaceballs 27Joysticks 27Data Gloves 28Digitizers 28Image Scanners 29Touch Panels 29Light Pens 30Voice Systems 302-5 Hard-Copy Devices 302-6 Graphics Networks 322-7 Graphics on the Internet 322-8 Summary 333 Computer GraphicsSoftware 353-1 Coordinate Representations 363-2 Graphics Functions 373-3 Software Standards 383-4 Other Graphics Packages 393-5 Introduction to OpenGL 40Basic OpenGL Syntax 40Related Libraries 40Header Files 41Display-Window Management Using GLUT 42A Complete OpenGL Program 43Error Handling in OpenGL 473-6 Summary 484 Graphics Output Primitives 514-1 Coordinate Reference Frames 52Screen Coordinates 52Absolute and Relative Coordinate Specifications 534-2 Specifying A Two-Dimensional World-Coordinate Reference Frame in OpenGL 544-3 OpenGL Point Functions 554-4 OpenGL Line Functions 574-5 OpenGL Curve Functions 584-6 Fill-Area Primitives 594-7 Polygon Fill Areas 60Polygon Classifications 61Identifying Concave Polygons 61Splitting Concave Polygons 62Splitting a Convex Polygon into a Setof Triangles 63Inside-Outside Tests 63Polygon Tables 66Plane Equations 67Front and Back Polygon Faces 684-8 OpenGL Polygon Fill-Area Functions 704-9 OpenGL Vertex Arrays 764-10 Pixel-Array Primitives 784-11 OpenGL Pixel-Array Functions 79OpenGL Bitmap Function 79OpenGL Pixmap Function 81OpenGL Raster Operations 824-12 Character Primitives 834-13 OpenGL Character Functions 854-14 Picture Partitioning 864-15 OpenGL Display Lists 87Creating and Naming an OpenGL Display List 87Executing OpenGL Display Lists 88Deleting OpenGL Display Lists 894-16 OpenGL Display-Window Reshape Function 894-17 Summary 925 Attributes of Graphics Primitives 1055-1 OpenGL State Variables 1065-2 Color and Grayscale 106RGB Color Components 106Color Tables 107Grayscale 108Other Color Parameters 1095-3 OpenGL Color Functions 109The OpenGL RGB and RGBA Color Modes 109OpenGL Color-Index Mode 110OpenGL Color Blending 111OpenGL Color Arrays 112Other OpenGL Color Functions 1145-4 Point Attributes 1155-5 OpenGL Point-Attribute Functions 1155-6 Line Attributes 115Line Width 115Line Style 116Pen and Brush Options 1165-7 OpenGL Line-Attribute Functions 117OpenGL Line-Width Function 117OpenGL Line-Style Function 117Other OpenGL Line Effects 1195-8 Curve Attributes 1195-9 Fill-Area Attributes 120Fill Styles 120Color-Blended Fill Regions 1215-10 OpenGL Fill-Area Attribute Functions 121OpenGL Fill-Pattern Function 121OpenGL Texture and Interpolation Patterns 122OpenGL Wire-Frame Methods 123OpenGL Front-Face Function 1265-11 Character Attributes 1265-12 OpenGL Character-Attribute Functions 1295-13 OpenGL Antialiasing Functions 1295-14 OpenGL Query Functions 1305-15 OpenGL Attribute Groups 1315-16 Summary 1316 Implementation Algorithms for Graphics Primitives and Attributes 1376-1 Line-Drawing Algorithms 138Line Equations 138DDA Algorithm 139Bresenham's Line Algorithm 140Displaying Polylines 1446-2 Parallel Line Algorithms 1446-3 Setting Frame-Buffer Values 1466-4 Circle-Generating Algorithms 147Properties of Circles 147Midpoint Circle Algorithm 1496-5 Ellipse-Generating Algorithms 153Properties of Ellipses 153Midpoint Ellipse Algorithm 1546-6 Other Curves 160Conic Sections 161Polynomials and Spline Curves 1626-7 Parallel Curve Algorithms 1636-8 Pixel Addressing and Object Geometry 163Screen Grid Coordinates 164Maintaining Geometric Properties of Displayed Objects 1646-9 Attribute Implementations for Straight-Line Segments and Curves 166Line Width 166Line Style 168Pen and Brush Options 169Curve Attributes 1706-10 General Scan-Line Polygon-Fill Algorithm 1716-11 Scan-Line Fill of Convex Polygons 1756-12 Scan-Line Fill for Regions with Curved Boundaries 1766-13 Fill Methods for Areas with Irregular Boundaries 176Boundary-Fill Algorithm 176Flood-Fill Algorithm 1806-14 Implementation Methods for Fill Styles 180Fill Styles 181Color-Blended Fill Regions 1816-15 Implementation Methods for Antialiasing 183Supersampling Straight-Line Segments 184Subpixel Weighting Masks 186Area Sampling Straight-Line Segments 186Filtering Techniques 186Pixel Phasing 186Compensating for Line-Intensity Differences 187Antialiasing Area Boundaries 1886-16 Summary 1907 Two-Dimensional Geometric Transformations 1957-1 Basic Two-Dimensional Geometric Transformations 196Two-Dimensional Translation 196Two-Dimensional Rotation 198Two-Dimensional Scaling 2007-2 Matrix Representations andHomogeneous Coordinates 201Homogeneous Coordinates 202Two-Dimensional Translation Matrix 203Two-Dimensional Rotation Matrix 203Two-Dimensional Scaling Matrix 2037-3 Inverse Transformations 2047-4 Two-Dimensional Composite Transformations 204Composite Two-DimensionalTranslations 205Composite Two-Dimensional Rotations 205Composite Two-Dimensional Scalings 205General Two-Dimensional Pivot-Point Rotation 206General Two-Dimensional Fixed-Point Scaling 206General Two-Dimensional Scaling Directions 207Matrix Concatenation Properties 208General Two-Dimensional Composite Transformations and Computational Efficiency 209Two-Dimensional Rigid-Body Transformation 210Constructing Two-Dimensional Rotation Matrices 211Two-Dimensional Composite-Matrix Programming Example 2117-5 Other Two-Dimensional Transformations 216Reflection 216Shear 2187-6 Raster Methods for Geometric Transformations 2207-7 OpenGL Raster Transformations 2217-8 Transformations between Two-Dimensional Coordinate Systems 2227-9 OpenGL Functions for Two-DimensionalGeometric Transformations 224Basic OpenGL Geometric Transformations 224OpenGL Matrix Operations 2267-10 OpenGL Geometric-Transformation Programming Examples 2287-11 Summary 2298 Two-Dimensional Viewing 2338-1 The Two-Dimensional Viewing Pipeline 2348-2 The ClippingWindow 235Viewing-Coordinate Clipping Window 236World-Coordinate Clipping Window 2368-3 Normalization and Viewport Transformations 237Mapping the Clipping Window into a Normalized Viewport 237Mapping the Clipping Window into a Normalized Square 239Display of Character Strings 241Split-Screen Effects and Multiple Output Devices 2418-4 OpenGL Two-Dimensional Viewing Functions 241OpenGL Projection Mode 241GLU Clipping-Window Function 242OpenGL Viewport Function 242Creating a GLUT Display Window 243Setting the GLUT Display-Window Mode and Color 244GLUT Display-Window Identifier 244Deleting a GLUT Display Window 244Current GLUT Display Window 244Relocating and Resizing a GLUT Display Window 245Managing Multiple GLUT Display Windows 245GLUT Subwindows 246Selecting a Display-Window Screen-Cursor Shape 246Viewing Graphics Objects in a GLUT Display Window 247Executing the Application Program 247Other GLUT Functions 248OpenGL Two-Dimensional Viewing Program Example 2488-5 Clipping Algorithms 2508-6 Two-Dimensional Point Clipping 2508-7 Two-Dimensional Line Clipping 251Cohen-Sutherland Line Clipping 252Liang-Barsky Line Clipping 257Nicholl-Lee-Nicholl Line Clipping 260Line Clipping Using Nonrectangular Polygon Clip Windows 262Line Clipping Using Nonlinear Clipping-Window Boundaries 2628-8 Polygon Fill-Area Clipping 263Sutherland--Hodgman Polygon Clipping 265Weiler-Atherton Polygon Clipping 269Polygon Clipping Using Nonrectangular Polygon Clip Windows 271Polygon Clipping Using Nonlinear Clipping-Window Boundaries 2728-9 Curve Clipping 2728-10 Text Clipping 2738-11 Summary 2749 Three-Dimensional Geometric Transformations 2799-1 Three-Dimensional Translation 2809-2 Three-Dimensional Rotation 281Three-Dimensional Coordinate-Axis Rotations 282General Three-Dimensional Rotations 284Quaternion Methods for Three-Dimensional Rotations 2899-3 Three-Dimensional Scaling 2939-4 Composite Three-Dimensional Transformations 2959-5 Other Three-Dimensional Transformations 298Three-Dimensional Reflections 298Three-Dimensional Shears 2999-6 Transformations between Three-Dimensional Coordinate Systems 2999-7 Affine Transformations 3009-8 OpenGL Geometric-Transformation Functions 300OpenGL Matrix Stacks 3009-9 OpenGL Three-Dimensional Geometric-Transformation Programming Examples 3029-10 Summary 30310 Three-Dimensional Viewing 30710-1 Overview of Three-Dimensional Viewing Concepts 308Viewing a Three-Dimensional Scene 308Projections 308Depth Cueing 309Identifying Visible Lines and Surfaces 309Surface Rendering 309Exploded and Cutaway Views 309Three-Dimensional and Stereoscopic Viewing 31010-2 The Three-Dimensional Viewing Pipeline 31010-3 Three-Dimensional Viewing-Coordinate Parameters 312The View-Plane Normal Vector 312The View-Up Vector 313The uvn Viewing-Coordinate Reference Frame 313Generating Three-Dimensional Viewing Effects 31410-4 Transformation fromWorld to Viewing Coordinates 31410-5 Projection Transformations 31610-6 Orthogonal Projections 316Axonometric and Isometric Orthogonal Projections 317Orthogonal Projection Coordinates 317Clipping Window and Orthogonal-Projection View Volume 318Normalization Transformation for an Orthogonal Projection 32010-7 Oblique Parallel Projections 321Oblique Parallel Projections in Drafting and Design 322Cavalier and Cabinet Oblique Parallel Projections 323Oblique Parallel-Projection Vector 324Clipping Window and ObliqueParallel-Projection View Volume 325Oblique Parallel-Projection Transformation Matrix 325Normalization Transformation for an Oblique Parallel Projection 32610-8 Perspective Projections 327Perspective-Projection Transformation Coordinates 327Perspective-Projection Equations: Special Cases 328Vanishing Points for Perspective Projections 330Perspective-Projection View Volume 331Perspective-Projection Transformation Matrix 332Symmetric Perspective-Projection Frustum 333Oblique Perspective-Projection Frustum 335Normalized Perspective-Projection Transformation Coordinates 33810-9 The Viewport Transformation and Three- Dimensional Screen Coordinates 34110-10 OpenGL Three-Dimensional Viewing Functions 341OpenGL Viewing-Transformation Function 342OpenGL Orthogonal-Projection Function 342OpenGL Symmetric Perspective-Projection Function 344OpenGL General Perspective-Projection Function 344OpenGL Viewports and Display Windows 345OpenGL Three-Dimensional Viewing Program Example 34510-11 Three-Dimensional Clipping Algorithms 347Clipping in Three-Dimensional Homogeneous Coordinates 348Three-Dimensional Region Codes 349Three-Dimensional Point and Line Clipping 350Three-Dimensional Polygon Clipping 352Three-Dimensional Curve Clipping 353Arbitrary Clipping Planes 35310-12 OpenGL Optional Clipping Planes 355 10-13 Summary 35611 Hierarchical Modeling 35911-1 Basic Modeling Concepts 360System Representations 360Symbol Hierarchies 36111-2 Modeling Packages 36311-3 General Hierarchical Modeling Methods 363Local Coordinates 364Modeling Transformations 364Creating Hierarchical Structures 36411-4 Hierarchical Modeling Using OpenGL Display Lists 36611-5 Summary 36712 Computer Animation 36912-1 Raster Methods for Computer Animation 370Double Buffering 370Generating Animations Using Raster Operations 37112-2 Design of Animation Sequences 37212-3 Traditional Animation Techniques 37312-4 General Computer-Animation Functions 37412-5 Computer-Animation Languages 37412-6 Key-Frame Systems 375Morphing 375Simulating Accelerations 37712-7 Motion Specifications 380Direct Motion Specification 380Goal-Directed Systems 380Kinematics and Dynamics 38112-8 Character Animation 382Articulated Figure Animation 382Motion Capture 38312-9 Periodic Motions 38412-10 OpenGL Animation Procedures 38512-11 Summary 38813 Three-Dimensional Object Representations 39313-1 Polyhedra 39413-2 OpenGL Polyhedron Functions 394OpenGL Polygon Fill-Area Functions 394GLUT Regular Polyhedron Functions 394Example GLUT Polyhedron Program 39613-3 Curved Surfaces 39713-4 Quadric Surfaces 398Sphere 398Ellipsoid 398Torus 39913-5 Superquadrics 400Superellipse 400Superellipsoid 40113-6 OpenGL Quadric-Surface and Cubic-Surface Functions 401GLUT Quadric-Surface Functions 401GLUT Cubic-Surface Teapot Function 402GLU Quadric-Surface Functions 403Example Program Using GLUT and GLU Quadric-Surface Functions 40513-7 Summary 40714 Spline Representations 41114-1 Interpolation and Approximation Splines 41214-2 Parametric Continuity Conditions 41314-3 Geometric Continuity Conditions 41414-4 Spline Specifications 41514-5 Spline Surfaces 41614-6 Trimming Spline Surfaces 41614-7 Cubic-Spline Interpolation Methods 417Natural Cubic Splines 417Hermite Interpolation 418Cardinal Splines 419Kochanek-Bartels Splines 42314-8 Bezier Spline Curves 423Bezier Curve Equations 424Example Bezier Curve-Generating Program 425Properties of Bezier Curves 428Design Techniques Using Bezier Curves 429Cubic Bezier Curves 43014-9 Bezier Surfaces 43114-10 B-Spline Curves 433B-Spline Curve Equations 433Uniform Periodic B-Spline Curves 434Cubic Periodic B-Spline Curves 437Open Uniform B-Spline Curves 439Nonuniform B-Spline Curves 44014-11 B-Spline Surfaces 44214-12 Beta-Splines 442Beta-Spline Continuity Conditions 442Cubic Periodic Beta-Spline Matrix Representation 44314-13 Rational Splines 44314-14 Conversion Between Spline Representations 44514-15 Displaying Spline Curves and Surfaces 446Horner's Rule 447Forward-Difference Calculations 447Subdivision Methods 44814-16 OpenGL Approximation-Spline Functions 450OpenGL Bezier-Spline Curve Functions 450OpenGL Bezier-Spline SurfaceFunctions 453GLU B-Spline Curve Functions 455GLU B-Spline Surface Functions 457GLU Surface-Trimming Functions 45914-17 Summary 46115 Other Three-Dimensional Object Representations 46715-1 Blobby Objects 46815-2 Sweep Representations 46915-3 Constructive Solid-Geometry Methods 47015-4 Octrees 47215-5 BSP Trees 47415-6 Physically Based Modeling 47515-7 Summary 47616 Visible-Surface Detection Methods 47916-1 Classification of Visible-Surface Detection Algorithms 48016-2 Back-Face Detection 48016-3 Depth-Buffer Method 48116-4 A-Buffer Method 48416-5 Scan-Line Method 48616-6 Depth-Sorting Method 48716-7 BSP-Tree Method 49016-8 Area-Subdivision Method 49116-9 Octree Methods 49316-10 Ray-Casting Method 49416-11 Comparison of Visibility-Detection Methods 49516-12 Curved Surfaces 496Curved-Surface Representations 496Surface Contour Plots 49616-13 Wire-Frame Visibility Methods 497Wire-Frame Surface-Visibility Algorithms 497Wire-Frame Depth-Cueing Algorithm 49816-14 OpenGL Visibility-Detection Functions 499OpenGL Polygon-Culling Functions 499OpenGL Depth-Buffer Functions 499OpenGL Wire-Frame Surface-Visibility Methods 501OpenGL Depth-Cueing Function 50116-15 Summary 50217 Illumination Models and Surface-Rendering Methods 50717-1 Light Sources 508Point Light Sources 509Infinitely Distant Light Sources 509Radial Intensity Attenuation 509Directional Light Sources and Spotlight Effects 510Angular Intensity Attenuation 511Extended Light Sources and the Warn Model 51217-2 Surface Lighting Effects 51217-3 Basic Illumination Models 513Ambient Light 513Diffuse Reflection 514Specular Reflection and the Phong Model 516Combined Diffuse and SpecularReflections 519Diffuse and Specular Reflections from Multiple Light Sources 519Surface Light Emissions 519Basic Illumination Model with Intensity Attenuation and Spotlights 520RGB Color Considerations 521Other Color Representations 522Luminance 52217-4 Transparent Surfaces 522Translucent Materials 523Light Refraction 523Basic Transparency Model 52417-5 Atmospheric Effects 52517-6 Shadows 52617-7 Camera Parameters 52617-8 Displaying Light Intensities 526Distributing System Intensity Levels 527Gamma Correction and Video Lookup Tables 528Displaying Continuous-Tone Images 52917-9 Halftone Patterns and Dithering Techniques 529Halftone Approximations 531Dithering Techniques 53317-10 Polygon Rendering Methods 535Constant-Intensity Surface Rendering 536Gouraud Surface Rendering 536Phong Surface Rendering 538Fast Phong Surface Rendering 53917-11 OpenGL Illumination and Surface-Rendering Functions 540OpenGL Point Light-Source Function 540Specifying an OpenGL Light-Source Position and Type 541Specifying OpenGL Light-Source Colors 542Specifying Radial-Intensity Attenuation Coefficients for an OpenGL Light Source 543OpenGL Directional Light Sources (Spotlights) 543OpenGL Global Lighting Parameters 544OpenGL Surface-Property Function 545OpenGL Illumination Model 546OpenGL Atmospheric Effects 547OpenGL Transparency Functions 548OpenGL Surface-Rendering Functions 549OpenGL Halftoning Operations 55017-12 Summary 55118 Texturing and Surface-Detail Methods 55518-1 Modeling Surface Detail with Polygons 55618-2 Texture Mapping 556Linear Texture Patterns 557Surface Texture Patterns 557Volume Texture Patterns 560Texture Reduction Patterns 561Procedural Texturing Methods 56118-3 Bump Mapping 56118-4 Frame Mapping 56218-5 OpenGL Texture Functions 563OpenGL Line-Texture Functions 563OpenGL Surface-Texture Functions 566OpenGL Volume-Texture Functions 568OpenGL Color Options for Texture Patterns 568OpenGL Texture-Mapping Options 569OpenGL Texture Wrapping 569Copying OpenGL Texture Patterns from the Frame Buffer 570OpenGL Texture-Coordinate Arrays 570Naming OpenGL Texture Patterns 570OpenGL Texture Subpatterns 572OpenGL Texture Reduction Patterns 572OpenGL Texture Borders 573OpenGL Proxy Textures 573Automatic Texturing of Quadric Surfaces 574Homogeneous Texture Coordinates 574Additional OpenGL Texture Options 57518-6 Summary 575 19 Color Models and Color Applications 57919-1 Properties of Light 580The Electromagnetic Spectrum 580Psychological Characteristics of Color 58119-2 Color Models 582Primary Colors 582Intuitive Color Concepts 58319-3 Standard Primaries and the Chromaticity Diagram 583The XYZ Color Model 584Normalized XYZ Values 584The CIE Chromaticity Diagram 585Color Gamuts 585Complementary Colors 585Dominant Wavelength 586Purity 58619-4 The RGB Color Model 58619-5 The YIQ and Related Color Models 588The YIQ Parameters 588Transformations Between RGB and YIQ Color Spaces 588The YUV and YCrCb Systems 58919-6 The CMY and CMYK Color Models 589The CMY Parameters 589Transformations Between CMY and RGB Color Spaces 59019-7 The HSV Color Model 590The HSV Parameters 590Selecting Shades, Tints, and Tones 591Transformations Between HSV and RGB Color Spaces 59219-8 The HLS Color Model 59419-9 Color Selection and Applications 59519-10 Summary 59520 Interactive Input Methods and Graphical User Interfaces 59920-1 Graphical Input Data 60020-2 Logical Classification of Input Devices 600Locator Devices 600Stroke Devices 601String Devices 601Valuator Devices 601Choice Devices 601Pick Devices 60220-3 Input Functions for Graphical Data 603Input Modes 604Echo Feedback 604Callback Functions 60420-4 Interactive Picture-Construction Techniques 605Basic Positioning Methods 605Dragging 605Constraints 605Grids 606Rubber-Band Methods 606Gravity Field 607Interactive Painting and Drawing Methods 60720-5 Virtual-Reality Environments 60820-6 OpenGL Interactive Input-Device Functions 608GLUT Mouse Functions 609GLUT Keyboard Functions 613GLUT Tablet Functions 617GLUT Spaceball Functions 618GLUT Button-Box Function 618GLUT Dials Function 618OpenGL Picking Operations 61920-7 OpenGL Menu Functions 624Creating a GLUT Menu 624Creating and Managing Multiple GLUT Menus 626Creating GLUT Submenus 627Modifying GLUT Menus 62920-8 Designing a Graphical User Interface 630The User Dialogue 630Windows and Icons 630Accommodating Multiple Skill Levels 631Consistency 631Minimizing Memorization 631Backup and Error Handling 632Feedback 63220-9 Summary 63321 Global Illumination 63921-1 Ray-Tracing Methods 640Basic Ray-Tracing Algorithm 640Ray-Surface Intersection Calculations 643Ray-Sphere Intersections 644Ray-Polyhedron Intersections 645Reducing Object-Intersection Calculations 646Space-Subdivision Methods 646Simulating Camera Focusing Effects 648Antialiased Ray Tracing 650Distributed Ray Tracing 65121-2 Radiosity Lighting Model 654Radiant-Energy Terms 654The Basic Radiosity Model 655Progressive Refinement Radiosity Method 65821-3 Environment Mapping 66021-4 Photon Mapping 66121-5 Summary 66222 Programmable Shaders 66522-1 A History of Shading Languages 666Cook's Shade Trees 666Perlin's Pixel Stream Editor 668RenderMan 66822-2 The OpenGL Pipeline 670The Fixed-Function Pipeline 670Changing the Pipeline Structure 671Vertex Shaders 672Fragment Shaders 672Geometry Shaders 672Tessellation Shaders 67222-3 The OpenGL Shading Language 673Shader Structure 673Using Shaders in OpenGL 675Basic Data Types 679Vectors 679Matrices 680Structures and Arrays 680Control Structures 681GLSL Functions 681Communicating with OpenGL 68222-4 Shader Effects 683A Phong Shader 684Texture Mapping 687Bump Mapping 68922-5 Summary 69323 Algorithmic Modeling 69523-1 Fractal-Geometry Methods 696Fractal Generation Procedures 697Classification of Fractals 697Fractal Dimension 698Geometric Construction of DeterministicSelf-Similar Fractals 700Geometric Construction of Statistically Self-Similar Fractals 703Affine Fractal-Construction Methods 704Random Midpoint-Displacement Methods 704Controlling Terrain Topography 706Self-Squaring Fractals 708Self-Inverse Fractals 71723-2 Particle Systems 71923-3 Grammar-Based Modeling Methods 72023-4 Summary 72224 Visualization of Data Sets 72524-1 Visual Representations for Scalar Fields 72624-2 Visual Representations for Vector Fields 72824-3 Visual Representations for Tensor Fields 72824-4 Visual Representations for Multivariate Data Fields 72924-5 Summary 729A Mathematics for ComputerGraphics 731A-1 Coordinate Reference Frames 731Two-Dimensional Cartesian Screen Coordinates 731Standard Two-Dimensional Cartesian Reference Frames 732Polar Coordinates in the xy Plane 732Standard Three-Dimensional Cartesian Reference Frames 733Three-Dimensional Cartesian Screen Coordinates 733Three-Dimensional Curvilinear-Coordinate Systems 734Solid Angle 735A-2 Points and Vectors 735Point Properties 735Vector Properties 736Vector Addition and Scalar Multiplication 737Scalar Product of Two Vectors 738Vector Product of Two Vectors 738A-3 Tensors 739A-4 Basis Vectors and the Metric Tensor 739Determining Basis Vectors for a Coordinate Space 740Orthonormal Basis 740Metric Tensor 741A-5 Matrices 742Scalar Multiplication and Matrix Addition 742Matrix Multiplication 743Matrix Transpose 744Determinant of a Matrix 744Matrix Inverse 744A-6 Complex Numbers 745Basic Complex Arithmetic 745Imaginary Unit 746Complex Conjugate and Modulus of a Complex Number 746Complex Division 746Polar-Coordinate Representation for a Complex Number 747A-7 Quaternions 747A-8 Nonparametric Representations 748A-9 Parametric Representations 749A-10 Rate-of-Change Operators 750Gradient Operator 750Directional Derivative 751General Form of the Gradient Operator 751Laplace Operator 751Divergence Operator 752Curl Operator 752A-11 Rate-of-Change Integral Transformation Theorems 752Stokes's Theorem 753Green's Theorem for a Plane Surface 753Divergence Theorem 754Green's Transformation Equations 755A-12 Area and Centroid of a Polygon 755Area of a Polygon 755Centroid of a Polygon 756A-13 Calculating Properties of Polyhedra 757A-14 Numerical Methods 758Solving Sets of Linear Equations 758Finding Roots of Nonlinear Equations 760Evaluating Integrals 761Solving Ordinary Differential Equations 763Solving Partial Differential Equations 764Least-Squares Curve-Fitting Methods for Data Sets 765B Graphics File Formats 767B-1 Image-File Configurations 767B-2 Color-Reduction Methods 768Uniform Color Reduction 768Popularity Color Reduction 768Median-Cut Color Reduction 769B-3 File-Compression Techniques 769Run-Length Encoding 770LZW Encoding 770Other Pattern-Recognition Compression Methods 771Huffman Encoding 771Arithmetic Encoding 773Discrete Cosine Transform 774B-4 Composition of the Major File Formats 776JPEG: Joint Photographic Experts Group 776CGM: Computer-Graphics Metafile Format 778TIFF: Tag Image-File Format 778PNG: Portable Network-Graphics Format 779XBM: X Window System Bitmap Format and XPM: X Window System Pixmap Format 779Adobe Photoshop Format 779MacPaint: Macintosh Paint Format 780PICT: Picture Data Format 780BMP: Bitmap Format 780PCX: PC Paintbrush File Format 780TGA: Truevision Graphics-Adapter Format 780GIF: Graphics Interchange Format 781B-5 Summary 781C The World of OpenGL 783C-1 The Evolution of OpenGL 783The Early Years: OpenGL 1.x 784OpenGL Goes Tiny: OpenGL ES 1.x 785 Under New Management: OpenGL and Khronos Group 786Programmable Everything: OpenGL 2.x 786 Tiny Programs: OpenGL ES 2.x 787Geometry and Vertex Processing Evolution: OpenGL 3.x 787This Generation: OpenGL 4.x 789The OpenGL Extension Mechanism 790Where Next? 791C-2 OpenGL beyond C and C++ 792OpenGL for Java 792Multithreading 795Python and OpenGL 798Conclusions and Directions 803C-3 GPU Architecture, Past, Present, and Future 803The Early Days 804The Middle Ages 805Modern GPUs 806Parallelism 806Getting the Most out of a Modern GPU 810Balance the Workload 810Always Move Forwards 811Feed the Pipeline 811Make Best Use of Your Resources 811Bibliography 813Index 825OpenGL Function Index 859Core Library Functions 859GLSL Library Functions 860GLU Library Functions 861GLUT Library Functions 861
show more

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
show more

About Donald D. Hearn

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.
show more

Rating details

118 ratings
3.73 out of 5 stars
5 37% (44)
4 25% (29)
3 20% (24)
2 10% (12)
1 8% (9)
Book ratings by Goodreads
Goodreads is the world's largest site for readers with over 50 million reviews. We're featuring millions of their reader ratings on our book pages to help you find your new favourite book. Close X