Calculating the distance to the Moon
On 13th sept 2019, Pauline Acalin, a spaceflight photojournalist, posted two pictures of the Moon, taken 8.5 hours apart. Scott Manley commented “I should try measuring the distance to the Moon with this”.
That’s was more than enough to get me started to attempt to do exactly this. After months of procrastination, here is finally an article with my findings and the detailed steps to reproduce them.
The size of the Earth will be assumed to be known. In fact, it is since a long time. With this information and with the two pictures of the Moon, we are going to measure the distance to the Moon.
Let’s start with schema with the various known and unknown lengths, to get a better overview. If high school is not too far, you should quickly remember which equation can be used.
We will approximate a lot of things in order to be able to find an equation.
On this schema,
dist_earth_moon is not really the distance between the Earth and the Moon.
But it should be close enough.
The radiuses are small enough to be negligible.
In any case, once this approximated value is computed, we can always come back and make our equation more precise.
The following equation can be stated:
Earth_diff/Moon_diff = (dist_earth_moon+Moon_radius)/Moon_radius.
It can be assumed that
Moon_radius is very small compared to
dist_earth_moon, which means that
dist_earth_moon+Moon_radius ~= dist_earth_moon.
Therefore, the equation become:
Earth_diff/Moon_diff = dist_earth_moon/Moon_radius.
In this equation,
Earth_diff can be computed (with the Earth’s radius and 8.5h),
Moon_diff as well (we have two pictures to compute the displacement of a given point) and we want to compute
That leaves us with one unknown:
The trick is that
dist_earth_moon are going to be expressed in
Moon_radius can not: the pictures do not give this information.
Instead, they can be expressed in
pixels, which will cancel out, leaving us with only
Reorganizing the equation, it leads us to:
dist_earth_moon_km = Earth_diff_km*Moon_radius_pxl/Moon_diff_pxl.
Part I - counting hours and pixels
Converting hours to km:
Calculating the distance between the two pictures is simple trigonometry.
First of all, 8.5 hours is
8.5/24 * 2*pi = 2.23 radians.
Then, for the distance, we can use several equations.
E_diff = E_radius * 2*sin(2.22/2).
With an approximate value of 14 000 km given by Eratosthenes for the diameter of Earth, we find
Earth_diff = 14000/2 * 2*sin(8.5/24 * 2*pi / 2) = 12 550 km.
Moon_radius_pxl is easy: we can find that the Moon appears to be 974 pixels wide.
Moon_diff_pxl requires a bit more thinking.
We want to find the difference between the two images, which corresponds to basically measuring (in pixels) the shift of a given specific point on the Moon between the two pictures.
First of all, in order to have meaningful coordinates, I cropped the two images. The final size was the same: 974x987, which make both images aligned, and do not require further modifications to align their coordinates.
I had already a small piece of code, point marker, to mark specific points on two images and print their coordinates (it was used for an old project about reverse engineering the trajectory of a RocketLab rocket). This program allows one to see two images, and mark matching points on both. The coordinates of the points are then exported and can be use to compute a map of the displacement of the image between the two pictures.
I marked 57 points, more or less equally distributed on the whole surface of the Moon.
With the coordinates of the points I was able to compute displacement vectors as shown on the following graph.
The displacement was of course very variable, depending on the position on the surface of the Moon: on the center close to the equator it moves more than close to the poles or on the sides.
I found vector length to be between 4.8 and 19.7 pixels. The average or mean are probably not very relevant here, as it depends on the location of the (manually chosen) points. The final value should probably be the largest, hence 19.7 pixels.
When doing physics computations, one should always do a quick sanity check by verifying the units and the direction of the vectors.
Have we done that?
Let’s check the direction of the vectors: since the second picture was taken from a location more on the left compared to the first, we should expect a given point on the Moon to move to the right… But that’s not the case, all the vectors points to the left. Houston, we have a problem.
Part II - second attempt
Moon orbit and rotation
We assumed that the Moon is always showing us the same face, and that the Moon rotation did not have any influence in our calculations.
The first part is true: the Moon is tidally locked. It means that the Moon achieves exactly one rotation for each orbit.
But the second part is not exact. Because the orbit of the Moon is not perfectly circular its velocity is not constant: when getting closer to the Earth it accelerates ; and when getting further away, it decelerates (basically, the Moon is trading potential energy, or altitude ; with kinetic energy, or speed). With our modern knowledge, we know the velocity of the Moon changes between 962 m/s and 1096 m/s.
With a constant rotation but different speed, the Moon seems to be oscillating. It shows more than exactly half of it surface: smart people this phenomenon libration.
Well, if the Moon is traveling at the correct speed such that its rotation and orbital velocity cancels, nothing happens. But if the orbital velocity is higher or lower, it will not show exactly the same face, and all our computations will be wrong.
Counting pixels, again
Let’s try again.
Our previous equation is still correct, but
Moon_diff_pxl needs some adjustments.
We will now call it
diff_tot_pxl, and it is actually the sum of 3 numbers:
Moon_diff_pxl, which we already know to be 19.7 pixels
Moon_rot_pxl, which corresponds to the rotation of the Moon, and is constant: 360 degrees every 27.3 days
Moon_orbit_pxl, which corresponds to the Moon orbiting the Earth, and depends on its orbital velocity
So we are missing
We could compute it with two pictures, taken 24 hours apart: the position of the camera on the Earth would be the same, so
Moon_diff_pxl would be zero. We could therefore measure
Moon_rot_pxl + Moon_orbit_pxl by counting pixels just like we did.
Sadly Pauline did not take that third picture. That is why we can not finish our challenge, how sad!
Yes, the conclusion is short, it took me way to long to write this article and don’t want to delay it even more!