Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Algorithm to calculate 2D terrain from observed sunrises

A team of people in South America stand at points along the equator at an equiangular distance from each other (measured from the center of the earth). Due to mountainous terrain, they each stand at different altitudes. Our goal is to determine their elevation using watches.

On the vernal equinox, when the sun rises due east, each person waits attentively and records (with impressive precision and accuracy) the exact time GMT that the tip of the sun was first visible. For some, this is the time that it appeared over a lovely South Atlantic horizon. For others, this was the time that it peeked over the ridge of a mountain top.

Given a list of tuples pairing the longitude of the observer with the time they first witnessed the sun, can you make any concrete claims about a particular sampling of the altitude along the equator? Do you have to know the elevation of the first observer (in this case 0' above sea level, toes in the water on the beach)? Do you need the team of people to completely cover the equator, wrap-around style? If you cannot solve it with this meager team of hundreds, could you do it with a nearly-infinite number of observers?

No, this is not a homework problem.

like image 391
Phrogz Avatar asked Apr 06 '11 21:04

Phrogz


2 Answers

For every degree of longitude you can calculate the time, when the sunlight touches the earth on this location tangentially, that is the time, when the theoretical sunrise should be.

When the sun rises earlier, the observer obviously stands on a hill. From the difference between his degree of longitude and the degree of longitude of the point where the sun is expected to rise in this moment, you can calculate (I think (cotangens(phi) - 1) x radius) how much higher the observer is than the place where now should be the sunrise. That gives you just a lower limit of the height of the observer, because the point, where the sun is expected to rise now, could be on a hill as well.

When an observer sees the sun later than expected, he obviously stands on the western side of a mountain. From the time you can calculate the altitude of the sun. Together with the calculations of the next observer to the east, you can get an upper limit of his altitude.

If every observer can see one of his colleagues on the horizon (or on top of the hill in the east) or sees the ocean on the horizon, you can calculate their altitudes exactly.

like image 99
jammon Avatar answered Sep 21 '22 17:09

jammon


Derivable fact: The exact GMT time can be used to calculate the angle of the sun to the viewer at sea level with no obstructions.

To fully understand this, let us look at the "isolated" case. If a single person gives you their longitude and the GMT time they first see the sun, you can only derive the angle that the sun was first viewed. Which means there is an obstruction at that angle but nothing above it. We don't know where we are, how high we are, but we know relative to our position, something in the distance obscures the sun

Lets look at the two main cases. Person 1 is standing in the ocean, and sees the sun giving us the baseline for Time and Elevation. Person 2 is standing somewhat further back, (probably at a higher elevation) and will probably see the sun first.

From here there are 2 cases. Person 2 can see Person 1: If this is the case, then the terrain between Person 1 and Person 2 is non obstructive. We know this if Person 2 sees the sun at the same time or before Person 1. Via trig, we can determine the elevation change of person 2, because we have created a triangle, and know enough angles and have enough edges to solve it.

The other case is not solvable. If Person 2 cannot see Person 1, this is because there is some terrain obstruction between Person 2 and Person 1. We can determine that the elevation between Person 2 and Person 1 is higher than both of them, and you can make some guesses at approximately what the terrain looks like, but you cannot determine Person 2's elevation because they could be "just behind a ridge" or "down the slope of the mountain"

So a few hundred probably wouldn't work, however, with enough observers so that each Person can see at least 1 other Person in front of them (behind doesn't count) you can determine the elevation with relative accuracy.

like image 24
ohmusama Avatar answered Sep 19 '22 17:09

ohmusama