9ee2163cc7
- 新增月掩恒星和行星:支持搜索、掩甚点、全球掩带及固定地点轨迹计算 - 支持恒星星表坐标转换、有限盘面行星接触事件和月掩 SVG 输出 - 新增日月食及月掩全球投影图、时间标记和 GeoJSON 地理数据接口 - 扩展日食中心线、南北界及偏食足迹采样,支持极区投影 - 修正站心时角、月出月落、月球视半径、折射和恒星自行计算 - 优化内外行星事件搜索、边界选择、极端输入处理和计算稳定性
58 lines
2.1 KiB
Go
58 lines
2.1 KiB
Go
package svg
|
|
|
|
import "b612.me/astro/internal/svgmap"
|
|
|
|
// EclipseMapProjection 控制全球日月食地图投影;零值根据事件几何选择投影。
|
|
// EclipseMapProjection controls a global eclipse map projection. The zero value selects the projection from the event geometry.
|
|
type EclipseMapProjection string
|
|
|
|
const (
|
|
// EclipseMapProjectionAuto 根据事件几何自动选择投影。
|
|
// EclipseMapProjectionAuto selects a projection from event geometry.
|
|
EclipseMapProjectionAuto EclipseMapProjection = ""
|
|
// EclipseMapProjectionEquirectangular 使用等经纬投影。
|
|
// EclipseMapProjectionEquirectangular uses the equirectangular projection.
|
|
EclipseMapProjectionEquirectangular EclipseMapProjection = "equirectangular"
|
|
// EclipseMapProjectionNorthPolar 使用北极方位等距投影。
|
|
// EclipseMapProjectionNorthPolar uses the north-polar azimuthal equidistant projection.
|
|
EclipseMapProjectionNorthPolar EclipseMapProjection = "north-polar"
|
|
// EclipseMapProjectionSouthPolar 使用南极方位等距投影。
|
|
// EclipseMapProjectionSouthPolar uses the south-polar azimuthal equidistant projection.
|
|
EclipseMapProjectionSouthPolar EclipseMapProjection = "south-polar"
|
|
)
|
|
|
|
func internalEclipseMapProjection(value EclipseMapProjection) svgmap.Projection {
|
|
return svgmap.Projection(value)
|
|
}
|
|
|
|
func validEclipseMapProjection(value EclipseMapProjection) bool {
|
|
switch value {
|
|
case EclipseMapProjectionAuto, EclipseMapProjectionEquirectangular,
|
|
EclipseMapProjectionNorthPolar, EclipseMapProjectionSouthPolar:
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
func eclipseMapProjectionLabel(projection svgmap.Projection, language string) string {
|
|
if language == "en" {
|
|
switch projection {
|
|
case svgmap.ProjectionNorthPolar:
|
|
return "North-polar azimuthal equidistant projection"
|
|
case svgmap.ProjectionSouthPolar:
|
|
return "South-polar azimuthal equidistant projection"
|
|
default:
|
|
return "Equirectangular projection"
|
|
}
|
|
}
|
|
switch projection {
|
|
case svgmap.ProjectionNorthPolar:
|
|
return "北极方位等距投影"
|
|
case svgmap.ProjectionSouthPolar:
|
|
return "南极方位等距投影"
|
|
default:
|
|
return "等经纬投影"
|
|
}
|
|
}
|