I feel vaguely like I'm in a twilight zone episode. You know, like the ones
where some guy wakes up and finds that all the lettering is backwards and
everyone is left-handed.
Someone was telling me that OpenGL allows only post-concatenation of matrices.
This seemed bass-ackwards, and after a few minutes reconfirming in my slow
turtle brain that you'd normally want pre-concatenation of matrices, I read
over the OpenGL manual page carefully. Aha, they store matrices in
a0 a4 a8 a12 a typical 1 0 0 -2
a1 a5 a9 a13 translation 0 1 0 5
a2 a6 a10 a14 matrix --> 0 0 1 3
a3 a7 a11 a15 0 0 0 1
Me, I learned on my pappy's knee (well, actually, through Newman & Sproull) to
use row major matrices. Up until today using column major matrices never
crossed my mind. Anywell, ideas like "we only post-concatenate column major
matrices" translates into "we only pre-concatenate row major matrices".
Lovely, a new way to confuse computer graphics people (as if left vs.
right-handed coordinate systems weren't bad enough). This is not a slam of
OpenGL - Phigs uses column major matrices, too!
It's admittedly a minor point, and really just a notational difference - the
matrices are just the same, of course. As long as you get the matrix elements
in the right order it doesn't matter to the computer. It's just writing it
down on paper and presenting it is where the difference appears.
Just out of curiosity, I looked at a few computer graphics books and whatnot
and how they presented 3D matrices.
Row Major users:
Foley & VD (1st edition), Newman & Sproull, Graphics Gems series,
Rogers books, Watt, Burger & Gillies, the Thalmanns, HP Starbase
Column Major users:
Foley & VD & F & H (2nd edition), OpenGL, Phigs (and PEX, I assume)
So Foley et al is the only book I could find that uses column-major matrices.
Weirder yet, the first edition of Foley & VD uses the row-major form, but then
the second edition goes to column-major form! Evidently this book's second
edition made quite an impression (or maybe just reflects some new teaching
methods present at the time), since both OpenGL and PEX adopted it, in
contrast with the rest of the research and academic community who (seem to)
use row-major matrices.
If you made it this far, take a minute and hit that "r" key and let me know
which form (if either) you prefer, where you learned it, and any other
insights you might have. I'm interested to see if there's any correlation
with school, or age, or whatever. I'll summarize to the net.
Thanks, and not that I'm biased or anything, but * and death to all