import math
"""
alpha 太阳高度角
phi 为当地维度(北纬为正)
omiga 为太阳时角
ST(direction_time) 为当地时间
delta 为太阳赤纬角
Day 以春分作为0天起计算的天数
"""
def cal_sin_delta(Day):
"""
太阳赤纬角 sin_delta
Day 距离春分的天数
"""
data=math.sin(2 * math.pi * Day / 365) * math.sin(23.45 * math.pi/180)
print("sin_delta",data)
return data
def cal_omiga(direction_time):
"""
太阳时角omiga
ST(direction_time) 当地时间
"""
data = math.pi/12 * (direction_time - 12)
print("omiga", data)
return data
def transform_tri(old_data):
"""
cos与sin的转换关系
"""
new_data = (1 - (old_data ** 2)) ** 0.5
return new_data
def cal_alpha(Day, ST, phi):
"""
计算太阳高度角alpha,角度值
"""
sin_delta = cal_sin_delta(Day)
omiga = cal_omiga(ST)
data = transform_tri(sin_delta) * math.cos(phi) * math.cos(omiga) + sin_delta * math.cos(phi)
return math.asin(data)* 180/math.pi
def cal_gamma(Day, ST, phi):
"""
计算太阳方位角 gamma,角度值
"""
sin_alpha = math.sin(cal_alpha(Day, ST, phi)*math.pi/180)
sin_delta = cal_sin_delta(Day)
omiga = cal_omiga(ST)
data = (sin_delta - (sin_alpha * math.sin(phi))) / (transform_tri(sin_alpha) * math.cos(phi))
print("gamma", data)
if data > 1:
data = 1
elif data < -1:
data = -1
return math.acos(data)* 180/math.pi
# 注意纬度要换成弧度制
print("太阳高度角", cal_alpha(0, 12, 37.4/180*math.pi),'°')
print("太阳方位角", cal_gamma(0, 12, 37.4/180*math.pi),'°')
python计算高度角和方位角
最新推荐文章于 2024-06-15 23:24:42 发布