Files
2024-09-26 16:58:42 +08:00

43 lines
1.2 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package producer
import (
"math"
"time"
"github.com/starainrt/astro/sun"
)
// Azimuth 太阳方位角
// 返回给定经纬度、对应date时区date时刻的太阳方位角正北为0向东增加
func SunAzimuth(date time.Time, lon, lat float64) float64 {
return sun.Azimuth(date, lon, lat)
}
// Zenith 太阳高度角
// 返回给定经纬度、对应date时区date时刻的太阳高度角
func SunZenith(date time.Time, lon, lat float64) float64 {
return sun.Zenith(date, lon, lat)
}
func SatAzimuth(lon, lat, lonSat, latSat float64) float64 {
lon = lon * math.Pi / 180
lat = lat * math.Pi / 180
lonSat = lonSat * math.Pi / 180
latSat = latSat * math.Pi / 180
beta := math.Acos(math.Cos(lat-latSat) * math.Cos(lon-lonSat))
phi := math.Asin(math.Sin(lonSat-lon) / math.Sin(beta))
return phi * 180 / math.Pi
}
func SatZenith(lon, lat, lonSat, latSat float64) float64 {
lon = lon * math.Pi / 180
lat = lat * math.Pi / 180
lonSat = lonSat * math.Pi / 180
latSat = latSat * math.Pi / 180
beta := math.Acos(math.Cos(lat-latSat) * math.Cos(lon-lonSat))
theta := math.Asin(42164.0 * math.Sin(beta) / math.Sqrt(1.8084*1e9-5.3725*1e8*math.Cos(beta)))
return theta * 180 / math.Pi
}