Короткая программа на Python для поиска подсолнечной точки.

Где-то всегда "счастливый час", и где-то над головой всегда светит солнце. Python позволяет легко найти эту точку на Земле в любой момент времени. Удивите своих друзей этой короткой программой Python!

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

Почему всегда есть одна подсолнечная точка и почему она всегда в движении?

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

Я не спал всю ночь, выясняя, куда зашло солнце, и оно наконец озарило меня

(Извините, я просто не могу с собой поделать.) В любом случае, я работал над многими проектами в области солнечной энергетики, такими как несколько крупнейших в мире (в то время в 80-х годах) фотоэлектрических полей слежения за солнцем и полей концентраторов гелиостатов. .

В основе многих моих программ лежал алгоритм расчета мгновенного положения Солнца на небе с точностью до 0,01 градуса. Сегодня я использую этот алгоритм для создания программных инструментов для моей жены, поскольку она помогает клиентам экономить много денег с течением времени с помощью солнечных панелей на крыше. Я написал книгу под названием Положение Солнца — астрономический алгоритм на 9 распространенных языках программирования, и я даже написал статью на Medium.com, в которой представлен алгоритм положения солнца на Python.

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

from math import *
def subsolar(utc):
    ye, mo, da, ho, mi, se = utc
    ta = pi * 2
    ut = ho + mi / 60 + se / 3600
    t = 367 * ye - 7 * (ye + (mo + 9) // 12) // 4
    dn = t + 275 * mo // 9 + da - 730531.5 + ut / 24
    sl = dn * 0.01720279239 + 4.894967873
    sa = dn * 0.01720197034 + 6.240040768
    t = sl + 0.03342305518 * sin(sa)
    ec = t + 0.0003490658504 * sin(2 * sa)
    ob = 0.4090877234 - 0.000000006981317008 * dn
    st = 4.894961213 + 6.300388099 * dn
    ra = atan2(cos(ob) * sin(ec), cos(ec))
    de = asin(sin(ob) * sin(ec))
    la = degrees(de)
    lo = degrees(ra - st) % 360
    lo = lo - 360 if lo > 180 else lo
    return [round(la, 6), round(lo, 6)]
utc = (2022, 4, 5, 17, 5, 0)
lat, lon = subsolar(utc)
url = f"https://www.google.com/maps/place/{lat},{lon}"
print("UTC:", utc)
print("Sun lat: ", lat)
print("Sun lon: ", lon)
print(url)

Чтобы использовать этот код, отредактируйте первую строку после определенной функции, чтобы установить UTC (Всемирное координированное время) на любую желаемую дату и время. Это точные дата и время в Гринвиче, поэтому вам может потребоваться добавить или вычесть смещение вашего часового пояса, чтобы определить UTC на основе вашего местного времени. Google «UTC now», чтобы быстро узнать, который час в Гринвиче.

Кортеж UTC содержит год, месяц, день, час, минуту и ​​секунду. Передайте этот кортеж функции subsolar(), и она вернет кортеж, содержащий широту и долготу, округленные до 6 знаков после запятой, где солнце находится в зените над землей.

Когда я пишу эту статью

Как показано в приведенном выше коде, я нашел подсолнечную точку на сегодня, 5 апреля 2022 года, в 5 минут после 17:00 по Гринвичу. Вот вывод программы, использующей этот момент времени UTC:

Чтобы быстро увидеть, где находится это место на земле, скопируйте и вставьте ссылку в последней строке в браузер. Затем Google Maps показывает, что ранее сегодня солнце было прямо над головой в месте в центре Медельина, Колумбия, в Южной Америке.

Страсть и миссия Джона – делиться кодом Python, чтобы развеять тайны жизненных трудностей и повеселиться. Джон является автором книг Python для Numworks, Python для OpenSCAD,Python для TI-Nspire CX II, Python для калькулятора PythonTI-84 Plus CE. »и многие другие заголовки.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Присоединяйтесь к нашему сообществу Discord.