package sun import ( "errors" "b612.me/astro/basic" ) /* 黄赤交角 jde,世界时UTC nutation,为true时计算交角章动 */ func EclipticObliquity(jde float64, nutation bool) float64 { jde = basic.TD2UT(jde, true) return basic.EclipticObliquity(jde, nutation) } /* 黄经章动 jde,世界时UTC */ func EclipticNutation(jde float64) float64 { return basic.HJZD(basic.TD2UT(jde, true)) } /* 交角章动 jde,世界时UTC */ func AxialtiltNutation(jde float64) float64 { return basic.JJZD(basic.TD2UT(jde, true)) } /* 太阳几何黄经 jde,世界时UTC */ func GeometricLo(jde float64) float64 { return basic.SunLo(basic.TD2UT(jde, true)) } /* 太阳真黄经 jde,世界时UTC */ func TrueLo(jde float64) float64 { return basic.HSunTrueLo(basic.TD2UT(jde, true)) } /* 太阳视黄经 jde,世界时UTC */ func SeeLo(jde float64) float64 { return basic.HSunSeeLo(basic.TD2UT(jde, true)) } /* 太阳视赤经 jde,世界时UTC */ func SeeRa(jde float64) float64 { return basic.HSunSeeRa(basic.TD2UT(jde, true)) } /* 太阳视赤纬 jde,世界时UTC */ func SeeDec(jde float64) float64 { return basic.HSunSeeDec(basic.TD2UT(jde, true)) } /* 太阳视赤经赤纬 jde,世界时UTC */ func SeeRaDec(jde float64) (float64, float64) { return basic.HSunSeeRaDec(basic.TD2UT(jde, true)) } /* 太阳真赤经 jde,世界时UTC */ func TrueRa(jde float64) float64 { return basic.HSunTrueRa(basic.TD2UT(jde, true)) } /* 太阳真赤纬 jde,世界时UTC */ func TrueDec(jde float64) float64 { return basic.HSunTrueDec(basic.TD2UT(jde, true)) } /* 太阳中间方程 jde,世界时UTC */ func MidFunc(jde float64) float64 { return basic.SunMidFun(basic.TD2UT(jde, true)) } /* 均时差 jde,世界时UTC */ func EquationTime(jde float64) float64 { return basic.SunTime(basic.TD2UT(jde, true)) } /* 太阳时角 jde,世界时当地时间 lon,经度,东正西负 lat,纬度,北正南负 timezone,时区,东正西负 */ func HourAngle(jde, lon, lat, timezone float64) float64 { return basic.SunTimeAngle(jde, lon, lat, timezone) } /* 太阳方位角 jde,世界时当地时间 lon,经度,东正西负 lat,纬度,北正南负 timezone,时区,东正西负 */ func Azimuth(jde, lon, lat, timezone float64) float64 { return basic.SunAngle(jde, lon, lat, timezone) } /* 太阳高度角 jde,世界时当地时间 lon,经度,东正西负 lat,纬度,北正南负 timezone,时区,东正西负 */ func Zenith(jde, lon, lat, timezone float64) float64 { return basic.SunHeight(jde, lon, lat, timezone) } /* 太阳中天时间 jde,世界时当地0时 lon,经度,东正西负 timezone,时区,东正西负 */ func CulminationTime(jde, lon, timezone float64) float64 { return basic.GetSunTZTime(jde, lon, timezone) } /* 太阳升起时间 jde,世界时当地0时 JDE lon,经度,东正西负 lat,纬度,北正南负 timezone,时区,东正西负 aero,true时进行大气修正 */ func RiseTime(jde, lon, lat, timezone float64, aero bool) (float64, error) { var err error = nil tz := 0.00 if aero { tz = 1 } tm := basic.GetSunRiseTime(jde, lon, lat, timezone, tz) if tm == -2 { err = errors.New("极夜") } if tm == -1 { err = errors.New("极昼") } return tm, err } /* 太阳落下时间 jde,世界时当地0时 JDE lon,经度,东正西负 lat,纬度,北正南负 timezone,时区,东正西负 aero,true时进行大气修正 */ func DownTime(jde, lon, lat, timezone float64, aero bool) (float64, error) { var err error = nil tz := 0.00 if aero { tz = 1 } tm := basic.GetSunDownTime(jde, lon, lat, timezone, tz) if tm == -2 { err = errors.New("极夜") } if tm == -1 { err = errors.New("极昼") } return tm, err } /* 晨朦影 jde,世界时当地0时 JDE lon,经度,东正西负 lat,纬度,北正南负 timezone,时区,东正西负 angle,朦影角度:可选-6 -12 -18 */ func MorningTwilightTime(jde, lon, lat, timezone, angle float64) (float64, error) { var err error = nil tm := basic.GetAsaTime(jde, lon, lat, timezone, angle) if tm == -2 { err = errors.New("不存在") } if tm == -1 { err = errors.New("不存在") } return tm, err } /* 昏朦影 jde,世界时当地0时 JDE lon,经度,东正西负 lat,纬度,北正南负 timezone,时区,东正西负 angle,朦影角度:可选-6 -12 -18 */ func EveningTwilightTime(jde, lon, lat, timezone, angle float64) (float64, error) { var err error = nil tm := basic.GetBanTime(jde, lon, lat, timezone, angle) if tm == -2 { err = errors.New("不存在") } if tm == -1 { err = errors.New("不存在") } return tm, err }