SunCalc

用于计算太阳和月亮位置的 Swift 包

描述

SunCalc 是一个 Swift 包,用于计算给定位置和时间的太阳位置、日光阶段(日出、日落、黄昏等的时间)、月亮位置和月相。

大多数计算基于 Astronomy Answers 网站上关于太阳位置行星位置的优秀文章中给出的公式。 您可以在 维基百科上的暮光文章中阅读有关 SunCalc 计算的不同暮光阶段的信息。

用法

// get today's sunlight times for London

let date = Date()

let sunCalc = SunCalc.getTimes(date: date, latitude: 51.5, longitude: -0.1)
if let sunrise = sunCalc.sunrise {
	debugPrint("sunrise: \(sunrise.formatted())")
}

if let sunset = sunCalc.sunset {
	debugPrint("sunset: \(sunset.formatted())")
}

let sunPos = SunCalc.getSunPosition(timeAndDate: date, latitude: 51.5, longitude: -0.1)
let sunriseAzimuth = sunPos.azimuth * 180 / Constants.PI()
debugPrint("sunriseAzimuth: \(sunriseAzimuth)")

参考

日光时间

SunCalc.getTimes(/*Date*/ date, /*Number*/ latitude, /*Number*/ longitude, /*Number (default=0)*/ height)

返回一个具有以下属性的对象(每个属性都是一个 Date 对象)

属性 描述
sunrise 日出(太阳的上边缘出现在地平线上)
sunriseEnd 日出结束(太阳的下边缘接触地平线)
goldenHourEnd 早晨黄金时段(柔和的光线,摄影的最佳时间)结束
solarNoon 太阳正午(太阳处于最高位置)
goldenHour 傍晚黄金时段开始
sunsetStart 日落开始(太阳的下边缘接触地平线)
sunset 日落(太阳消失在地平线下,傍晚民用暮光开始)
dusk 黄昏(傍晚航海暮光开始)
nauticalDusk 航海黄昏(傍晚天文暮光开始)
night 夜晚开始(足够黑暗,可以进行天文观测)
nadir 天底(夜晚最黑暗的时刻,太阳处于最低位置)
nightEnd 夜晚结束(早晨天文暮光开始)
nauticalDawn 航海黎明(早晨航海暮光开始)
dawn 黎明(早晨航海暮光结束,早晨民用暮光开始)
SunCalc.addTime(/*Number*/ angleInDegrees, /*String*/ morningName, /*String*/ eveningName)

当太阳达到给定角度时,向 SunCalc.getTimes 返回的结果添加自定义时间。

SunCalc.times 属性包含所有当前定义的时间。

太阳位置

SunCalc.getPosition(/*Date*/ timeAndDate, /*Number*/ latitude, /*Number*/ longitude)

返回一个具有以下属性的对象

月亮位置

SunCalc.getMoonPosition(/*Date*/ timeAndDate, /*Number*/ latitude, /*Number*/ longitude)

返回一个具有以下属性的对象

月亮光照

SunCalc.getMoonIllumination(/*Date*/ timeAndDate)

返回一个具有以下属性的对象

月相值应这样解释

相位 名称
0 新月
眉月
0.25 上弦月
盈凸月
0.5 满月
亏凸月
0.75 下弦月
残月

通过从 angle 中减去 parallacticAngle,可以获得月亮亮边缘的天顶角(逆时针方向)。天顶角可用于从观察者的角度绘制月亮形状(例如,月亮仰卧)。

月出和月落时间

SunCalc.getMoonTimes(/*Date*/ date, /*Number*/ latitude, /*Number*/ longitude[, inUTC])

返回一个具有以下属性的对象

默认情况下,它将在本地用户的白天(从 0 到 24 小时)搜索月出和月落。 如果将 inUTC 设置为 true,它将改为从 0 到 24 UTC 小时搜索指定的日期。

许可证

本项目基于 Shaun Meredith 编写的源代码 https://github.com/shanus/suncalc-swift,该代码基于 Vladimir Agafonkin ("mourner") 的原始 Javascript suncalc,可在 https://github.com/mourner/suncalc 获得