summaryrefslogtreecommitdiff
path: root/lisp/calendar/solar.el
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2011-04-19 19:09:06 -0700
committerGlenn Morris <rgm@gnu.org>2011-04-19 19:09:06 -0700
commitf195c582d8e568fac9a161c6c4fc96de87a30ea7 (patch)
tree7bdd3a4967c0fb0de8500272747a30688081ffbf /lisp/calendar/solar.el
parent6b1f6ce90ed255e05fb843cde2f738a88b9fef14 (diff)
downloademacs-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.el28
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.