diff options
author | Glenn Morris <rgm@gnu.org> | 2011-04-19 19:09:06 -0700 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2011-04-19 19:09:06 -0700 |
commit | f195c582d8e568fac9a161c6c4fc96de87a30ea7 (patch) | |
tree | 7bdd3a4967c0fb0de8500272747a30688081ffbf /lisp/calendar/solar.el | |
parent | 6b1f6ce90ed255e05fb843cde2f738a88b9fef14 (diff) | |
download | emacs-f195c582d8e568fac9a161c6c4fc96de87a30ea7.tar.gz |
solar.el fixes.
* lisp/calendar/solar.el (solar-horizontal-coordinates):
Use the longitude argument rather than `calendar-longitude' (15yr old bug).
(solar-date-next-longitude): Remove unused locals.
Diffstat (limited to 'lisp/calendar/solar.el')
-rw-r--r-- | lisp/calendar/solar.el | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el index 31aed0484d7..84a1544d709 100644 --- a/lisp/calendar/solar.el +++ b/lisp/calendar/solar.el @@ -453,7 +453,7 @@ height (between -180 and 180) are both in degrees." (st (+ solar-sidereal-time-greenwich-midnight (* ut 1.00273790935))) ;; Hour angle (in degrees). - (ah (- (* st 15) (* 15 (car ec)) (* -1 (calendar-longitude)))) + (ah (- (* st 15) (* 15 (car ec)) (* -1 longitude))) (de (cadr ec)) (azimuth (solar-atn2 (- (* (solar-cosine-degrees ah) (solar-sin-degrees latitude)) @@ -771,26 +771,22 @@ day numbers. The values of `calendar-daylight-savings-starts', `calendar-daylight-savings-starts-time', `calendar-daylight-savings-ends', `calendar-daylight-savings-ends-time', `calendar-daylight-time-offset', and `calendar-time-zone' are used to interpret local time." - (let* ((long) - (start d) - (start-long (solar-longitude d)) - (next (mod (* l (1+ (floor (/ start-long l)))) 360)) - (end (+ d (* (/ l 360.0) 400))) - (end-long (solar-longitude end))) - (while ; bisection search for nearest minute - (< 0.00001 (- end start)) - ;; start <= d < end + (let ((start d) + (next (mod (* l (1+ (floor (/ (solar-longitude d) l)))) 360)) + (end (+ d (* (/ l 360.0) 400))) + long) + ;; Bisection search for nearest minute. + (while (< 0.00001 (- end start)) + ;; start <= d < end ;; start-long <= next < end-long when next != 0 - ;; when next = 0, we look for the discontinuity (start-long is near 360 - ;; and end-long is small (less than l). + ;; when next = 0, look for the discontinuity (start-long is near 360 + ;; and end-long is small (less than l)). (setq d (/ (+ start end) 2.0) long (solar-longitude d)) (if (or (and (not (zerop next)) (< long next)) (and (zerop next) (< l long))) - (setq start d - start-long long) - (setq end d - end-long long))) + (setq start d) + (setq end d))) (/ (+ start end) 2.0))) ;; FIXME but there already is solar-sunrise-sunset. |