exupero's blog

Rate, time, and distance nomogram

Ron Doerfler's series on nomography has enchanted me since I first read it, as nomograms unite my interest in math and visualization with something more tactile. Nomograms generate deeper intuitions about mathematical relationships that are otherwise quite abstract, especially for children. Thus, as I anticipate a long road trip with three kids under eight, I plan to take advantage of the inevitable "When will we get there?" to teach something about rate, time, and distance, giving them a nomogram to explore the relationships for themselves. In this post I'm going to create a simple logarithmic nomogram using a 3×3 matrix. If you're not familiar with nomograms and designing them using matrix determinants, you'll find Doerfler's overview helpful.

Matrices for designing nomograms of three variables take the form

where each row describes the parametric equation for drawing the scale of one of the equation's variables. This is usually called the "standard nomographic form", and if you can convert a matrix whose determinant is zero into this form, you can use it to generate a nomogram.

While we could make a N- or Z-style nomogram out of the equation rt = d, I'm going to use logarithms instead, which relates rate, time, and distance as log(r) + log(t) = log(d). Given this logarithmic equation, we need a matrix whose determinant is log(r) + log(t) – log(d) = 0:

To convert this to standard nomographic form, we can use any determinant-preserving operations on matrices. Here we only need to add the second column to the third, then divide the third row by two:

In the standord nomographic form shown earlier, the first column expresses the x coordinates of the three scales. To get vertical scales, swap the first and second columns:

For r between 1 and 100 miles per hour, and t between 1 and 30 hours, we get a nomogram like this:

1 mph2 mph3 mph4 mph5 mph6 mph7 mph8 mph9 mph10 mph15 mph20 mph30 mph40 mph50 mph60 mph70 mph80 mph90 mph100 mph1 miles2 miles3 miles4 miles5 miles6 miles8 miles10 miles15 miles20 miles30 miles40 miles50 miles60 miles80 miles100 miles150 miles200 miles300 miles400 miles500 miles600 miles800 miles1000 miles1500 miles2000 miles3000 miles1 hours2 hours3 hours4 hours5 hours6 hours7 hours8 hours9 hours10 hours15 hours20 hours25 hours30 hours

Let's make better use of the available vertical space by squaring up the scales with each other. To do that, we can apply a projection transformation, which moves certain points off to infinity. In our case, we want to make the line formed by the top of the scales parallel with the line formed by the bottom of the scales, so we'll project their point of intersection to infinity.


The equations for projecting are

where (xp, yp, zp) is the point which defines the projection, typically imagined as a light source casting a shadow. Any point in the y-z plane of the projecting point will be projected to infinity. We want (4,0) projected to infinity, so xp = 4. We can find yp by solving the second equation for a desired projection of (1,0) to (1,0):

To find zp, we'll do the same for the first equation:

Our projection point is (4,0,-3), which gives us the transformations

Applying these to the parametric equations in our matrix above gives us

Which produces this nomogram:


One of the most useful aspects of a three-variable nomogram like this is that it doesn't care which two variables are known and which is unknown. A straight line between the two knowns will identify the unknown, so not only does this answer the question "How much longer?", but also "How far have we gone?" and "How fast would we have to drive?"

Now to print it and find some rulers for the kids.