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.
This commit is contained in:
parent
6b1f6ce90e
commit
f195c582d8
2 changed files with 18 additions and 16 deletions
|
@ -1,3 +1,9 @@
|
|||
2011-04-20 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* calendar/solar.el (solar-horizontal-coordinates):
|
||||
Use the longitude argument rather than `calendar-longitude'.
|
||||
(solar-date-next-longitude): Remove unused locals.
|
||||
|
||||
2011-04-19 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* progmodes/octave-mod.el (octave-in-comment-p, octave-in-string-p)
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Add table
Reference in a new issue