2019-10-24 10:44:21 +08:00
|
|
|
package basic
|
|
|
|
|
|
|
|
|
|
import (
|
2026-05-01 22:38:44 +08:00
|
|
|
"b612.me/astro/planet"
|
2019-10-24 10:44:21 +08:00
|
|
|
. "b612.me/astro/tools"
|
|
|
|
|
)
|
|
|
|
|
|
2026-05-01 22:38:44 +08:00
|
|
|
func MoonLo(jd float64) float64 { //'月球平黄经
|
|
|
|
|
return planet.MoonLo(jd)
|
2019-10-24 10:44:21 +08:00
|
|
|
}
|
|
|
|
|
|
2026-05-01 22:38:44 +08:00
|
|
|
func SunMoonAngle(jd float64) float64 { // '月日距角
|
|
|
|
|
return planet.SunMoonAngle(jd)
|
2019-10-24 10:44:21 +08:00
|
|
|
}
|
|
|
|
|
|
2026-05-01 22:38:44 +08:00
|
|
|
func MoonM(jd float64) float64 { // '月平近点角
|
|
|
|
|
return planet.MoonM(jd)
|
2019-10-24 10:44:21 +08:00
|
|
|
}
|
|
|
|
|
|
2026-05-01 22:38:44 +08:00
|
|
|
func MoonLonX(jd float64) float64 { // As Double '月球经度参数(到升交点的平角距离)
|
|
|
|
|
return planet.MoonLonX(jd)
|
2019-10-24 10:44:21 +08:00
|
|
|
}
|
|
|
|
|
|
2026-05-01 22:38:44 +08:00
|
|
|
func MoonI(jd float64) float64 {
|
|
|
|
|
return planet.MoonI(jd)
|
2019-10-24 10:44:21 +08:00
|
|
|
}
|
|
|
|
|
|
2026-05-01 22:38:44 +08:00
|
|
|
func MoonR(jd float64) float64 {
|
|
|
|
|
return planet.MoonR(jd)
|
2019-10-24 10:44:21 +08:00
|
|
|
}
|
|
|
|
|
|
2026-05-01 22:38:44 +08:00
|
|
|
func MoonB(jd float64) float64 {
|
|
|
|
|
return planet.MoonB(jd)
|
2019-10-24 10:44:21 +08:00
|
|
|
}
|
|
|
|
|
|
2026-05-01 22:38:44 +08:00
|
|
|
func MoonTrueLo(jd float64) float64 {
|
|
|
|
|
return planet.MoonTrueLo(jd)
|
2019-10-24 10:44:21 +08:00
|
|
|
}
|
2026-05-01 22:38:44 +08:00
|
|
|
func MoonTrueBo(jd float64) float64 {
|
|
|
|
|
return planet.MoonTrueBo(jd)
|
2019-10-24 10:44:21 +08:00
|
|
|
}
|
2026-05-01 22:38:44 +08:00
|
|
|
func MoonAway(jd float64) float64 { //'月地距离
|
|
|
|
|
return planet.MoonAway(jd)
|
2019-10-24 10:44:21 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* @name 月球视黄经
|
|
|
|
|
*/
|
2026-05-01 22:38:44 +08:00
|
|
|
func MoonApparentLo(jd float64) float64 {
|
|
|
|
|
return MoonTrueLo(jd) + Nutation2000Bi(jd)
|
2019-10-24 10:44:21 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* 月球真赤纬
|
|
|
|
|
*/
|
2026-05-01 22:38:44 +08:00
|
|
|
func MoonTrueDec(jd float64) float64 {
|
|
|
|
|
moonLo := MoonApparentLo(jd)
|
|
|
|
|
moonBo := MoonTrueBo(jd)
|
|
|
|
|
tmp := Sin(moonBo)*Cos(TrueObliquity(jd)) + Cos(moonBo)*Sin(TrueObliquity(jd))*Sin(moonLo)
|
2019-10-24 10:44:21 +08:00
|
|
|
res := ArcSin(tmp)
|
|
|
|
|
return res
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* 月球真赤经
|
|
|
|
|
*/
|
2026-05-01 22:38:44 +08:00
|
|
|
func MoonTrueRa(jd float64) float64 {
|
|
|
|
|
return LoToRa(jd, MoonApparentLo(jd), MoonTrueBo(jd))
|
2019-10-24 10:44:21 +08:00
|
|
|
}
|
|
|
|
|
|
2026-05-01 22:38:44 +08:00
|
|
|
func MoonTrueRaDec(jd float64) (float64, float64) {
|
|
|
|
|
return LoBoToRaDec(jd, MoonApparentLo(jd), MoonTrueBo(jd))
|
2024-01-15 17:05:18 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*
|
|
|
|
|
|
|
|
|
|
*
|
|
|
|
|
传入世界时
|
2019-10-24 10:44:21 +08:00
|
|
|
*/
|
2026-05-01 22:38:44 +08:00
|
|
|
func MoonApparentRa(jd, lon, lat float64, tz int) float64 {
|
|
|
|
|
jde := TD2UT(jd, true)
|
|
|
|
|
utcJD := jde - float64(tz)/24.000
|
|
|
|
|
ra := MoonTrueRa(utcJD)
|
|
|
|
|
dec := MoonTrueDec(utcJD)
|
|
|
|
|
away := MoonAway(utcJD) / 149597870.7
|
|
|
|
|
topoRA := TopocentricRa(ra, dec, lat, lon, jd-float64(tz)/24.000, away, 0)
|
|
|
|
|
return topoRA
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func MoonApparentDec(jd, lon, lat, tz float64) float64 {
|
|
|
|
|
jde := TD2UT(jd, true)
|
|
|
|
|
utcJD := jde - tz/24
|
|
|
|
|
ra := MoonTrueRa(utcJD)
|
|
|
|
|
dec := MoonTrueDec(utcJD)
|
|
|
|
|
away := MoonAway(utcJD) / 149597870.7
|
|
|
|
|
topoDec := TopocentricDec(ra, dec, lat, lon, jd-tz/24, away, 0)
|
|
|
|
|
return topoDec
|
2019-10-24 10:44:21 +08:00
|
|
|
}
|