Поворот системы координат на широту
Отдельная задачка по AutoCAD-у – нарисовать Солнце, Землю и итоговое направление осей. Лично у меня не получилось. Я, конечно, ничего не считала, т.к привыкла такие вещи делать поворотами, перемещениями и т.д. Вот именно так сходу, во всяком случае, и не получилось.
Пришлось взять картинку:
Я хочу узнать азимут и высоту Солнца. Это два угла в сферической системе координат:
Я их получу автоматически по прямоугольным координатам X,Y,Z, т.е положению Солнца, которое я знаю. Единственное, что требуется, чтобы оси указывали в нужном направлении. Чтобы высота солнца задавалась углом из сферической систему координат надо чтобы Z указывало вверх, перпендикулярно поверхности Земли, а оно пока указывает на небесный север.
Направление осей на данный момент – стрелки, нарисованные сплошными линиями. Более-менее устраивает Y, указывающий на запад. Ось X указывает куда-то вглубь Земли. Чтобы исправить ситуацию надо повернуть систему координат вокруг оси Y. Причем не на широту а на «90-широта», потому что широта считается от экватора.
Формула поворота такие:
xhor = x * cos(90_deg - широта) - z * sin(90_deg - широта)
yhor = y
zhor = x * sin(90_deg - широта) + z * cos(90_deg - широта)
Или такие:
xhor = x * sin(широта) - z * cos(широта)
yhor = y
zhor = x * cos(широта) + z * sin(широта)
Excel-ю всё равно, а руками так проще считать (предварительно упростив тригонометрию)
После этого поворота Z должно быть направлено вверх, перпендикулярное ему X на север, а Y на восток.
Нужные углы получаются по формулам, которые были тут:
https://akostina76.ucoz.ru/blog/2021-01-03-6898
r = sqrt( x*x + y*y + z*z )
RA = atan2( y, x )
Decl = asin( z / r ) = atan2( z, sqrt( x*x + y*y ) )
Высота над горизонтом:
altitude = asin( zhor ) = atan2( zhor, sqrt(xhor*xhor+yhor*yhor) )
Азимут:
azimuth = atan2( yhor, xhor ) + 180_deg
Очередной случай, когда, вроде бы не должно прибавляться 180 градусов, потому что X указывает на север. Значит там, где юг и так 180 градусов… но написано как написано.
Можно посчитать и сравнить с вот этим, например:
http://homes.relex.ru/~zalex/main1251.htm
|