用于天文学的 Swift 包。
SwiftAstro 是一个 Swift 包,它提供:
SwiftAstro.brightStarCatalog
属性提供对 BrightStarCatalog
实例的访问。
stars
属性提供对目录中所有恒星的访问。该目录也可以通过哈佛修订星号 (HR) 进行下标访问。
示例: 查找织女星(HR 编号 7001)的视星等。
if let vega = SwiftAstro.brightStarCatalog[7001] {
print(vega.visualMagnitude). // 0.03
}
示例: 查找所有视星等为 1.0 或更低的恒星。
let brightest = SwiftAstro.brightStarCatalog.stars.filter {
star in
guard let magnitude = star.visualMagnitude else {
return false
}
return magnitude <= 1.0
}
行星由 Planet
枚举类型列举。heliocentricPosition
函数返回给定儒略日的行星日心位置。该算法对 VSOP87B 理论中的项进行求和,结果以球坐标形式给出。
示例: 计算儒略日 2460156.0(2023 年 7 月 30 日中午)火星的位置。
let t = SwiftAstro.Time(julianDays: 2460156.0)
let posn = SwiftAstro.Planet.mars.heliocentricPosition(t: t)
给出经度 -3.0927667317253196 弧度,纬度 0.023473327404147742 弧度,以及半径 1.6478994217781984 天文单位(火星和太阳之间的距离)。
计算从地球观察行星时,相对于恒星背景的行星视地心位置。
示例: 计算 2024 年 2 月 10 日 19:00 UTC 金星的位置。
let t = SwiftAstro.Time(2024, 02, 10, 19, 0, 0)
let (lon, lat) = SwiftAstro.Planet.venus.geocentricPosition(t: t)
print(lon.rightAscension.description, lat.degreesMinutesSeconds)
给出行星的赤经为 19 时 36 分 37.569 秒,赤纬为 -021° 25' 22.986"。
与 JPL Horizons(https://ssd.jpl.nasa.gov/horizons/)计算出的 19 时 36 分 39.41 秒和 -21° 25' 21.2" 进行比较。
计算从地球观察月球或太阳时,相对于恒星背景的月球或太阳视地心位置。
示例: 计算 2024 年 7 月 1 日 15:00 UTC 月球和太阳的位置。
let t = SwiftAstro.Time(2024, 7, 1, 15, 0, 0)
let (raSun, declSun) = SwiftAstro.sun.geocentricPosition(t: t)
print(raSun.rightAscension) // 06h 43m 08.592s
print(declSun.degreesMinutesSeconds) // 023° 03' 53.911"
let (raMoon, declMoon) = SwiftAstro.moon.geocentricPosition(t: t)
print(raMoon.rightAscension) // 02h 49m 21.979s
print(declMoon.degreesMinutesSeconds) // 019° 14' 35.610"
为了比较,JPL Horizons 给出:
冥王星的日心和地心位置可从 SwiftAstro.pluto
结构体中获得。
SwiftAstro.Distance
数据结构表示天文距离。 基础测量单位是天文单位。 初始化器和访问器也适用于光年、光分、光秒、米和秒差距。
示例: 对于 1 光年的距离,查找以天文单位和秒差距表示的相应距离。
let distance = SwiftAstro.Distance(lightYears: 1.0)
let au = distance.astronomicalUnits // 63241.07708426628
let pc = distance.parsecs // 0.30660139378555057
SwiftAstro.Angle
数据结构表示角度测量。 基础单位是弧度。 访问器和初始化器也适用于度数和角秒。 此外,SwiftAstro.Angle.RightAscension
属性提供了以赤经形式查看角度的方式。 类似地,SwiftAstro.Angle.DegreesMinutesSeconds
属性提供了以 DMS 形式查看角度的方式。 角度也可以使用赤经和 DMS 值进行初始化。
示例: 查找天狼星(耶鲁亮星目录中编号为 2491 的恒星)的赤经和赤纬。
if let sirius = SwiftAstro.brightStarCatalog[2491],
let ra = sirius.rightAscension?.rightAscension,
let dec = sirius.declination?.degreesMinutesSeconds
{
print (ra) // 06h 45m 08.900s
print (dec) // -016° 42' 58.000"
}
SwiftAstro.Time
数据结构表示时间上的一个时刻。 基础单位是儒略日,它测量自公元前 4713 年 1 月 1 日中午以来的连续天数。
访问器和初始化器也适用于相应的 Foundation Date
和 timeIntervalSinceReferenceDate
。
为公历中 UTC 日期/时间提供了一个便捷的初始化器:SwiftAstro.Date(2024, 5,29, 18, 30, 0)
初始化为 2024 年 5 月 29 日 18:30 UTC。
nutation
实例方法返回一对 SwiftAstro.Angle
值。 第一个值表示实例时间的经度章动,第二个值表示倾斜度章动。 计算方法是米乌斯 (Meeus) 简化版的“1980 IAU 章动理论”,省略了小项(参见 Meeus,1991,第 132 页)。
meanObliquityOfTheEcliptic
实例方法返回一个 SwiftAstro.Angle
值,表示实例时间的平均黄道倾角。 计算方法归功于拉斯卡 (Laskar, 1986),引用于米乌斯 (Meeus, 1991, 第 135 页)。
SphericalPosition
结构体表示物体的相对球坐标,以经度、纬度和半径(到原点的距离)表示。
SwiftAstro.Distance.metersPerAstronomicalUnit
SwiftAstro.Distance.metersPerLightYear
SwiftAstro.Distance.metersPerLightMinute
SwiftAstro.Distance.metersPerLightSecond
SwiftAstro.Distance.astronomicalUnitsPerParsec
SwiftAstro.Distance.astronomicalUnitsPerLightYear
SwiftAstro.Distance.lightSecondsPerLightYear
SwiftAstro.Distance.lightSecondsPerAstronomicalUnit
SwiftAstro.Angle.meanObliquityOfEclipticAtJ2000
Bretagnon, P. 和 Francou, G. (1988) 'Planetary Solutions VSOP87', Astronomy and Astrophysics, vol. 202(309B)。
Meeus, J. (1991) 'Astronomical Algorithms', Willmann-Bell: Viriginia, USA。
Hoffleit, D. 和 Warren Jr, W. H. (1991) 'Yale Bright Star Catalog: 5th Revised Edition', 可在 http://cdsarc.u-strasbg.fr/viz-bin/cat/V/50 获取。