E-Book, Englisch, 336 Seiten
Blinn Jim Blinn's Corner: Notation, Notation, Notation
1. Auflage 2002
ISBN: 978-0-08-050960-0
Verlag: Elsevier Science & Techn.
Format: EPUB
Kopierschutz: 6 - ePub Watermark
E-Book, Englisch, 336 Seiten
ISBN: 978-0-08-050960-0
Verlag: Elsevier Science & Techn.
Format: EPUB
Kopierschutz: 6 - ePub Watermark
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.
Highlights
- 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.
*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.
Autoren/Hrsg.
Weitere Infos & Material
1;Front Cover;1
2;Jim Blinn's Corner: Notation, Notation, Notation;4
3;Copyright Page;5
4;Contents;6
5;Preface;8
6;Chapter Zero. Notation;10
7;Chapter One. How to Draw a Sphere Part I, Basic Math;16
8;Chapter Two. How to Draw a Sphere Part II, Coordinate Systems;32
9;Chapter Three. How to Draw a Sphere Part III, The Hyperbolic Horizon;50
10;Chapter Four. The Truth about Texture Mapping;68
11;Chapter Five. Consider the Lowly 2 × 2 Matrix;78
12;Chapter Six. Calculating Screen Coverage ;106
13;Chapter Seven. Fugue for MMX;116
14;Chapter Eight. Floating-PointTricks;132
15;Chapter Nine. A Ghost in a Snowstorm;142
16;Chapter Ten. W Pleasure, W Fun;156
17;Chapter Eleven. Ten More Unsolved Problems in Computer Graphics;168
18;Chapter Twelve. The Cross Ratio;178
19;Chapter Thirteen. Inferring Transforms;188
20;Chapter Fourteen. How Many Different Rational Parametric Cubic Curves Are There? Part I, Inflection Points;204
21;Chapter Fifteen. How Many Different Rational Parametric Cubic Curves Are There? Part II, The "Same" Game;216
22;Chapter Sixteen. How Many Different Rational Parametric Cubic Curves Are There? Part III, The Catalog;228
23;Chapter Seventeen. A Bright, Shiny Future;240
24;Chapter Eighteen. Optimizing C + + Vector Expressions;246
25;Chapter Nineteen. Polynomial Discriminants Part I, Matrix Magic;264
26;Chapter Twenty. Polynomial Discriminants Part II, Tensor Diagrams;278
27;Chapter Twenty-One. Tensor Contraction in C+ +;302
28;Appendix;320
29;Index;324
30;About the Author;337
31;Color Plates;338
Chapter Zero Notation
April 2002
A common thread running through the original articles that became this book is experimentation with mathematical notation. You might think mathematical notation would be the most consistent and systematic form of representation possible. You'd be wrong! Mathematics is a natural language, made up by humans, and contains just as many inconsistencies and arbitrary rules as any other natural language. In this chapter, I want to begin by making a few observations on this language, and to explain some of the conventions I use in this book. Mathematical Symbols
When someone says “Consider the x, y, z values,” you immediately think they are talking about 3D coordinates. When someone says “the quantity ,” you usually guess that they are talking about an angle. When someone writes P0+(1-a)P1, it is likely that they are interpolating two points. Whenever you write a mathematical expression, there is often a lot of subtle and unstated meaning packed into the symbols you use. Let's take a brief look at some of the choices we have in building up a mathematical symbol and the meanings these choices imply. The Base Symbol
The first choice we make is which letter to use for the base symbol. The alphabetic position of the letter is our first opportunity to pack extra information into the symbol. Coordinates of points usually come from the end of the alphabet (x, y, z). We use the beginning of the alphabet for polynomial coefficients (ax2 + bx + c) or for the coordinates of lines and planes (ax + by + cz + dw). Subscript indices come from the middle of the alphabet (Pi, Qjkl). Texture coordinates are often from the end of the middle (u, v), (s, t). Foreign language fonts give us a whole raft of new choices, each with their own conventional usage pattern. We use Greek letters for angles ?,?) for blending ratios a) and for some physical constants like display intensity functions V?) (see Chapter 9). And, of course, there are constants like p. We use epsilon e) to represent a small quantity and delta d) to represent a change in a quantity. We also use epsilon and delta to represent certain constant matrices (see Chapter 20). Other language fonts such as Fractur, Hebrew, Cyrillic, and various script fonts and double line fonts are typically used to represent various types of sets. Once you've chosen a letter, you still have some choices as to how it is drawn. It's typical to use italics for scalar quantities (a, b, x, y) and boldface for vector and matrix quantities (pT.) And, as this last example shows, to use lowercase for vectors and uppercase for matrices. You can also use case to pack yet another bit of meaning into a symbol, something I call the “variation-on-a-theme principle.” Suppose you have two quantities that are related in some way. To emphasize this similarity, it's useful to have their symbols be (nearly) the same but to have some other property (like case) that distinguishes them. For example, I use case to distinguish between homogeneous (x, y, w) vs. nonhomogeneous (X, Y) coordinates of the same point, or 2D vs. 3D versions of a polynomial (see Chapter 20) or covariant vs. contravariant components of a tensor (see Chapter 20 again). Accessories
Once we've gotten our base letter, it's time to trick it out with chrome sidewalls and fuzzy dice to add even more information. And often these attachments can have more than one meaning. Subscript A subscript is most often used to index elements of a vector p = (p0, p1, p2) or a matrix M1,2. (In the notation of Chapter 20, these would be contravariant indices.) Sometimes, though, a subscript represents a partial derivative x=?F/?x. And sometimes a subscript is just a name extender to distinguish between different variations on a particular base variable, such as xmin,xmax), or between elements of some unordered collection such as a,pb,pc. I have also used subscripts to indicate which coordinate system a point is in or which systems a matrix transforms between: pe = pdTde. Superscript A superscript usually means exponentiation ax3+bx2). Sometimes, however, we use a superscript as a placeholder for another type of index, a covariant index p0p1p2]. This distinguishes them from contravariant indices, which are written as subscripts. Often you can tell the meaning of a superscript by context: exponentiated variables are usually added to other exponentiated variables, while variables with contravariant indices are usually multiplied by variables with covariant indices pipjQij). Hopefully, authors will warn you if the usage is at all ambiguous. Other types of adornments look a bit like superscripts but really aren't. They can indicate some sort of function operating on the base symbol: Tis the transpose of the matrix ;Q* is the adjoint of the matrix Q. (Older notations use Q† for adjoint and * for complex conjugate.) Various numbers of primes F',F?,F?,FIV) often mean various orders of derivatives of the base symbol. But… sometimes a prime is just a prime; it's just another type of name extender to indicate another variation of the base symbol. For example, a transformed version of p could be written p'. Overhead Other adornments can appear over the symbol. Again, these can indicate some function of the base symbol (¯ means the complex conjugate of z, ^ means a normalized version of the vector v, and various numbers of dots—.,x..,x…—can again mean various numbers of derivatives of x). They can be a sort of type declaration (an arrow, ? means that v is a vector), or they can again be simple name extenders. I often use ¯,x~,x^ as variations on the theme of x. Underfoot Similar sorts of attire can appear underneath the symbol. I don't happen to use this much myself. A Standard Notation
Wouldn't it be nice if we could establish completely consistent rules for the meanings of all these choices? Wouldn't it be nice. The problem is that it's almost impossible to have a completely consistent notation that applies to all of mathematics. There just aren't enough squiggles to represent everything uniquely. And it's actually not even desirable. In different contexts, different properties are important and need to be emphasized. You want to use the adornment that is the most visually obvious to indicate the property that is most important intellectually. About all you can do is to tell readers explicitly what the add-ons mean. Computer Languages
The introduction of computer programming languages adds an interesting set of constraints and freedoms to mathematical notation. Most importantly, it is still inconvenient for variable names to have all the attachments we have just described. We make up for it by using multiple-letter variable names. Variable Names
Just as in biology, the most popular operation in mathematics is multiplication. It's so popular that it has many notational variants. You can say ×b,a·b,(a,b), or you can simply write the two symbols to be multiplied next to each other, ab. This minimalist notation raises the specter of ambiguity unless we insist that all mathematical symbols consist of only one letter (but possibly decorated extremely nicely). Computer programming languages, though, have more positional precision with their characters so they afford the possibility of multiple character variable names without problems. This does, however, raise a translation issue between the typical mathematical way of writing something and a programming language–friendly version. You will see in this book various examples of this where the translation should be fairly apparent. Mathematical notations that are just used as name extenders translate easily: X~=XtildeXmin=XminP1=P1 Subscripts used as indices translate into 1=P[1] and annotations that imply functions are written T=M.Transpose()A-1=A.Inverse()Q*=Q.Adjoint() Indexing
Another bit of culture clash between conventional mathematics notation and computer programming is the starting index for vector/matrix elements. Mathematicians start counting with 1: =[v1v2v3] Computer scientists start counting with 0: Vector3 v; v[0] = 1; v[1]=42.; v[2]=sqrt(5); It is sometimes possible to diddle the compiler into starting the indexing at 1,...