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.
Introduction
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 dist_earth_moon
.
That leaves us with one unknown: Moon_radius
.
The trick is that Earth_diff
and dist_earth_moon
are going to be expressed in km
, but Moon_diff
and 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 km
for dist_earth_moon
.
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: earth_diff_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.
One is 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.
Pretty easy.
Counting pixels: moon_radius_pxl
and moon_diff_pxl
Counting Moon_radius_pxl
is easy: we can find that the Moon appears to be 974 pixels wide.
But computing 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.
Wait.
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.
So, what?
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 pixelsMoon_rot_pxl
, which corresponds to the rotation of the Moon, and is constant: 360 degrees every 27.3 daysMoon_orbit_pxl
, which corresponds to the Moon orbiting the Earth, and depends on its orbital velocity
So we are missing Moon_orbit_pxl
.
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.
Conclusion
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!