이 코드가 오늘 날짜까지 행성 운동의 30도마다의 날짜를 출력하지만, 어떤 이유로 그것이 360도에서 멈추는 것을 원합니다. 왜 코드가 여기에서 멈추고 390도, 420, 450 ...... 등을 통과하지 못합니까?pyephem이 날짜보다 360도 이상 보일 수 있습니까?
from ephem import Venus, Date, degrees, newton
import datetime
v = Venus()
start_date = '2014/2/2 00:00'
v.compute(start_date)
Ls0 = v.hlon
print "VENUS",start_date, Ls0
print ""
arc = 0
while True:
d = start_date
today = datetime.date.today()
arc = arc + degrees('30:00:00')
if d == today:
break
def Ls(date):
v.compute(date)
return degrees(v.hlon - Ls0).norm
def thirty_degrees(date):
return Ls(date) - degrees(arc)
def find_thirty_degrees(start_date):
start_date = Date(start_date)
y0 = Ls(start_date)
y1 = Ls(start_date + 1)
rate = y1 - y0
angle_to_go = degrees(degrees(arc) - y0).norm
closer_date = start_date + angle_to_go/rate
d = newton(thirty_degrees, closer_date, closer_date + 1)
return Date(d)
d = find_thirty_degrees(start_date)
print d, Ls(d)
결과는 :
VENUS 2014년 2월 2일 0시 146 : 05 : 57.6
2014년 2월 20일 11시 27분 19초 30 : 00 : 00.0
2014년 3월 11일 1시 17분 41초 60 : 00 : 00.0
2014년 3월 29일 18시 50분 49초 90 : 00 : 00.0
2014년 4월 17일 15시 55분 27초 120 : 00 : 00.0
2014년 5월 6일 15시 0분 8초 150 : 00 : 00.0
2014년 5월 25일 14시 10분 16초 179 : 59 : 59.9
2014년 6월 13일 12시 2분 34210 : 00 : 00.0
2014년 7월 2일 7시 57분 18초 240 : 00 : 00.0
2014년 7월 21일 1시 36분 5초 270 : 00 : 00.0
2,014/8/8 16:44:49 300 : 00 : 00.0
2014년 8월 27일 5시 27분 54초 330 : 00 : 00.0
2014년 9월 14일 16시 38분 35초 359 : 59 : 59.5
감사합니다. Brandon, vlookup을 사용하여 calc에서 동일한 문제가 발생했습니다. 내가 함께 할 수있는 것을 보게 될 것이고, 잘하면 내가 일할 무언가를 얻을 수있을 것입니다. 당신이 +180도를 의미하는지, 횡단을 발견했는지, 뉴턴()에 대해 좀 더 읽을 필요가 있다고 생각합니다. – Albert