Алгоритм расчета 2D-ландшафта по наблюдаемым восходам солнца

Группа людей в Южной Америке стоит в точках вдоль экватора на равноугольном расстоянии друг от друга (отсчитывается от центра земли). Из-за гористой местности каждый из них стоит на разной высоте. Наша цель – определить их высоту с помощью часов.

В день весеннего равноденствия, когда солнце восходит прямо на востоке, каждый человек внимательно ждет и записывает (с впечатляющей точностью и достоверностью) точное время по Гринвичу, когда впервые была видна вершина солнца. Для некоторых это время, когда он появился над прекрасным горизонтом Южной Атлантики. Для других это было время, когда он выглядывал из-за хребта горной вершины.

Имея список кортежей, связывающих долготу наблюдателя со временем, когда он впервые увидел солнце, можете ли вы сделать какие-либо конкретные заявления о конкретной выборке высоты вдоль экватора? Нужно ли вам знать высоту первого наблюдателя (в данном случае 0 футов над уровнем моря, пальцы ног в воде на пляже)? Нужна ли вам команда людей, чтобы полностью покрыть экватор круговым движением? Если вы не можете решить эту проблему с помощью этой скудной команды из сотен человек, сможете ли вы сделать это с почти бесконечным числом наблюдателей?

Нет, это не домашнее задание.


person Phrogz    schedule 06.04.2011    source источник
comment
Вам обязательно нужна карта высот всей земли, потому что, если кто-то стоит в неудачном месте в Гималаях, скорее всего, он не увидит солнце до 6 часов, потому что гора загораживает солнце. Хотя я предполагаю, что вы не считаете это :)   -  person orlp    schedule 07.04.2011
comment
@nightcracker Суть алгоритма в том, чтобы получить карту высот Земли. Очень многие люди, живущие непосредственно к западу от любой высокой горы (Гималаи не находятся на экваторе, но давайте предположим, что это так), будут, как вы говорите, отставать во времени от того, что должно было бы быть, если бы они могли видеть горизонт. Вопрос в том, как использовать эту информацию вместе с тем фактом, что человек, стоящий на вершине горы, видит горизонт, чтобы определить высоту наблюдателей.   -  person Phrogz    schedule 07.04.2011
comment
Как видно из формулировки вопроса, я еще не смог решить, разрешим этот вопрос или нет, учитывая имеющиеся данные, даже при бесконечном числе наблюдателей.   -  person Phrogz    schedule 07.04.2011
comment
@Phrogz: Вам нужно знать как высоту наблюдателя, так и высоту точки восхода солнца. Как вы указываете, в некоторых случаях наблюдатель будет стоять на горе, И солнце взойдет из-за другой горы. Слишком много переменных с недостаточной информацией для решения этой проблемы.   -  person Eric J.    schedule 07.04.2011
comment
@ Бенджамин Я думаю, что хорошая награда - отличная идея. Спасибо за ответ и предложение. Оттачивайте свои ответы и лоббируйте свои голоса, чтобы получить потенциальный крупный выигрыш от репутации. :)   -  person Phrogz    schedule 07.04.2011
comment
Могут ли члены команды использовать эти часы?   -  person Cary Swoveland    schedule 25.03.2014


Ответы (3)


Для каждого градуса долготы можно рассчитать время, когда солнечный свет коснется земли в этом месте по касательной, то есть время, когда должен быть теоретический восход солнца.

Когда солнце встает раньше, наблюдатель явно стоит на возвышенности. По разнице между его градусом долготы и градусом долготы точки, где ожидается восход солнца в этот момент, можно вычислить (я думаю (cotangens(phi) - 1) x radius), насколько выше находится наблюдатель, чем место, где сейчас должно быть восходом солнца. Это дает вам только нижний предел высоты наблюдателя, потому что точка, где сейчас ожидается восход солнца, также может быть на холме.

Когда наблюдатель видит солнце позже, чем ожидалось, он, очевидно, стоит на западной стороне горы. По времени можно вычислить высоту солнца. Вместе с расчетами следующего наблюдателя на восток можно получить верхний предел его высоты.

Если каждый наблюдатель может видеть одного из своих коллег на горизонте (или на вершине холма на востоке) или видит океан на горизонте, вы можете точно рассчитать их высоты.

person jammon    schedule 06.04.2011

Выводимый факт: точное время по Гринвичу можно использовать для расчета угла наклона солнца к зрителю на уровне моря без препятствий.

Чтобы полностью понять это, давайте рассмотрим «изолированный» случай. Если один человек сообщает вам свою долготу и время по Гринвичу, когда он впервые увидел солнце, вы можете определить только угол, под которым солнце было впервые замечено. Это означает, что под этим углом есть препятствие, но над ним ничего нет. Мы не знаем, где мы находимся, как высоко мы находимся, но мы знаем относительно нашего положения, что-то вдалеке заслоняет солнце.

