A curiosity journal of math, physics, programming, astronomy, and more.

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

Start 3 By 3 Determinant 1st Row 1st Column x 1 2nd Column y 1 3rd Column 1 2nd Row 1st Column x 2 2nd Column y 2 3rd Column 1 3rd Row 1st Column x 3 2nd Column y 3 3rd Column 1 EndDeterminant equals 0

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:

Start 3 By 3 Determinant 1st Row 1st Column log r 2nd Column 0 3rd Column 1 2nd Row 1st Column log t 2nd Column 1 3rd Column 0 3rd Row 1st Column log d 2nd Column 1 3rd Column 1 EndDeterminant equals 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:

Start 3 By 3 Determinant 1st Row 1st Column log r 2nd Column 0 3rd Column 1 2nd Row 1st Column log t 2nd Column 1 3rd Column 0 3rd Row 1st Column log d 2nd Column 1 3rd Column 1 EndDeterminant equals Start 3 By 3 Determinant 1st Row 1st Column log r 2nd Column 0 3rd Column 1 2nd Row 1st Column log t 2nd Column 1 3rd Column 1 3rd Row 1st Column log d 2nd Column 1 3rd Column 2 EndDeterminant equals Start 3 By 3 Determinant 1st Row 1st Column log r 2nd Column 0 3rd Column 1 2nd Row 1st Column log t 2nd Column 1 3rd Column 1 3rd Row 1st Column one half log d 2nd Column one half 3rd Column 1 EndDeterminant

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:

Start 3 By 3 Determinant 1st Row 1st Column 0 2nd Column log r 3rd Column 1 2nd Row 1st Column 1 2nd Column log t 3rd Column 1 3rd Row 1st Column one half 2nd Column one half log d 3rd Column 1 EndDeterminant

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
A nomogram of rate, time, and distance.

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.

(0,0)(1,0)(0,2)(0,1.5)(4,0)
Finding the point we want to project to infinity.

The equations for projecting are

StartLayout 1st Row 1st Column x prime Subscript n 2nd Column equals StartFraction z Subscript p Baseline x Subscript n Baseline Over x Subscript n Baseline minus x Subscript p Baseline EndFraction 2nd Row 1st Column y prime Subscript n 2nd Column equals StartFraction x Subscript n Baseline y Subscript p Baseline minus x Subscript p Baseline y Subscript n Baseline Over x Subscript n Baseline minus x Subscript p Baseline EndFraction EndLayout

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):

StartLayout 1st Row 1st Column 0 2nd Column equals StartFraction 1 y Subscript p Baseline minus 4 dot 0 Over 1 minus 4 EndFraction 2nd Row 1st Column 0 2nd Column equals y Subscript p EndLayout

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

StartLayout 1st Row 1st Column 1 2nd Column equals StartFraction z Subscript p Baseline dot 1 Over 1 minus 4 EndFraction 2nd Row 1st Column negative 3 2nd Column equals z Subscript p EndLayout

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

StartLayout 1st Row 1st Column x prime Subscript n 2nd Column equals StartFraction minus 3 x Subscript n Baseline Over x Subscript n Baseline minus 4 EndFraction 2nd Row 1st Column y prime Subscript n 2nd Column equals StartFraction x Subscript n Baseline 0 minus 4 y Subscript n Baseline Over x Subscript n Baseline minus 4 EndFraction equals StartFraction minus 4 y Subscript n Baseline Over x Subscript n Baseline minus 4 EndFraction EndLayout

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

Start 3 By 3 Determinant 1st Row 1st Column 0 2nd Column log r 3rd Column 1 2nd Row 1st Column 1 2nd Column log t 3rd Column 1 3rd Row 1st Column one half 2nd Column one half log d 3rd Column 1 EndDeterminant right-arrow Start 3 By 3 Determinant 1st Row 1st Column 0 2nd Column StartFraction minus 4 log r Over negative 4 EndFraction 3rd Column 1 2nd Row 1st Column StartFraction negative 3 Over negative 3 EndFraction 2nd Column StartFraction minus 4 log t Over negative 3 EndFraction 3rd Column 1 3rd Row 1st Column StartFraction negative three halves Over negative seven halves EndFraction 2nd Column StartFraction negative 4 dot one half log d Over negative seven halves EndFraction 3rd Column 1 EndDeterminant right-arrow Start 3 By 3 Determinant 1st Row 1st Column 0 2nd Column log r 3rd Column 1 2nd Row 1st Column 1 2nd Column four thirds log t 3rd Column 1 3rd Row 1st Column three sevenths 2nd Column four sevenths log d 3rd Column 1 EndDeterminant

Which produces this nomogram:

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
The same nomogram after applying a projection transformation to better align the axes.

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.