开发者

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 eq开发者_如何学Pythonuinox, 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.


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.


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.


The sun moves across the sky at a rate of 15 degrees of longitude per hour. If we space our observers 1 degree of longitude apart, the first being at the eastern land edge, and all were at sea level without obstructions, then they would expect to see the sun rise at 4 minute intervals, and they should see it rise in order, from east to west. Any deviations from these times are related to either i) altitude or ii) a combination of altitude and obstructions to the east.

We are able to determine the absolute elevation for observers that have i) no higher elevations to the east or ii) a sufficiently long return to sea level or below if any observers to the east of the location had a higher elevation (so that those obstructions no longer block the path to the sun). For these types of points, we can use the time difference from the expected time to determine the location where the sunrise would have been seen at sea level (to the east of the location), and intersect that tangent with a line perpendicular to the earth's surface at the observer's location. The height of that line up to where it meets the tangent will be the absolute elevation.

For observers that have i) higher observers to the east or ii) insufficient obstruction-free distance to re-establish the line of sight, we can determine the true elevation if the elevation of the point directly to the east is known absolutely. For the next point, we can determine the absolute elevation only if it is higher than this point. It is likely that after a number of points, it will only be possible to determine the relative elevation of neighbouring points, not their absolute elevation. This is because the time at which the sun rises is affected by both elevation and the height of the obstruction to the east.

Other important considerations/questions:

  • Curvature of the earth (are we considering a spherical earth or oblate spheroid)
  • Is it possible to have locations below sea level
  • Mountainous areas frequently cloudy (just kidding)
  • Can we use visual line of sight between observers to gain extra information?
  • Is the angle of diffraction of sunlight by the atmosphere (and different thicknesses of atmosphere) a significant factor?

Therefore, I think the answer is that it is not necessarily possible to determine absolute elevation at every point given natural terrain, although there are theoretical terrains in which the true elevation of each point could be known. I don't think the number of observers matters, its only a question of sampling interval and resolution. I don't think that having observers around the entire equator helps either. Hope this can cause some reflection :)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