Я пытался опубликовать это на бирже математического стека, но безрезультатно, поэтому я подумал, что, может быть, это более актуально здесь:
Я знаю, что подобный вопрос уже публиковался здесь, но в следующем посте нет ссылок на какие-либо математические выводы. Я также не смог получить доступ к цитатам на странице вики.
Как рассчитать азимут солнца на основе зенита, часового угла, склонения и широты?
Недавно я пытался определить положение Солнца на небе с учетом широты, времени года и времени суток.
Я использовал следующие определения:
Я использовал это для обозначения угла широты, согласно соглашению
Я использовал это для обозначения угла года, завершенного с летнего солнцестояния.
Я использовал это для обозначения угла дня, завершенного после солнечного полудня.
Я использовал это для обозначения зенитного угла Солнца.
Я использовал это для обозначения азимута Солнца по часовой стрелке от точного севера.
Я использовал это для обозначения угла 66,56 градусов между осью Земли и плоскостью вращения.
Я использовал это для обозначения угла между осью Земли и вектором в направлении солнца, это дополняет более часто используемый угол склонения.
Моя цель состояла в том, чтобы получить функцию
Мне удалось (с некоторой помощью) вывести следующие формулы:
Однако мне не удалось вывести формулу, приведенную на следующей странице Википедии для которые я переписал в свои переменные ниже:
https://en.wikipedia.org/wiki/Solar_azimuth_angle
Я думаю, чтобы получить это, мне нужно преобразовать в местную систему координат с севером по оси y, строго на восток по оси x и зенитом по оси z.
Может ли кто-нибудь помочь мне продолжить?
Сначала мы настроим нашу глобальную систему координат следующим образом:
Происхождение: центр Земли. : земная ось (Северный полюс - положительное направление), и представить экваториальную плоскость с указывает на место полудня.
Единичный вектор солнца . Единичный вектор местного зенита равен . Единичный вектор местного Востока равен .
Чтобы вычислить угол азимута, нам нужно сначала спроецировать на местную плоскость Восток-Север: .
Затем вычислите скалярное произведение проекции и единичного вектора местного Востока, .
Окончательно, .
Посмотрите https://www.pveducation.org , в частности, раздел 2.4 о земном солнечном излучении. Он описывает необходимые уравнения и имеет несколько онлайн-калькуляторов и интерактивных графиков.
Если вы хотите рассчитать в своем собственном коде, я бы порекомендовал пакет Python pysolar: https://pysolar.readthedocs.io/en/latest/ . Он имеет методы для определения широты, долготы и времени суток для расчета азимута и высоты Солнца.
То, что я думаю, вы пытаетесь сделать, работоспособно, но приблизительно. Сначала вы определяете географическое положение Солнца (GP), точку на Земле, где Солнце находится в зените во время наблюдения. Вы начинаете с нахождения широты GP Солнца (его склонения). Это примерно 23 градуса, умноженное на синус ((дней с весеннего равноденствия) умножить на 360/365). Затем вы находите его долготу как ((часы после местного кажущегося полудня), умноженные на (15 градусов) + западная долгота наблюдателя). У вас будет три точки, вершины сферического треугольника: положение наблюдателя, ВП Солнца и северный полюс. Угол на полюсе – это разница между долготами ВП Солнца и наблюдателя. Стороны между полюсом и двумя другими точками равны 90 градусам минус их широта. Все это' s, необходимое для решения сферического треугольника, — это длина дуги двух сторон и угол между ними. Используя закон косинусов для сферических треугольников, найдите расстояние по дуге между наблюдателем и ВП Солнца. Высота солнца будет 90 градусов минус это число. Найдите угол при наблюдателе, используя закон синусов для сферических треугольников. Это будет азимут Солнца.
Грег Миллер