دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش: 4 نویسندگان: Donald D. Hearn, Pauline Baker, Warren Carithers سری: ISBN (شابک) : 9781292024257, 9780136053583 ناشر: Pearson سال نشر: 2014 تعداد صفحات: 819 زبان: English فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) حجم فایل: 24 مگابایت
در صورت تبدیل فایل کتاب Computer graphics with Open GL. به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب گرافیک کامپیوتری با Open GL. نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
Preface xxiAbout the Authors xxvi1 Computer Graphics Hardware 91-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 211-2 Raster-Scan Systems 22Video Controller 22Raster-Scan Display Processor 241-3 GraphicsWorkstations and Viewing Systems 251-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 301-5 Hard-Copy Devices 301-6 Graphics Networks 321-7 Graphics on the Internet 321-8 Summary 332 Computer GraphicsSoftware 352-1 Coordinate Representations 362-2 Graphics Functions 372-3 Software Standards 382-4 Other Graphics Packages 392-5 Introduction to OpenGL 40Basic OpenGL Syntax 40Related Libraries 40Header Files 41Display-Window Management Using GLUT 42A Complete OpenGL Program 43Error Handling in OpenGL 472-6 Summary 483 Graphics Output Primitives 513-1 Coordinate Reference Frames 52Screen Coordinates 52Absolute and Relative Coordinate Specifications 533-2 Specifying A Two-Dimensional World-Coordinate Reference Frame in OpenGL 543-3 OpenGL Point Functions 553-4 OpenGL Line Functions 573-5 OpenGL Curve Functions 583-6 Fill-Area Primitives 593-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 683-8 OpenGL Polygon Fill-Area Functions 703-9 OpenGL Vertex Arrays 763-10 Pixel-Array Primitives 783-11 OpenGL Pixel-Array Functions 79OpenGL Bitmap Function 79OpenGL Pixmap Function 81OpenGL Raster Operations 823-12 Character Primitives 833-13 OpenGL Character Functions 853-14 Picture Partitioning 863-15 OpenGL Display Lists 87Creating and Naming an OpenGL Display List 87Executing OpenGL Display Lists 88Deleting OpenGL Display Lists 893-16 OpenGL Display-Window Reshape Function 893-17 Summary 924 Attributes of Graphics Primitives 1054-1 OpenGL State Variables 1064-2 Color and Grayscale 106RGB Color Components 106Color Tables 107Grayscale 108Other Color Parameters 1094-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 1144-4 Point Attributes 1154-5 OpenGL Point-Attribute Functions 1154-6 Line Attributes 115Line Width 115Line Style 116Pen and Brush Options 1164-7 OpenGL Line-Attribute Functions 117OpenGL Line-Width Function 117OpenGL Line-Style Function 117Other OpenGL Line Effects 1194-8 Curve Attributes 1194-9 Fill-Area Attributes 120Fill Styles 120Color-Blended Fill Regions 1214-10 OpenGL Fill-Area Attribute Functions 121OpenGL Fill-Pattern Function 121OpenGL Texture and Interpolation Patterns 122OpenGL Wire-Frame Methods 123OpenGL Front-Face Function 1264-11 Character Attributes 1264-12 OpenGL Character-Attribute Functions 1294-13 OpenGL Antialiasing Functions 1294-14 OpenGL Query Functions 1304-15 OpenGL Attribute Groups 1314-16 Summary 1315 Implementation Algorithms for Graphics Primitives and Attributes 1375-1 Line-Drawing Algorithms 138Line Equations 138DDA Algorithm 139Bresenham\'s Line Algorithm 140Displaying Polylines 1445-2 Parallel Line Algorithms 1445-3 Setting Frame-Buffer Values 1465-4 Circle-Generating Algorithms 147Properties of Circles 147Midpoint Circle Algorithm 1495-5 Ellipse-Generating Algorithms 153Properties of Ellipses 153Midpoint Ellipse Algorithm 1545-6 Other Curves 160Conic Sections 161Polynomials and Spline Curves 1625-7 Parallel Curve Algorithms 1635-8 Pixel Addressing and Object Geometry 163Screen Grid Coordinates 164Maintaining Geometric Properties of Displayed Objects 1645-9 Attribute Implementations for Straight-Line Segments and Curves 166Line Width 166Line Style 168Pen and Brush Options 169Curve Attributes 1705-10 General Scan-Line Polygon-Fill Algorithm 1715-11 Scan-Line Fill of Convex Polygons 1755-12 Scan-Line Fill for Regions with Curved Boundaries 1765-13 Fill Methods for Areas with Irregular Boundaries 176Boundary-Fill Algorithm 176Flood-Fill Algorithm 1805-14 Implementation Methods for Fill Styles 180Fill Styles 181Color-Blended Fill Regions 1815-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 1885-16 Summary 1906 Two-Dimensional Geometric Transformations 1956-1 Basic Two-Dimensional Geometric Transformations 196Two-Dimensional Translation 196Two-Dimensional Rotation 198Two-Dimensional Scaling 2006-2 Matrix Representations andHomogeneous Coordinates 201Homogeneous Coordinates 202Two-Dimensional Translation Matrix 203Two-Dimensional Rotation Matrix 203Two-Dimensional Scaling Matrix 2036-3 Inverse Transformations 2046-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 2116-5 Other Two-Dimensional Transformations 216Reflection 216Shear 2186-6 Raster Methods for Geometric Transformations 2206-7 OpenGL Raster Transformations 2216-8 Transformations between Two-Dimensional Coordinate Systems 2226-9 OpenGL Functions for Two-DimensionalGeometric Transformations 224Basic OpenGL Geometric Transformations 224OpenGL Matrix Operations 226-10 OpenGL Geometric-Transformation Programming Examples 2286-11 Summary 2297 Two-Dimensional Viewing 2337-1 The Two-Dimensional Viewing Pipeline 2347-2 The ClippingWindow 235Viewing-Coordinate Clipping Window 236World-Coordinate Clipping Window 2367-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 2417-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 2487-5 Clipping Algorithms 2507-6 Two-Dimensional Point Clipping 2507-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 2627-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 2727-9 Curve Clipping 2727-10 Text Clipping 2737-11 Summary 2748 Three-Dimensional Geometric Transformations 2798-1 Three-Dimensional Translation 2808-2 Three-Dimensional Rotation 281Three-Dimensional Coordinate-Axis Rotations 282General Three-Dimensional Rotations 284Quaternion Methods for Three-Dimensional Rotations 2898-3 Three-Dimensional Scaling 2938-4 Composite Three-Dimensional Transformations 2958-5 Other Three-Dimensional Transformations 298Three-Dimensional Reflections 298Three-Dimensional Shears 2998-6 Transformations between Three-Dimensional Coordinate Systems 2998-7 Affine Transformations 3008-8 OpenGL Geometric-Transformation Functions 300OpenGL Matrix Stacks 3008-9 OpenGL Three-Dimensional Geometric-Transformation Programming Examples 3028-10 Summary 3039 Three-Dimensional Viewing 3079-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 3109-2 The Three-Dimensional Viewing Pipeline 3109-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 3149-4 Transformation fromWorld to Viewing Coordinates 3149-5 Projection Transformations 3169-6 Orthogonal Projections 316Axonometric and Isometric Orthogonal Projections 317Orthogonal Projection Coordinates 317Clipping Window and Orthogonal-Projection View Volume 318Normalization Transformation for an Orthogonal Projection 3209-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 3269-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 3389-9 The Viewport Transformation and Three- Dimensional Screen Coordinates 3419-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 3539-12 OpenGL Optional Clipping Planes 355 9-13 Summary 35610 Hierarchical Modeling 35910-1 Basic Modeling Concepts 360System Representations 360Symbol Hierarchies 36110-2 Modeling Packages 36310-3 General Hierarchical Modeling Methods 363Local Coordinates 364Modeling Transformations 364Creating Hierarchical Structures 36410-4 Hierarchical Modeling Using OpenGL Display Lists 36610-5 Summary 36711 Computer Animation 36911-1 Raster Methods for Computer Animation 370Double Buffering 370Generating Animations Using Raster Operations 37111-2 Design of Animation Sequences 37211-3 Traditional Animation Techniques 37311-4 General Computer-Animation Functions 37411-5 Computer-Animation Languages 37411-6 Key-Frame Systems 375Morphing 375Simulating Accelerations 37711-7 Motion Specifications 380Direct Motion Specification 380Goal-Directed Systems 380Kinematics and Dynamics 38111-8 Character Animation 382Articulated Figure Animation 382Motion Capture 38311-9 Periodic Motions 38411-10 OpenGL Animation Procedures 38511-11 Summary 38812 Three-Dimensional Object Representations 39312-1 Polyhedra 39412-2 OpenGL Polyhedron Functions 394OpenGL Polygon Fill-Area Functions 394GLUT Regular Polyhedron Functions 394Example GLUT Polyhedron Program 39612-3 Curved Surfaces 39712-4 Quadric Surfaces 398Sphere 398Ellipsoid 398Torus 39912-5 Superquadrics 400Superellipse 400Superellipsoid 40112-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 40512-7 Summary 40713 Spline Representations 41113-1 Interpolation and Approximation Splines 41213-2 Parametric Continuity Conditions 41313-3 Geometric Continuity Conditions 41413-4 Spline Specifications 41513-5 Spline Surfaces 41613-6 Trimming Spline Surfaces 41613-7 Cubic-Spline Interpolation Methods 417Natural Cubic Splines 417Hermite Interpolation 418Cardinal Splines 419Kochanek-Bartels Splines 42313-8 Bezier Spline Curves 423Bezier Curve Equations 424Example Bezier Curve-Generating Program 425Properties of Bezier Curves 428Design Techniques Using Bezier Curves 429Cubic Bezier Curves 43013-9 Bezier Surfaces 43113-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 44013-11 B-Spline Surfaces 44213-12 Beta-Splines 442Beta-Spline Continuity Conditions 442Cubic Periodic Beta-Spline Matrix Representation 44313-13 Rational Splines 44313-14 Conversion Between Spline Representations 44513-15 Displaying Spline Curves and Surfaces 446Horner\'s Rule 447Forward-Difference Calculations 447Subdivision Methods 44813-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 45913-17 Summary 46114 Visible-Surface Detection Methods 47914-1 Classification of Visible-Surface Detection Algorithms 48014-2 Back-Face Detection 48014-3 Depth-Buffer Method 48114-4 A-Buffer Method 48414-5 Scan-Line Method 48614-6 Depth-Sorting Method 48714-7 BSP-Tree Method 49014-8 Area-Subdivision Method 49114-9 Octree Methods 49314-10 Ray-Casting Method 49414-11 Comparison of Visibility-Detection Methods 49514-12 Curved Surfaces 496C5rved-Surface Representations 496Surface Contour Plots 49614-13 Wire-Frame Visibility Methods 497Wire-Frame Surface-Visibility Algorithms 497Wire-Frame Depth-Cueing Algorithm 49814-14 OpenGL Visibility-Detection Functions 499OpenGL Polygon-Culling Functions 499OpenGL Depth-Buffer Functions 499OpenGL Wire-Frame Surface-Visibility Methods 501OpenGL Depth-Cueing Function 50114-15 Summary 502 15 Illumination Models and Surface-Rendering Methods 50715-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 51215-2 Surface Lighting Effects 51215-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 52215-4 Transparent Surfaces 522Translucent Materials 523Light Refraction 523Basic Transparency Model 52415-5 Atmospheric Effects 52515-6 Shadows 52615-7 Camera Parameters 52615-8 Displaying Light Intensities 526Distributing System Intensity Levels 527Gamma Correction and Video Lookup Tables 528Displaying Continuous-Tone Images 52915-9 Halftone Patterns and Dithering Techniques 529Halftone Approximations 531Dithering Techniques 53315-10 Polygon Rendering Methods 535Constant-Intensity Surface Rendering 536Gouraud Surface Rendering 536Phong Surface Rendering 538Fast Phong Surface Rendering 53915-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 55015-12 Summary 55116 Texturing and Surface-Detail Methods 55516-1 Modeling Surface Detail with Polygons 55616-2 Texture Mapping 556Linear Texture Patterns 557Surface Texture Patterns 557Volume Texture Patterns 560Texture Reduction Patterns 561Procedural Texturing Methods 56116-3 Bump Mapping 56116-4 Frame Mapping 56216-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 57516-6 Summary 575 17 Color Models and Color Applications 57917-1 Properties of Light 580The Electromagnetic Spectrum 580Psychological Characteristics of Color 58117-2 Color Models 582Primary Colors 582Intuitive Color Concepts 58317-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 58617-4 The RGB Color Model 58617-5 The YIQ and Related Color Models 588The YIQ Parameters 588Transformations Between RGB and YIQ Color Spaces 588The YUV and YCrCb Systems 58917-6 The CMY and CMYK Color Models 589The CMY Parameters 589Transformations Between CMY and RGB Color Spaces 59017-7 The HSV Color Model 590The HSV Parameters 590Selecting Shades, Tints, and Tones 591Transformations Between HSV and RGB Color Spaces 59217-8 The HLS Color Model 59417-9 Color Selection and Applications 59517-10 Summary 59518 Interactive Input Methods and Graphical User Interfaces 59918-1 Graphical Input Data 60018-2 Logical Classification of Input Devices 600Locator Devices 600Stroke Devices 601String Devices 601Valuator Devices 601Choice Devices 601Pick Devices 60218-3 Input Functions for Graphical Data 603Input Modes 604Echo Feedback 604Callback Functions 60418-4 Interactive Picture-Construction Techniques 605Basic Positioning Methods 605Dragging 605Constraints 605Grids 606Rubber-Band Methods 606Gravity Field 607Interactive Painting and Drawing Methods 60718-5 Virtual-Reality Environments 60818-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 61918-7 OpenGL Menu Functions 624Creating a GLUT Menu 624Creating and Managing Multiple GLUT Menus 626Creating GLUT Submenus 627Modifying GLUT Menus 62918-8 Designing a Graphical User Interface 630The User Dialogue 630Windows and Icons 630Accommodating Multiple Skill Levels 631Consistency 631Minimizing Memorization 631Backup and Error Handling 632Feedback 63218-9 Summary 633 19 Global Illumination 63919-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 65119-2 Radiosity Lighting Model 654Radiant-Energy Terms 654The Basic Radiosity Model 655Progressive Refinement Radiosity Method 65819-3 Environment Mapping 66019-4 Photon Mapping 66119-5 Summary 662 20 Programmable Shaders 66520-1 A History of Shading Languages 666Cook\'s Shade Trees 666Perlin\'s Pixel Stream Editor 668RenderMan 66820-2 The OpenGL Pipeline 670The Fixed-Function Pipeline 670Changing the Pipeline Structure 671Vertex Shaders 672Fragment Shaders 672Geometry Shaders 672Tessellation Shaders 67220-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 68220-4 Shader Effects 683A Phong Shader 684Texture Mapping 687Bump Mapping 68920-5 Summary 69321 Algorithmic Modeling 69521-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 71721-2 Particle Systems 71921-3 Grammar-Based Modeling Methods 72021-4 Summary 72222 Visualization of Data Sets 72522-1 Visual Representations for Scalar Fields 72622-2 Visual Representations for Vector Fields 72822-3 Visual Representations for Tensor Fields 72822-4 Visual Representations for Multivariate Data Fields 72922-5 Summary 729 A 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-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