这个问题在三年多前就被提出过了.给出了答案,但是我发现解决方案存在问题.
下面的代码在R.我已经将它移植到另一种语言,但是直接在R中测试了原始代码,以确保问题不在于我的移植.
sunPosition <- function(year, month, day, hour=12, min=0, sec=0,
lat=46.5, long=6.5) {
twopi <- 2 * pi
deg2rad <- pi / 180
# Get day of the year, e.g. Feb 1 = 32, Mar 1 = 61 on leap years
month.days <- c(0,31,28,31,30,31,30,31,31,30,31,30)
day <- day + cumsum(month.days)[month]
leapdays <- year %% 4 == 0 & (year %% 400 == 0 | year %% 100 != 0) & day >= 60
day[leapdays] <- day[leapdays] + 1
# …Run Code Online (Sandbox Code Playgroud) 我正在使用PyEphem并且想要计算阴影的长度(假设一个单位长度的棍子被种植在地上).长度将由cot(phi)给出,其中phi是太阳高度角(如果我错了,请纠正我).我不确定在太阳上使用哪个字段?在下面的示例中,我使用角度alt:
import ephem, math
o = ephem.Observer()
o.lat, o.long = '37.0625', '-95.677068'
sun = ephem.Sun()
sunrise = o.previous_rising(sun, start=ephem.now())
noon = o.next_transit(sun, start=sunrise)
shadow = 1 / math.tan(sun.alt)
Run Code Online (Sandbox Code Playgroud)
请检查我的解释如下:
最后,考虑到ephem.Observer(),我很困惑如何使用PyEphem从阴影长度向下工作到下一次太阳将投射该长度的阴影.
我很感激这方面的帮助.