62 lines
3.7 KiB
Go
62 lines
3.7 KiB
Go
|
|
package basic
|
||
|
|
|
||
|
|
import ()
|
||
|
|
|
||
|
|
// LunarEclipseWithInstance 指定星历实例的月食(TT,Danjon),计算失败时食甚为 NaN / lunar eclipse with an explicit instance; TT maximum is NaN on failure.
|
||
|
|
func LunarEclipseWithInstance(seedJDE float64, inst *Instance) LunarEclipseResult {
|
||
|
|
return LunarEclipseDanjonWithInstance(seedJDE, inst)
|
||
|
|
}
|
||
|
|
|
||
|
|
// LunarEclipseDanjonWithInstance 指定星历实例的 Danjon 月食 / Danjon lunar eclipse with an explicit ephemeris instance.
|
||
|
|
func LunarEclipseDanjonWithInstance(seedJDE float64, inst *Instance) LunarEclipseResult {
|
||
|
|
return lunarEclipseWithInstance(seedJDE, lunarEclipseShadowDanjon, inst)
|
||
|
|
}
|
||
|
|
|
||
|
|
// LunarEclipseChauvenetWithInstance 指定星历实例的 Chauvenet 月食 / Chauvenet lunar eclipse with an explicit ephemeris instance.
|
||
|
|
func LunarEclipseChauvenetWithInstance(seedJDE float64, inst *Instance) LunarEclipseResult {
|
||
|
|
return lunarEclipseWithInstance(seedJDE, lunarEclipseShadowChauvenet, inst)
|
||
|
|
}
|
||
|
|
|
||
|
|
func lunarEclipseWithInstance(seedJDE float64, shadowModel lunarEclipseShadowModel, inst *Instance) LunarEclipseResult {
|
||
|
|
if inst == nil {
|
||
|
|
return lunarEclipse(seedJDE, shadowModel)
|
||
|
|
}
|
||
|
|
fullMoonJDE := CalcMoonSHByJDEWithInstance(seedJDE, 1, inst)
|
||
|
|
return lunarEclipseFromFullMoon(fullMoonJDE, shadowModel, func(jde float64) lunarShadowState {
|
||
|
|
return computeLunarShadowStateWithInstance(jde, shadowModel, inst)
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
// LunarEclipseShadowGeometryAtWithInstance 指定星历实例的 Danjon 地影几何 / Danjon shadow geometry with an explicit ephemeris instance.
|
||
|
|
func LunarEclipseShadowGeometryAtWithInstance(maximumJDE float64, inst *Instance) LunarEclipseShadowGeometry {
|
||
|
|
return lunarEclipseShadowGeometryAtWithInstance(maximumJDE, lunarEclipseShadowDanjon, inst)
|
||
|
|
}
|
||
|
|
|
||
|
|
// LunarEclipseShadowGeometryChauvenetAtWithInstance 指定星历实例的 Chauvenet 地影几何 / Chauvenet shadow geometry with an explicit ephemeris instance.
|
||
|
|
func LunarEclipseShadowGeometryChauvenetAtWithInstance(maximumJDE float64, inst *Instance) LunarEclipseShadowGeometry {
|
||
|
|
return lunarEclipseShadowGeometryAtWithInstance(maximumJDE, lunarEclipseShadowChauvenet, inst)
|
||
|
|
}
|
||
|
|
|
||
|
|
// LunarEclipseShadowGeometryAtModelWithInstance 指定星历实例及影半径模型的地影几何 / shadow geometry with an explicit instance and shadow-radius model.
|
||
|
|
func LunarEclipseShadowGeometryAtModelWithInstance(maximumJDE float64, model LunarEclipseShadowModel, inst *Instance) LunarEclipseShadowGeometry {
|
||
|
|
if model == LunarEclipseShadowModelChauvenet {
|
||
|
|
return LunarEclipseShadowGeometryChauvenetAtWithInstance(maximumJDE, inst)
|
||
|
|
}
|
||
|
|
return LunarEclipseShadowGeometryAtWithInstance(maximumJDE, inst)
|
||
|
|
}
|
||
|
|
|
||
|
|
// LunarEclipseDiagramWithInstance 指定星历实例的 Danjon 月食穿影图 / Danjon lunar eclipse diagram with an explicit ephemeris instance.
|
||
|
|
func LunarEclipseDiagramWithInstance(seedJDE float64, options LunarEclipseDiagramOptions, inst *Instance) LunarEclipseDiagramResult {
|
||
|
|
return LunarEclipseDiagramDanjonWithInstance(seedJDE, options, inst)
|
||
|
|
}
|
||
|
|
|
||
|
|
// LunarEclipseDiagramDanjonWithInstance 指定星历实例的 Danjon 月食穿影图 / Danjon lunar eclipse diagram with an explicit ephemeris instance.
|
||
|
|
func LunarEclipseDiagramDanjonWithInstance(seedJDE float64, options LunarEclipseDiagramOptions, inst *Instance) LunarEclipseDiagramResult {
|
||
|
|
return lunarEclipseDiagramWithInstance(seedJDE, lunarEclipseShadowDanjon, options, inst)
|
||
|
|
}
|
||
|
|
|
||
|
|
// LunarEclipseDiagramChauvenetWithInstance 指定星历实例的 Chauvenet 月食穿影图 / Chauvenet lunar eclipse diagram with an explicit ephemeris instance.
|
||
|
|
func LunarEclipseDiagramChauvenetWithInstance(seedJDE float64, options LunarEclipseDiagramOptions, inst *Instance) LunarEclipseDiagramResult {
|
||
|
|
return lunarEclipseDiagramWithInstance(seedJDE, lunarEclipseShadowChauvenet, options, inst)
|
||
|
|
}
|