Vector Calculus


Vector calculus is one of the most useful branches of mathematics for game development. You could say it is the most important if you're willing to play it slightly fast and loose with definitions and include in it the subset of low-dimensional linear algebra that vector calculus relies on for a lot of its computation. Certainly for physics and any advanced graphics, it's vitally important. It's also beautiful and cool, and a lot of fun to work with and apply to solving problems.

For my purposes, vector calculus is the study of how scalars and vectors change in space and time, which sounds a lot like video games to me.

Eventually I will collect more of my writing and thoughts on vector calculus here, including the most useful techniques for solving problems from my experience. In the meantime...


At the 2005 Game Developers Conference, I gave a lecture originally titled Why You Should Have Paid Attention in Vector Calculus, and then retitled Neat Stuff from Vector Calculus & Related Subjects. I think this was one of my weaker lectures of the past 10 years because I was really destroyed by the Indie Game Jam that year, and I was incredibly rushed creating the slides, but there's still a bunch of interesting stuff in the presentation. Highlights include:

  • a cool proof (from Goldstein) that infinitessimal rotations are vectors (so they commute, unlike finite rotations),
  • a big section on the shape of various scalar, vector, and matrix derivative operations, which is absolutely key to keep straight if you're going to solve real problems (and this stuff also points out why you should always use column vectors),
  • a derivation to show why a surface normal is not a vector, it's a differential (or row vector, or form, or gradient, or covariant tensor, etc.), and
  • a shape-based derivation of the product rule for scalar and vector functions (which I had incorrectly titled the chain rule on the original slides—thanks to Mahk Leblanc for pointing out this mistake).

Without further ado...

This page was last edited on 29 February 2008, at 01:23.