044f2f4381
- 新增半解析、旧模型、自定义与多源堆叠星历实例,提供 Context、Instance、SPK 读取及状态与视位置计算 - 统一太阳、月球和行星实例接口,扩展黄经穿越、留、相位、最近角距、偕日可见、任意高度升落、轨道节点及凌日等天象查询 - 完善日月食、月掩与凌日的月缘剖面、有限盘面接触、站心修正、局地可见性、全球路径和地图输出 - 新增 SVG、GeoJSON、KML 天象输出及凌日、月掩和月缘地形相关缓存与几何求解 - 新增恒星星表导入与查询,支持 CSV、Hipparcos、BSC5、Stellarium 等格式及名称、交叉标识、锥面检索和星等过滤 - 补充 IAU 2006、地球定向、折射消光、大气观测、轨道传播及半解析行星/月球数据支持 - 将默认未来民用时标切换为 TimeScaleLeapHour,更新 2027–2400 农历速查表、中文日期解析和时区边界处理 - 增加事件基线、跨模型回归、几何边界、月缘地形和输出契约测试,完善中英文手册、示例资源、NOTICE 与忽略规则
76 lines
2.8 KiB
Go
76 lines
2.8 KiB
Go
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.
|
|
func (module *Jupiter) Satellites(date time.Time) GalileanSatellitesInfo {
|
|
jde := basic.UTC2TT(basic.Date2JD(date.UTC()))
|
|
observations := basic.JupiterGalileanSatelliteObservationsWithInstance(jde, module.inst)
|
|
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,
|
|
}
|
|
}
|