Издательство Morgan Kaufmann, 2003, -337 pp.
This book is the third collection of articles originally published in the IEEE Computer Graphics and Applications joual. All of these articles, of course, have something to do with computer graphics. The first four were originally written at Caltech and describe how I drew planets for the JPL flyby movies. The rest of them were written after I came to Microsoft Research and cover a pretty wide range of topics, from assembly language optimization for parallel processors (Chapter 7) through exotic usage of C++ template instantiation (Chapter 18) to theoretical mathematics (Chapter 20). There should be something in here for everyone.
The previous two collections reproduced the original columns with only a few updates and fixes. For this volume, however, I succumbed to the urge to do major surgery on many of the columns. I changed some of the mathematical notation to something I liked better. I added a lot more diagrams (as befits a graphics book). I added answers to questions that I hadn’t found when the original columns were written. So even if you’ve read the original magazine articles, go ahead and read this book. It’s a lot better. (I’m especially proud of the improvements to Chapters 5, 18, 20, and 21, if anybody wants to compare them with the originals.)
One of the things people say they like about these articles is their irreverent style. This makes them a lot more fun to read than to write. I usually suffer greatly in writing them, going through six or seven major drafts. Only after I get the exposition and mathematics right (usually involving chasing down rogue minus signs) do I make the joke pass. For the joke pass over this book I had the following idea. Have you noticed that when a movie is re-released on DVD they usually enhance it with a collection of deleted scenes and hilarious outtakes? How about setting it up so that I could advertise this book as containing deleted scenes and hilarious outtakes? This joke would only work, however, if these actually contained meaningful content instead of just fluff. I have, therefore, included some deleted scenes, stuff that was somewhat interesting but not on the main topic or some half-formed ideas that I never pursued further. But what should I do about outtakes? My model would be the wonderful fake outtakes at the end of the recent Pixar movies. I have to admit, though, that I came up a bit dry. How about And then we see that the determinant of the matrix is plus one, er no, minus one, er (dissolve into helpless laughter).Or how aboutAs we see in Figure
2.5. hey who drew the moustache on Figure 2.5? Maybe this concept doesn’t translate well to this medium. You can, though, be charitable and give me a chuckle as though I actually did it.
When looking over these columns and searching for some common theme to use as a book subtitle, I realized that one of the things that I did a lot in these columns was to experiment with mathematical notation. I have some general comments to make on this, but if you’re like me you don’t read the prefaces to books. So I put these comments into a new first chapter. Since one of the notational conventions I use is to start vector component indexing from 0, I have named this Chapter 0.
How to Draw a Sphere Part I, Basic Math
How to Draw a Sphere Part II, Coordinate Systems
How to Draw a Sphere Part III, The Hyperbolic Horizon
The Truth about Texture Mapping
Consider the Lowly 2?2 Matrix
Calculating Screen Coverage
Fugue for MMX
Floating-Point Tricks
A Ghost in a Snowstorm
WPleasure, WFun
Ten More Unsolved Problems in Computer Graphics
The Cross Ratio
Inferring Transforms
How Many Different Rational Parametric Cubic Curves Are There? Part I, Inflection Points
How Many Different Rational Parametric Cubic Curves Are There? Part II, The Same Game
How Many Different Rational Parametric Cubic Curves Are There? Part III, The Catalog
A Bright, Shiny Future
Optimizing C++ Vector Expressions
Polynomial Discriminants Part I, Matrix Magic
Polynomial Discriminants Part II, Tensor Diagrams
Tensor Contraction in C++
This book is the third collection of articles originally published in the IEEE Computer Graphics and Applications joual. All of these articles, of course, have something to do with computer graphics. The first four were originally written at Caltech and describe how I drew planets for the JPL flyby movies. The rest of them were written after I came to Microsoft Research and cover a pretty wide range of topics, from assembly language optimization for parallel processors (Chapter 7) through exotic usage of C++ template instantiation (Chapter 18) to theoretical mathematics (Chapter 20). There should be something in here for everyone.
The previous two collections reproduced the original columns with only a few updates and fixes. For this volume, however, I succumbed to the urge to do major surgery on many of the columns. I changed some of the mathematical notation to something I liked better. I added a lot more diagrams (as befits a graphics book). I added answers to questions that I hadn’t found when the original columns were written. So even if you’ve read the original magazine articles, go ahead and read this book. It’s a lot better. (I’m especially proud of the improvements to Chapters 5, 18, 20, and 21, if anybody wants to compare them with the originals.)
One of the things people say they like about these articles is their irreverent style. This makes them a lot more fun to read than to write. I usually suffer greatly in writing them, going through six or seven major drafts. Only after I get the exposition and mathematics right (usually involving chasing down rogue minus signs) do I make the joke pass. For the joke pass over this book I had the following idea. Have you noticed that when a movie is re-released on DVD they usually enhance it with a collection of deleted scenes and hilarious outtakes? How about setting it up so that I could advertise this book as containing deleted scenes and hilarious outtakes? This joke would only work, however, if these actually contained meaningful content instead of just fluff. I have, therefore, included some deleted scenes, stuff that was somewhat interesting but not on the main topic or some half-formed ideas that I never pursued further. But what should I do about outtakes? My model would be the wonderful fake outtakes at the end of the recent Pixar movies. I have to admit, though, that I came up a bit dry. How about And then we see that the determinant of the matrix is plus one, er no, minus one, er (dissolve into helpless laughter).Or how aboutAs we see in Figure
2.5. hey who drew the moustache on Figure 2.5? Maybe this concept doesn’t translate well to this medium. You can, though, be charitable and give me a chuckle as though I actually did it.
When looking over these columns and searching for some common theme to use as a book subtitle, I realized that one of the things that I did a lot in these columns was to experiment with mathematical notation. I have some general comments to make on this, but if you’re like me you don’t read the prefaces to books. So I put these comments into a new first chapter. Since one of the notational conventions I use is to start vector component indexing from 0, I have named this Chapter 0.
How to Draw a Sphere Part I, Basic Math
How to Draw a Sphere Part II, Coordinate Systems
How to Draw a Sphere Part III, The Hyperbolic Horizon
The Truth about Texture Mapping
Consider the Lowly 2?2 Matrix
Calculating Screen Coverage
Fugue for MMX
Floating-Point Tricks
A Ghost in a Snowstorm
WPleasure, WFun
Ten More Unsolved Problems in Computer Graphics
The Cross Ratio
Inferring Transforms
How Many Different Rational Parametric Cubic Curves Are There? Part I, Inflection Points
How Many Different Rational Parametric Cubic Curves Are There? Part II, The Same Game
How Many Different Rational Parametric Cubic Curves Are There? Part III, The Catalog
A Bright, Shiny Future
Optimizing C++ Vector Expressions
Polynomial Discriminants Part I, Matrix Magic
Polynomial Discriminants Part II, Tensor Diagrams
Tensor Contraction in C++