1 Introducing: Computer Graphics 1
1.1 A Few Uses of Computer Graphics 1
1.2 A Brief History of Computer Graphics 6
1.2.1 Output Technology 8
1.2.2 Input Technology 11
1.2.3 Software Portability and Graphics Standards 12
1.3 The Advantages of Interactive Graphics 14
1.4 Conceptual Framework for Interactive Graphics 15
1.4.1 Application Modeling 16
1.4.2 Display of the Model 16
1.4.3 Interaction Handling 17
SUMMARY 18
Exercises 19
2 Programming in the Simple Raster
Graphics Package (SRGP) 21
2.1 Drawing with SRGP 22
2.1.1 Specification of Graphics Primitives 22
2.1.2 Attributes 27
2.1.3 Filled Primitives and Their Attributes 29
2.1.4 Saving and Restoring Attributes 33
2.1.5 Text 33
2.2 Basic Interaction Handling 36
2.2.1 Human Factors 36
2.2.2 Logical Input Devices 37
2.2.3 Sampling Versus Event-Driven Processing 38
2.2.4 Sample Mode 40
2.2.5 Event Mode 41
2.2.6 Pick Correlation for Interaction Handling 45
2.2.7 Setting Device Measure and Attributes 47
2.3 Raster Graphics Features 49
2.3.1 Canvases 49
2.3.2 Clipping Rectangles 52
2.3.3 The SRGP_copyPixel Operation 52
2.3.4 Write Mode or RasterOp 54
2.4 Limitations of SRGP 58
2.4.1 Application Coordinate Systems 58
2.4.2 Storage of Primitives for Respecification 59
SUMMARY 61
Exercises 62
Programming Projects 63
3 Basic Raster Graphics Algorithms for Drawing
2D Primitives 65
3.1 Overview 66
3.1.1 Implications of Display-System Architecture 66
3.1.2 The Output Pipeline in Software 69
3.2 Scan Converting Lines 70
3.2.1 The Basic Incremental Algorithm 71
3.2.2 Midpoint Line Algorithm 73
3.2.3 Additional Issues 77
3.3 Scan Converting Circles 80
3.3.1 Eight-Way Symmetry 80
3.3.2 Midpoint Circle Algorithm 81
3.4 Filling Rectangles 85
3.5 Filling Polygons 87
3.5.1 Horizontal Edges 89
3.5.2 Slivers 90
3.5.3 Edge Coherence and the Scan-Line Algorithm 90
3.6 Pattern Filling 94
3.6.1 Pattern Filling Using Scan Conversion 94
3.6.2 Pattern Filling Without Repeated Scan Conversion 95
3.7 Thick Primitives 97
3.7.1 Replicating Pixels 98
3.7.2 The Moving Pen 99
3.8 Clipping in a Raster World 100
3.9 Clipping Lines 101
3.9.1 Clipping Endpoints 102
3.9.2 Clipping Lines by Solving Simultaneous Equations 102
3.9.3 The Cohen-Sutherland Line-Clipping Algorithm 103
3.9.4 A Parametric Line-Clipping Algorithm 107
3.10 Clipping Circles 111
3.11 Clipping Polygons 112
3.11.1 The Sutherland-Hodgman Polygon-Clipping Algorithm 112
3.12 Generating Characters 116
3.12.1 Defining and Clipping Characters 116
3.12.2 Implementing a Text Output Primitive 117
3.13 SRGP_copyPixel 119
3.14 Antialiasing 119
3.14.1 Increasing Resolution 119
3.14.2 Unweighted Area Sampling 120
3.14.3 Weighted Area Sampling 122
3.15 Advanced Topics 125
SUMMARY 126
Exercises 126
4 Graphics Hardware 129
4.1 Hardcopy Technologies 130
4.2 Display Technologies 135
4.3 Raster-scan Display Systems 141
4.3.1 Simple Raster Display System 142
4.3.2 Raster Display System with Peripheral Display Processor 145
4.3.3 Additional Display-Processor Functionality 148
4.3.4 Raster Display System with Integrated Display Processor 150
4.4 The Video Controller 151
4.4.1 Video Mixing 152
4.5 Input Devices for Operator Interaction 153
4.5.1 Locator Devices 153
4.5.2 Keyboard Devices 156
4.5.3 Valuator Devices 156
4.5.4 Choice Devices 157
4.6 Image Scanners 157
Exercises 158
5 Geometrical Transformations 161
5.1 Mathematical Preliminaries 161
5.1.1 Vectors and Their Properties 162
5.1.2 The Vector Dot Product 164
5.1.3 Properties of the Dot Product 164
5.1.4 Matrices 165
5.1.5 Matrix Multiplication 165
5.1.6 Determinants 166
5.1.7 Matrix Transpose 166
5.1.8 Matrix Inverse 167
5.2 2D Transformations 168
5.3 Homogeneous Coordinates and Matrix Representation of 2D
Transformations 170
5.4 Composition of 2D Transformations 175
5.5 The Window-to-Viewport Transformation 177
5.6 Efficiency 179
5.7 Matrix Representation of 3D Transformations 180
5.8 Composition of 3D Transformations 183
5.9 Transformations as a Change in Coordinate System 187
Exercises 191
6 Viewing in 3D 193
6.1 The Synthetic Camera and Steps In 3D Viewing 193
6.2 Projections 195
6.2.1 Perspective Projections 197
6.2.2 Parallel Projections 198
6.3 Specification of an Arbitrary 3D View 201
6.4 Examples of 3D Viewing 206
6.4.1 Perspective Projections 207
6.4.2 Parallel Projections 211
6.4.3 Finite View Volumes 212
6.5 The Mathematics of Planar Geometric Projections 213
6.6 Implementation of Planar Geometric Projections 216
6.6.1 The Parallel Projection Case 217
6.6.2 The Perspective Projection Case 222
6.6.3 Clipping Against a Canonical View Volume in 3D 227
6.6.4 Clipping in Homogeneous Coordinates 229
6.6.5 Mapping into a Viewport 231
6,6.6 Implementation Summary 233
6.7 Coordinate Systems 234
Exercises 235
7 Object Hierarchy and Simple PHIGS (SPHIGS) 239
7.1 Geometric Modeling 240
7.1.1 Geometric Models 242
7.1.2 Hierarchy in Geometric Models 243
7.1.3 Relationship Among Model, Application Program, and Graphics
System 245
7.2 Characteristics of Retained-Mode Graphics Packages 247
7.2.1 Central Structure Storage and Its Advantages 247
7.2.2 Limitations of Retained-Mode Packages 248
7.3 Defining and Displaying Structures 249
7.3.1 Opening and Closing Structures 249
7.3.2 Specifying Output Primitives and Their Attributes 250
7.3.3 Posting Structures for Display Traversal 253
7.3.4 Viewing 253
7.3.5 Graphics Applications Sharing a Screen via Window
Management 256
7.4 Modeling Transformations 257
7.5 Hierarchical Structure Networks 262
7.5.1 Two-Level Hierarchy 262
7.5.2 Simple Three-Level Hierarchy 263
7.5.3 Bottom-Up Construction of the Robot 265
7.5.4 Interactive Modeling Programs 268
7.6 Matrix Composition in Display Traversal 269
7.7 Appearance-Attribute Handling in Hierarchy 273
7.7.1 Inheritance Rules 273
7.7.2 SPHIGS Attributes and Text Unaffected by
Transformations 275
7.8 Screen Updating and Rendering Modes 276
7.9 Structure Network Editing for Dynamic Effects 277
7.9.1 Accessing Elements with Indices and Labels 278
7.9.2 Intrastructure Editing Operations 278
7.9.3 Instance Blocks for Editing Convenience 279
7.9.4 Controlling Automatic Regeneration of the Screen Image 281
7.10 Interaction 282
7.10.1 Locator 282
7.10.2 Pick Correlation 282
7.11 Advanced Issues 289
7.11.1 Additional Output Features 289
7.11.2 Implementation Issues 290
7.11.3 Optimizing Display of Hierarchical Models 292
7.11.4 Limitations of Hierarchical Modeling in PHIGS 292
7.11.5 Alternative Forms of Hierarchical Modeling 293
7.11.6 Other (Industry) Standards 293
SUMMARY 294
Exercises 295
8 Input Devices, Interaction Techniques, and
Interaction Tasks 297
8.1 Interaction Hardware 298
8.1.1 Locator Devices 299
8.1.2 Keyboard Devices 300
8.1.3 Valuator Devices 300
8.1.4 Choice Devices 301
8.1.5 Other Devices 301
8.1.6 3D Interaction Devices 301
8.2 Basic Interaction Tasks 304
8.2.1 The Position Interaction Task 304
8.2.2 The Select Interaction Task--Variable-Sized Set of
Choices 305
8.2.3 The Select Interaction Task--Relatively Fixed-Sized Choice
Set 308
8.2.4 The Text Interaction Task 311
8.2.5 The Quantify Interaction Task 311
8.2.6 3D Interaction Tasks 312
8.3 Composite Interaction Tasks 314
8.3.1 Dialogue Boxes 315
8.3.2 Construction Techniques 315
8.3.3 Dynamic Manipulation 316
8.4 Interaction-Technique Toolkits 318
SUMMARY 319
Exercises 319
9 Representation of Curves and Surfaces 321
9.1 Polygon Meshes 323
9.1.1 Representing Polygon Meshes 323
9.1.2 Plane Equations 325
9.2 Parametric Cubic Curves 328
9.2.1 Basic Characteristics 329
9.2.2 Hermite Curves 332
9.2.3 Bezier Curves 336
9.2.4 Uniform Nonrational B-Splines 342
9.2.5 Nonuniform, Nonrational B-Splines 345
9.2.6 Nonuniform, Rational Cubic Polynomial Curve Segments 348
9.2.7 Fitting Curves to Digitized Points 348
9.2.8 Comparison of the Cubic Curves 349
9,3 Parametric Bicubic Surfaces 351
9.3.1 Hermite Surfaces 351
9.3.2 Bezier Surfaces 353
9.3.3 B-Spline Surfaces 354
9.3.4 Normals to Surfaces 354
9.3.5 Displaying Bicubic Surfaces 355
9.4 Quadric Surfaces 357
9.5 Specialized Modeling Techniques 358
9.5.1 Fractal Models 358
9.5.2 Grammar-Based Models 363
SUMMARY 366
Exercises 367
10 Solid Modeling 369
10.1 Representing Solids 370
10.2 Regularized Boolean Set Operations 371
10.3 Primitivelnstancing 375
10.4 Sweep Representations 376
10.5 Boundary Representations 377
10.5.1 Polyhedra and Euler's Formula 378
10.5.2 Boolean Set Operations 380
10.6 Spatial-PartitioningRepresentations 381
10.6.1 Cell Decomposition 381
10.6.2 Spatial-Occupancy Enumeration 382
10.6.3 0ctrees 383
10.6.4 Binary Space-Partitioning Trees 386
10.7 Constructive Solid Geometry 388
10.8 Comparison of Representations 390
10.9 User Interfaces for Solid Modeling 392
SUMMARY 392
Exercises 393
11 Achromatic and Colored Light 395
11.1 Achromatic Light 395
11.1.1 Selection of Intensities 396
11.1.2 Halftone Approximation 399
11.2 Chromatic Color 402
11.2.1 Psychophysics 403
11.2.2 The CIE Chromaticity Diagram 406
11.3 Color Models for Raster Graphics 410
11.3.1 The RGB Color Model 410
11.3.2 The CMY Color Model 411
11.3.3 The YIO Color Model 412
11.3.4 The HSV Color Model 413
11.3.5 Interactive Specification of Color 417
11.3.6 Interpolation in Color Space 418
11.4 Use of Color in Computer Graphics 418
SUMMARY 421
Exercises 421
12 The Quest for Visual Realism 423
12.1 Why Realism? 424
12.2 Fundamental Difficulties 425
12.3 Rendering Techniques for Line Drawings 427
12.3.1 Multiple Orthographic Views 427
12.3.2 Perspective Projections 428
12.3.3 Depth Cueing 428
12.3.4 Depth Clipping 429
12.3.5 Texture 429
12.3.6 Color 429
12.3.7 Visible-Line Determination 429
12.4 Rendering Techniques for Shaded Images 430
12.4.1 Visible-Surface Determination 430
12.4.2 Illumination and Shading 430
12.4.3 Interpolated Shading 431
12.4.4 Material Properties 431
12.4.5 Modeling Curved Surfaces 432
12.4.6 Improved Illumination and Shading 432
12.4.7 Texture 432
12.4.8 Shadows 432
12.4.9 Transparency and Reflection 432
12.4.10 Improved Camera Models 433
12.5 Improved Object Models 433
12.6 Dynamics and Animation 434
12.6.1 The Value of Motion 434
12.6.2 Animation 434
12.7 Stereopsis 437
12.8 Improved Displays 438
12.9 Interacting with Our Other Senses 438
SUMMARY 439
Exercises 440
13 Visible-Surface Determination 441
13.1 Techniques for Efficient Visible-Surface Algorithms 443
13.1.1 Coherence 443
13.1.2 The Perspective Transformation 444
13.1.3 Extents and Bounding Volumes 446
13.1.4 Back-Face Culling 448
13.1.5 Spatial Partitioning 449
13.1.6 Hierarchy 450
13.2 The z-Buffer Algorithm 451
13.3 Scan-Line Algorithms 454
13.4 Visible-Surface Ray Tracing 459
13.4.1 Computing Intersections 460
13.4.2 Efficiency Considerations for Visible-Surface Ray
Tracing 462
13.5 0therApproaches 465
13.5.1 List-PriorityAIgorithms 465
13.5.2 Area-Subdivision Algorithms 468
13.5.3 Algorithms for Curved Surfaces 471
SUMMARY 473
Exercises 474
14 Illumination and Shading 477
14.1 Illumination Models 478
14.1.1 Ambient Light 478
14.1.2 Diffuse Reflection 479
14.1.3 Atmospheric Attenuation 483
14.1.4 Specular Reflection 484
14.1.5 Improving the Point-Light-Source Model 487
14.1.6 Multiple Light Sources 488
14.1.7 Physically Based Illumination Models 489
14.2 Shading Models for Polygons 491
14.2.1 Constant Shading 492
14.2.2 Interpolated Shading 492
14.2.3 Polygon Mesh Shading 493
14.2.4 Gouraud Shading 494
14.2.5 Phong Shading 495
14.2.6 Problems with Interpolated Shading 496
14.3 Surface Detail 498
14.3.1 Surface-Detail Polygons 498
14.3.2 Texture Mapping 498
14.3.3 Bump Mapping 500
14.3.4 0therApproaches 501
14.4 Shadows 501
14.4.1 Scan-Line Generation of Shadows 502
14.4.2 Shadow Volumes 503
14.5 Transparency 505
14.5.1 Nonrefractive Transparency 505
14.5.2 Refractive Transparency 507
14.6 Global Illumination Algorithms 509
14.7 Recursive Ray Tracing 510
14.8 Radiosity Methods 514
14.8.1 The Radiosity Equation 515
14.8.2 Computing Form Factors 517
14.8.3 Progressive Refinement 519
14.9 The Rendering Pipeline 521
14.9.1 Local Illumination Pipelines 521
14.9.2 Global Illumination Pipelines 523
14.9.3 Progressive Refinement 524
SUMMARY 525
Exercises 525
Bibliography 527
Index 545