Casual Introduction to Low-Level Graphics Programming
stephaniehurlburt.com
stephaniehurlburt.com
There are many areas of design and 3d graphics that do not involve math, but to claim that low-level graphics programming doesn't involve a lot of math is disingenuous and harmful.
>If two vectors overlap, the dot product is 1. If they are perpedicular (90 degree angle), the dot product is 0. (Note: just for vectors that only represent a direction and have length 1, you can think about varying vector lengths later)
Something is terrible incongruent (pun intended) here. How can three numbers have a length, much less length of one? I think here, the mathematical introduction that a vector is just an arrow is better here. It just so happens you can express the arrow as a set of numbers, which I admit is not obvious at first unless you've taken algebra 2. But the jump from "3 numbers" to length is confusing too.
The truth is people conflate vectors with arrays, but if you want to think deeper than anyone who does computer graphics needs to, you don't need coordinates or any group of numbers to express vectors.
What's missing is the definition of a vector: an item with direction and magnitude/length. Using the distance formula, you can determine the length of the vector. So if your vector is <5,4,3>, plug that and the origin <0,0,0> into the distance formula to get a length of 5 * sqrt(2) (approximately 7.071)
Further, you can 'normalize' the vector so that the direction is the same but the magnitude is 1. To normalize, divide each component by the length: http://www.wolframalpha.com/input/?i=%3C5%2F(5sqrt(2))%2C4%2...
This is only true for a subset of all vectors (normalized or \sum a_i b_i = 1)...
> The truth is people conflate vectors with arrays, but if you want to think deeper than anyone who does computer graphics needs to, you don't need coordinates or any group of numbers to express vectors.
I'm a math simpleton myself, but computer graphics people can and do go deeper: https://www.cs.cmu.edu/~kmcrane/Projects/DGPDEC/paper.pdf
https://github.com/melling/ComputerGraphics/blob/master/READ...
While I have no problem with people simplifying things for introduction to laymen, I think introducing falsehoods like this will do more harm than good.
One of my favorites, because it does not use any particular language and the math derivations are detailed and easy to fallow.
Fundamentals of Computer Graphics - Shirley https://www.amazon.com/Fundamentals-Computer-Graphics-Peter-...
My advice for people interested in graphics would be to jump in and get started with a tutorial on the web and then get a book or two to learn more. My recommendations would be:
Introduction To Ray Tracing - It focuses on ray tracing, but many of the topics (vectors, matrices, shading, view transforms, etc.) are applicable regardless of the actual rendering method, and it does a good job explaining all of it.
https://www.amazon.com/Introduction-Tracing-Kaufmann-Compute...
Real Time Rendering - This also covers all the math, but focuses on rendering at a higher level and covers more ground.
https://www.amazon.com/Real-Time-Rendering-Third-Tomas-Akeni...
Finally, Computer Graphics: Principles and Practice - This is a great general reference for more specific topics. It's like Real Time Rendering expanded to cover more topics and going into more depth. Not a beginner reference, but great to have when you need more information on something.
https://www.amazon.com/Computer-Graphics-Principles-Practice...
How can one introduce vectors without the word "direction"?
How can one so thoroughly screw up the introduction to illumination?
I have some problems with the post as well but the author's knowledge of graphics is not at stake here.
Thrice: inside the `content` attributes of `<meta property="og:description">`, `<meta itemprop="description">`, and `<meta name="twitter:description">`.
The `content`attribute of `<meta name="description">` is empty. A missed opportunity.
I remember extending what I learned in the series of tutorials into a tiny Windows/Android cross platform demo a few years ago to get familiar with NDK
-
-
-