Book Description
The third entry in the Jim Blinn's Corner series, this is, like the others, a handy compilation of selected installments of his influential column. But here, for the first time, you get the "Director's Cut" of the articles: revised, expanded, and enhanced versions of the originals. What's changed? Improved mathematical notation, more diagrams, new solutions. What remains the same? All the things you've come to rely on: straight answers, irreverent style, and innovative thinking. This is Jim Blinn at his best - now even better.- Features 21 expanded and updated installments of "Jim Blinn's Corner," dating from 1995 to 2001, and never before published in book form
- Includes "deleted scenes"—tangential explorations that didn't make it into the original columns
- Details how Blinn represented planets in his famous JPL flyby animations
- Explores a wide variety of other topics, from the concrete to the theoretical: assembly language optimization for parallel processors, exotic usage of C++ template instantiation, algebraic geometry, a graphical notation for tensor contraction, and his hopes for a future world
Table of Contents
- Cover image
- Title page
- Table of Contents
- Copyright page
- Preface
- Acknowledgments
- Color Plates
- Chapter Zero: Notation: April 2002
- Mathematical Symbols
- Computer Languages
- Chapter One: How to Draw a Sphere Part I, Basic Math: January 1995
- Mathematical Context
- The Goal
- Second-Order Curves
- Second-Order Surfaces
- Summary
- Chapter Two: How to Draw a Sphere Part II, Coordinate Systems: March 1995
- Coordinate Systems
- Naming Conventions
- Code and Indexing Conventions
- The Basic Algorithm
- Why Space Is Scary
- Optimizing the Depth Transformation
- Milking the Perspective Transformation
- Another Use for Shearing
- The Result
- Chapter Three: How to Draw a Sphere Part III, The Hyperbolic Horizon: September 1995
- Our Story So Far
- My Goal
- Gross Clipping
- Inside the Renderin? Loop
- Range Calculations
- The Rendering Loop
- Results
- The Hyperbolic Horizon
- Saturn Returns (Mostly)
- Saturn Returns (Always)
- Summary
- Chapter Four: The Truth About Texture Mapping: March 1990
- A Trip to the Planets
- Virtual Memory
- There's a Problem with Uranus
- Tiles
- Address Generation
- Some Analysis
- Other Ideas
- Chapter Five: Consider the Lowly 2 × 2 Matrix: March 1996
- Our Friend
- Basic Stuff
- Eigen Stuff
- Definite Stuff
- A New Orientation
- A New Formulation
- Singular Value Decomposition
- Summary of Invariants
- Visualizations
- Square Root of a Matrix
- Musings
- Chapter Six: Calculating Screen Coverage: May 1996
- Review of Clip Culling
- The Screen Extent
- Putting It Together
- Caveat
- Another Caveat
- Summary
- Chapter Seven: Fugue for MMX: MARCH-APRIL 1997
- The Problem
- 8-Bit Arithmetic
- The MMX Implementation
- The Base Code
- Squeezing Out the Air
- Not So Fast
- Observation
- Chapter Eight: Floating-Point Tricks: July–August 1997
- IEEE Floating-Point Representation
- Opening the Box
- Other Functions
- Errors and Refinements
- Conclusion
- Chapter Nine: A Ghost in a Snowstorm: January-February 1998
- Compositing
- Display Gamma
- Linear/Nonlinear Notation
- The Good, the Bad, the Ugly
- Scenarios
- Error Analysis
- Scenario 1: (f,a) over b
- Scenario 2: (f,a) over b
- Scenario 3: (f,a) over b
- Scenario 4: (g,a) over b
- What Do We Do about This?
- Chapter Ten: W Pleasure, W Fun: May – June 1998
- Mathematical Niceties
- Traditional Perspective
- Texture Mapping
- W Buffering
- Resolution Comparisons
- Summary
- Chapter Eleven: Ten More Unsolved Problems in Computer Graphics: September-October 1998
- History
- When Is a Problem "Solved"?
- Ten more Unsolved Problems
- Get Hopping
- Chapter Twelve: The Cross Ratio: November-December 1998
- The First Ratio
- The Second Ratio
- Constancy with Changing m
- Constancy under Perspective
- Summary
- Chapter Thirteen: Inferring Transforms: May-June 1999
- Our Goal
- The Conventional Solution
- Heckbert's Improvement
- Olynyk's Improvement
- Another Interpretation
- Geometric Interpretations
- One more Thin Little mint
- Code
- Down a Dimension
- Up a Dimension
- Chapter Fourteen: How Many Different Rational Parametric Cubic Curves Are There? Part I, Inflection Points: July–August 1999
- Inflection Points
- A Useful Identity
- Up a Dimension
- Application
- Collinear Inflection Points
- The Case of the Missing Inflection Point
- Next Time
- Chapter Fifteen: How Many Different Rational Parametric Cubic Curves Are There? Part II, The “Same” Game: November-December 1999
- Definition
- “Different” Means not the Same
- The Game
- The Canonical Geometric Transform
- Inflection Points Revisited
- Back to the Game
- How Does the Game Affect D?
- Winning the Game
- Chapter Sixteen: How Many Different Rational Parametric Cubic Curves Are There? Part III, The Catalog: March-April 2000
- Our Story So Far
- Inferring Transforms
- Types of Homogeneous Cubic Polynomials
- Generating the Catalog
- Chapter Seventeen: A Bright, Shiny Future: January 2000
- What Will Probably Happen
- What Do I Want to Happen?
- Why Do I Want Thh to Happen?
- A Guarantee
- Chapter Eighteen: Optimizing C++ Vector Expressions: July-August 2000
- The Goal
- The Basic Vector Class
- Version 1a: The Recommended Arithmetic Operators
- Testing
- Version 1b; Explicit Binary Operators
- Version 2: Returning a Sum Object
- Version 3: Virtual Functions
- Similarity between Virtual Functions and Templates
- Version 4a: Expression Templates
- Version 4b: Expression Template with Copying
- Version 4c: Expression Templates with Only Vector References
- Summary
- Chapter Nineteen: Polynomial Discriminants Part I, Matrix Magic: November–December 2000
- Discriminants
- A Homogeneous Matrix formulation
- A Kinder, Gentler Cubic Discriminant
- Back to Our Roots
- Quartics
- Behind the Curtain
- Chapter Twenty: Polynomial Discriminants Part II, Tensor Diagrams: January–February 2001
- 2D Homogeneous Geometry
- The Problem
- 2DH Tensor Diagrams
- Homogeneous Polynomials
- A 1DH Application: Discriminants
- The Invariance of Invariants
- A2DH Application: Tangency
- A2DH Application: Discriminants
- Relationships
- Notation, Notation, Notation
- Chapter Twenty-one: Tensor Contraction in C++: March–April 2001
- The Basic Objects
- The Basic Operation
- The Epsilon Routine
- The Polynomial Object
- The Term Object
- It Works
- Examples
- How Do I Like This?
- What's next
- Appendix
- Vector3
- Matrix33
- Vector4
- Matrix44
- Index
- About the Author