Рассмотрим два основных случая. Человек 1 стоит в океане и видит, как солнце дает нам базовую линию для времени и высоты. Человек 2 стоит несколько дальше (вероятно, на большей высоте) и, вероятно, первым увидит солнце.

Отсюда 2 случая. Человек 2 может видеть Человека 1: Если это так, то местность между Человеком 1 и Человеком 2 не мешает. Мы знаем это, если человек 2 увидит солнце в то же время или раньше человека 1. С помощью триггера мы можем определить изменение высоты человека 2, потому что мы создали треугольник и знаем достаточно углов и ребер, чтобы решить его.

Другой случай не разрешим. Если Человек 2 не может видеть Человека 1, это связано с тем, что между Человеком 2 и Человеком 1 есть какое-то препятствие на местности. Мы можем определить, что высота между Человеком 2 и Человеком 1 выше, чем между ними обоими, и вы можете сделать некоторые предположения примерно на как выглядит местность, но вы не можете определить высоту Человека 2, потому что он может быть «сразу за хребтом» или «вниз по склону горы»

Таким образом, несколько сотен, вероятно, не сработают, однако с достаточным количеством наблюдателей, чтобы каждый Человек мог видеть по крайней мере 1 другого Человека перед собой (позади не в счет), вы можете определить высоту с относительной точностью.

person ohmusama    schedule 06.04.2011
comment
Если следующий человек находится на другой стороне пика, вы его не увидите, даже если он находится в 10 метрах от вас... То, как вы это объясняете, не думаю, что добавление наблюдателей поможет... - person Benjamin; 07.04.2011
comment
В точке, где у вас есть бесконечные наблюдатели, проблема является проблемой исчисления и решается как deltaDistance -> 0 - person ohmusama; 07.04.2011

Солнце движется по небу со скоростью 15 градусов долготы в час. Если мы разнесем наших наблюдателей на 1 градус долготы друг от друга, первый будет на восточной окраине суши, и все они будут на уровне моря без препятствий, то они ожидают увидеть восход солнца с интервалом в 4 минуты, и они должны увидеть его восход через порядок, с востока на запад. Любые отклонения от этого времени связаны либо с i) высотой, либо с ii) комбинацией высоты и препятствий на востоке.

Мы можем определить абсолютную высоту для наблюдателей, которые i) не имеют более высоких возвышений на востоке или ii) достаточно долго возвращаются к уровню моря или ниже, если какие-либо наблюдатели к востоку от местоположения имели более высокое возвышение (так что эти препятствия больше не преграждают путь к солнцу). Для этих типов точек мы можем использовать разницу во времени с ожидаемым временем, чтобы определить место, где можно было бы увидеть восход солнца на уровне моря (к востоку от этого места), и пересечь эту касательную линией, перпендикулярной земной поверхности. поверхности в месте нахождения наблюдателя. Высота этой линии до места, где она встречается с касательной, будет абсолютной отметкой.

Для наблюдателей, у которых есть i) более высокие наблюдатели на востоке или ii) недостаточное расстояние без препятствий для восстановления линии обзора, мы можем определить истинное возвышение, если абсолютно известно возвышение точки непосредственно на востоке. Для следующей точки мы можем определить абсолютную высоту только в том случае, если она выше этой точки. Вполне вероятно, что после ряда точек можно будет определить только относительную высоту соседних точек, а не их абсолютную высоту. Это связано с тем, что время восхода солнца зависит как от высоты, так и от высоты препятствия на востоке.

Другие важные соображения/вопросы:

  • Кривизна земли (мы рассматриваем сферическую землю или сплюснутый сфероид)
  • Возможно ли иметь локации ниже уровня моря
  • В горных районах часто бывает облачно (шутка)
  • Можем ли мы использовать линию прямой видимости между наблюдателями для получения дополнительной информации?
  • Является ли угол преломления солнечного света атмосферой (и различной толщиной атмосферы) существенным фактором?

Поэтому я думаю, что ответ заключается в том, что не всегда возможно определить абсолютную высоту в каждой точке данного естественного ландшафта, хотя существуют теоретические местности, в которых истинная высота каждой точки может быть известна. Я не думаю, что количество наблюдателей имеет значение, это всего лишь вопрос интервала выборки и разрешения. Я не думаю, что наличие наблюдателей вокруг всего экватора тоже не поможет. Надеюсь, это может вызвать некоторые размышления :)

person Benjamin    schedule 06.04.2011
comment
Мы определенно рассматриваем поверхность земли на уровне моря на экваторе как идеальный круг и игнорируем как облака, так и рефракцию (атмосферные и пустынные миражи). :) Нет, никакой информации о видимости наблюдателя наблюдателю не имеется (хотя я думаю, что она может быть получена в любом случае). - person Phrogz; 07.04.2011