feat: 完善时标与天象几何计算并扩展输出接口
- 新增时标、ΔT 模型、质心时间与 UT1 支持 - 改进日月食、月掩、行星事件及路径边界计算 - 完善恒星三维自行与动态距离传播 - 扩展 SVG、GeoJSON、KML 输出与底层距离换算工具 - 整理中英文手册、示例资源及回归测试
This commit is contained in:
+40
-40
@@ -5,58 +5,58 @@ import (
|
||||
. "b612.me/astro/tools"
|
||||
)
|
||||
|
||||
func MoonLo(jd float64) float64 { //'月球平黄经
|
||||
return planet.MoonLo(jd)
|
||||
func MoonLo(jde float64) float64 { //'月球平黄经
|
||||
return planet.MoonLo(jde)
|
||||
}
|
||||
|
||||
func SunMoonAngle(jd float64) float64 { // '月日距角
|
||||
return planet.SunMoonAngle(jd)
|
||||
func SunMoonAngle(jde float64) float64 { // '月日距角
|
||||
return planet.SunMoonAngle(jde)
|
||||
}
|
||||
|
||||
func MoonM(jd float64) float64 { // '月平近点角
|
||||
return planet.MoonM(jd)
|
||||
func MoonM(jde float64) float64 { // '月平近点角
|
||||
return planet.MoonM(jde)
|
||||
}
|
||||
|
||||
func MoonLonX(jd float64) float64 { // As Double '月球经度参数(到升交点的平角距离)
|
||||
return planet.MoonLonX(jd)
|
||||
func MoonLonX(jde float64) float64 { // As Double '月球经度参数(到升交点的平角距离)
|
||||
return planet.MoonLonX(jde)
|
||||
}
|
||||
|
||||
func MoonI(jd float64) float64 {
|
||||
return planet.MoonI(jd)
|
||||
func MoonI(jde float64) float64 {
|
||||
return planet.MoonI(jde)
|
||||
}
|
||||
|
||||
func MoonR(jd float64) float64 {
|
||||
return planet.MoonR(jd)
|
||||
func MoonR(jde float64) float64 {
|
||||
return planet.MoonR(jde)
|
||||
}
|
||||
|
||||
func MoonB(jd float64) float64 {
|
||||
return planet.MoonB(jd)
|
||||
func MoonB(jde float64) float64 {
|
||||
return planet.MoonB(jde)
|
||||
}
|
||||
|
||||
func MoonTrueLo(jd float64) float64 {
|
||||
return planet.MoonTrueLo(jd)
|
||||
func MoonTrueLo(jde float64) float64 {
|
||||
return planet.MoonTrueLo(jde)
|
||||
}
|
||||
func MoonTrueBo(jd float64) float64 {
|
||||
return planet.MoonTrueBo(jd)
|
||||
func MoonTrueBo(jde float64) float64 {
|
||||
return planet.MoonTrueBo(jde)
|
||||
}
|
||||
func MoonAway(jd float64) float64 { //'月地距离
|
||||
return planet.MoonAway(jd)
|
||||
func MoonAway(jde float64) float64 { //'月地距离
|
||||
return planet.MoonAway(jde)
|
||||
}
|
||||
|
||||
/*
|
||||
* @name 月球视黄经
|
||||
*/
|
||||
func MoonApparentLo(jd float64) float64 {
|
||||
return MoonTrueLo(jd) + Nutation2000Bi(jd)
|
||||
func MoonApparentLo(jde float64) float64 {
|
||||
return MoonTrueLo(jde) + Nutation2000Bi(jde)
|
||||
}
|
||||
|
||||
/*
|
||||
* 月球真赤纬
|
||||
*/
|
||||
func MoonTrueDec(jd float64) float64 {
|
||||
moonLo := MoonApparentLo(jd)
|
||||
moonBo := MoonTrueBo(jd)
|
||||
tmp := Sin(moonBo)*Cos(TrueObliquity(jd)) + Cos(moonBo)*Sin(TrueObliquity(jd))*Sin(moonLo)
|
||||
func MoonTrueDec(jde float64) float64 {
|
||||
moonLo := MoonApparentLo(jde)
|
||||
moonBo := MoonTrueBo(jde)
|
||||
tmp := Sin(moonBo)*Cos(TrueObliquity(jde)) + Cos(moonBo)*Sin(TrueObliquity(jde))*Sin(moonLo)
|
||||
res := ArcSin(tmp)
|
||||
return res
|
||||
}
|
||||
@@ -64,31 +64,31 @@ func MoonTrueDec(jd float64) float64 {
|
||||
/*
|
||||
* 月球真赤经
|
||||
*/
|
||||
func MoonTrueRa(jd float64) float64 {
|
||||
return LoToRa(jd, MoonApparentLo(jd), MoonTrueBo(jd))
|
||||
func MoonTrueRa(jde float64) float64 {
|
||||
return LoToRa(jde, MoonApparentLo(jde), MoonTrueBo(jde))
|
||||
}
|
||||
|
||||
func MoonTrueRaDec(jd float64) (float64, float64) {
|
||||
return LoBoToRaDec(jd, MoonApparentLo(jd), MoonTrueBo(jd))
|
||||
func MoonTrueRaDec(jde float64) (float64, float64) {
|
||||
return LoBoToRaDec(jde, MoonApparentLo(jde), MoonTrueBo(jde))
|
||||
}
|
||||
|
||||
// MoonApparentRa 站心视赤经;jd 为当地时儒略日,tz 为时区小时数 / topocentric apparent right ascension; jd is local civil time and tz is the zone offset in hours.
|
||||
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
|
||||
// 本地时刻加 ΔT 再减时区偏移即该地时刻的 TT(加法可交换),故 jde 就是 TT。
|
||||
jde := UTC2TT(jd) - float64(tz)/24.000
|
||||
ra := MoonTrueRa(jde)
|
||||
dec := MoonTrueDec(jde)
|
||||
away := MoonAway(jde) / 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
|
||||
// 同上:jde 是当地时刻的 TT。
|
||||
jde := UTC2TT(jd) - tz/24
|
||||
ra := MoonTrueRa(jde)
|
||||
dec := MoonTrueDec(jde)
|
||||
away := MoonAway(jde) / 149597870.7
|
||||
topoDec := TopocentricDec(ra, dec, lat, lon, jd-tz/24, away, 0)
|
||||
return topoDec
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user