Короткая программа на 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.