feat: 扩展天文计算能力
- 新增日食、月食、本地可见性、中心线、半影区域、SVG 图示与沙罗周期信息 - 新增行星冲合、留、方照、物理星历、视直径、相位、亮肢角、轨道节点等计算 - 新增木星伽利略卫星位置、现象与接触事件计算 - 新增恒星星表、星座判定、自行修正与观测辅助能力 - 新增 coord、formula、orbit、sundial、lite/sun、lite/moon 等扩展包 - 完善农历年号、月相英文别名、视差角、大气质量、折射、日晷与双星计算 - 增加 NASA、JPL Horizons、IMCCE 等回归测试数据与基线测试 - 重构基础算法文件组织,补充大量公开 API 注释和语义回归测试 - 更新中文和英文 README,补充示例、精度说明、SVG 配图
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
package jupiter
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"b612.me/astro/basic"
|
||||
)
|
||||
|
||||
// GalileanSatellitePosition 木星伽利略卫星视位置 / apparent position of a Galilean satellite.
|
||||
//
|
||||
// Jovicentric* 为木心 J2000 平赤道直角坐标与速度,单位 AU / AU-day。
|
||||
// ApparentRA/Dec 为该卫星的地心天体测量赤经赤纬,单位度。
|
||||
// OffsetX/OffsetY 以木星中心为原点,分别沿天球东、北方向为正。
|
||||
// Jovicentric* are Jovicentric J2000 mean-equatorial coordinates and velocities in AU / AU-day.
|
||||
// ApparentRA/Dec are geocentric astrometric right ascension and declination in degrees.
|
||||
// OffsetX/OffsetY are measured from Jupiter's center, positive to celestial east and north.
|
||||
type GalileanSatellitePosition struct {
|
||||
JovicentricX float64
|
||||
JovicentricY float64
|
||||
JovicentricZ float64
|
||||
JovicentricVX float64
|
||||
JovicentricVY float64
|
||||
JovicentricVZ float64
|
||||
|
||||
ApparentRA float64
|
||||
ApparentDec float64
|
||||
EarthDistance float64
|
||||
OffsetXArcsec float64
|
||||
OffsetYArcsec float64
|
||||
OffsetXJupiterR float64
|
||||
OffsetYJupiterR float64
|
||||
OffsetZJupiterR float64
|
||||
InFrontOfJupiter bool
|
||||
}
|
||||
|
||||
// GalileanSatellitesInfo 四颗伽利略卫星视位置 / apparent positions of the four Galilean satellites.
|
||||
type GalileanSatellitesInfo struct {
|
||||
Io GalileanSatellitePosition
|
||||
Europa GalileanSatellitePosition
|
||||
Ganymede GalileanSatellitePosition
|
||||
Callisto GalileanSatellitePosition
|
||||
}
|
||||
|
||||
// Satellites 木星四颗伽利略卫星视位置 / apparent positions of Jupiter's four Galilean satellites.
|
||||
//
|
||||
// date 表示观测绝对时刻;内部使用该时刻对应的 TT/TDB 历元做 L1 星历求值。
|
||||
// date is the observing instant; internally the corresponding TT/TDB epoch is used for the L1 ephemeris evaluation.
|
||||
func Satellites(date time.Time) GalileanSatellitesInfo {
|
||||
jde := basic.Date2JDE(date.UTC())
|
||||
observations := basic.JupiterGalileanSatelliteObservations(jde)
|
||||
return GalileanSatellitesInfo{
|
||||
Io: galileanSatellitePositionFromBasic(observations[0]),
|
||||
Europa: galileanSatellitePositionFromBasic(observations[1]),
|
||||
Ganymede: galileanSatellitePositionFromBasic(observations[2]),
|
||||
Callisto: galileanSatellitePositionFromBasic(observations[3]),
|
||||
}
|
||||
}
|
||||
|
||||
func galileanSatellitePositionFromBasic(observation basic.JupiterGalileanObservation) GalileanSatellitePosition {
|
||||
return GalileanSatellitePosition{
|
||||
JovicentricX: observation.State.X,
|
||||
JovicentricY: observation.State.Y,
|
||||
JovicentricZ: observation.State.Z,
|
||||
JovicentricVX: observation.State.VX,
|
||||
JovicentricVY: observation.State.VY,
|
||||
JovicentricVZ: observation.State.VZ,
|
||||
|
||||
ApparentRA: observation.RA,
|
||||
ApparentDec: observation.Dec,
|
||||
EarthDistance: observation.Distance,
|
||||
OffsetXArcsec: observation.OffsetXArcsec,
|
||||
OffsetYArcsec: observation.OffsetYArcsec,
|
||||
OffsetXJupiterR: observation.OffsetXJupiterRadii,
|
||||
OffsetYJupiterR: observation.OffsetYJupiterRadii,
|
||||
OffsetZJupiterR: observation.OffsetZJupiterRadii,
|
||||
InFrontOfJupiter: observation.InFrontOfJupiter,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user