计算日出/日落时如何考虑观察者海拔?
计算任何纬度/经度的日出/设置是没有问题的,但是如何计算海拔而不是海平面???我已经用完了可以尝试的组合,并且花了三天多的时间来寻求帮助
我正在使用 Paul Schlyter 的优秀公共领域 C 源代码,这似乎是最常见的。它确实可以让你设置“太阳应该穿过的高度”,例如 -12 表示航海暮光或 -35/60 等,但我不确定如何修改它以考虑观察者海拔高度。
例如,厄瓜多尔的基多是海拔 2850 米的最高城市之一。
纬度+经度:-78.46784,-0.18065
时区:-5
海拔:2850m
使用卡西欧的计算器(http://keisan.casio.com/exec/system/1224686065),我发现少数几个可以解释海拔高度的计算器之一,它返回以下内容(日期=2017 年 1 月 1 日):
日出=6 :14 Sunset=18:22 Elevation=0m <-我已经可以得到这个
Sunrise=6:05 Sunset=18:30 Elevation=2850m <-但我怎么能得到这个?
我可以通过设置 Altitude=-35/60 (-0.58333) UpperLimb=1.0 获得第一个 (elev=0) 但是如何获得第二个?
我正在使用以下功能:
int sunriset( int year, int month, int day, double lon, double lat,
double altit, int upper_limb, double *trise, double *tset )
/*************************************************************/
/* altit = the altitude which the Sun should cross */
/* Set to -35/60 degrees for rise/set, -6 degrees */
/* for civil, -12 degrees for nautical and -18 */
/* degrees for astronomical twilight. */
/* upper_limb: non-zero -> upper limb, zero -> center */
/* Set to non-zero (e.g. 1) when computing rise/set */
/* times, and to zero when computing start/end of */
/* twilight. */
/**************************************************************/
SUNRISE.C(我已经制作了这个 READY-TO-RUN 示例):使用硬编码的 Quito lat/long/etc:https ://pastebin.com/XSWR2Hby 编译:gcc sunrise.c -o sunrise.exe