python计算高度角和方位角

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),'°')

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值