home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
basic
/
astrmenu.lbr
/
SUNNY.BZS
/
SUNNY.BAS
Wrap
BASIC Source File
|
1987-04-26
|
6KB
|
270 lines
1 PRINT "FROM THE APRIL 1984 ASTRONOMY, PAGES 75-77, AS CORRECTED IN THE"
2 PRINT "JULY 1984 ASTRONOMY, PAGES 33-34."
9 PRINT
100 PRINT "--PURPOSE"
102 PRINT
104 PRINT "THIS PROGRAM CALCULATES THE BEGINNING OF DAWN (ASTRONOMICAL,"
106 PRINT "NAUTICAL, AND CIVIL), SUNRISE, SUNSET, AND THE END OF DUSK"
108 PRINT "(CIVIL, NAUTICAL, AND ASTRONOMICAL). IT IS ACCURATE TO"
110 PRINT "WITHIN A MINUTE OR SO DURING THE SECOND HALF OF THE TWENTIETH"
112 PRINT "CENTURY. ITS PRECISION DEGRADES NEAR THE POLES WHEN THE SUN"
114 PRINT "REMAINS CLOSE TO THE HORIZON FOR LONG PERIODS OF TIME."
116 PRINT
118 PRINT "--INPUTS--"
120 PRINT
122 PRINT "LAT. : LATITUDE EXPRESSED IN DEGREES, MINUTES, AND SECONDS"
124 PRINT " WHERE NORTH IS POSITIVE AND SOUTH IS NEGATIVE. FOR"
126 PRINT " EXAMPLE, 30.0029 REPRESENTS 30 DEGREES, 00 MINUTES,"
128 PRINT " 29 SECONDS NORTH LATITUDE."
130 PRINT
132 PRINT "LON. : LONGITUDE EXPRESSED IN DEGREES, MINUTES, AND SECONDS"
134 PRINT " WHERE WEST IS POSITIVE AND EAST IS NEGATIVE. FOR"
136 PRINT " EXAMPLE, 90.1108 REPRESENTS 90 DEGREES, 11 MINUTES,"
138 PRINT " 08 SECONDS WEST LONGITUDE."
140 PRINT
142 PRINT "YEAR : ENTER A NUMBER BETWEEN 1951 AND 2000 INCLUSIVE."
144 PRINT
146 PRINT "MONTH : ENTER A NUMBER BETWEEN 1 AND 12 INCLUSIVE."
148 PRINT
150 PRINT "DAY : ENTER A NUMBER BETWEEN 1 AND 31 INCLUSIVE."
152 PRINT
154 PRINT "ZONE : TIME ZONE, I.E., THE TIME IN HOURS AND MINUTES THAT"
156 PRINT " IS ADDED TO WALL CLOCK TIME TO YIELD UNIVERSAL TIME."
158 PRINT " IN THE FORTY-EIGHT CONTIGUOUS UNITED STATES, REFER"
160 PRINT " TO THE TABLE BELOW."
162 PRINT
164 PRINT " STANDARD DAYLIGHT"
166 PRINT
168 PRINT " EASTERN 5.00 4.00"
170 PRINT " CENTRAL 6.00 5.00"
172 PRINT " MOUNTAIN 7.00 6.00"
174 PRINT " PACIFIC 8.00 7.00"
176 PRINT
178 PRINT "--OUTPUTS--"
180 PRINT
182 PRINT "OUTPUTS ARE EXPRESSED IN HOURS AND MINUTES ON A TWENTY-FOUR"
184 PRINT "HOUR BASIS. FOR EXAMPLE, 6.25 REPRESENTS 6:25 A.M. AND 18.25"
186 PRINT "REPRESENTS 6:25 P.M."
188 PRINT
190 PRINT "THE OUTPUT 0.00 IS A SPECIAL CASE. IT INDICATES THAT THE"
192 PRINT "PHENOMENON DOES NOT OCCUR ON THE SPECIFIC DATE. FOR EXAMPLE,"
194 PRINT "THE SUN DOES NOT SET IN MIDSUMMER AT HIGH LATITUDES."
196 PRINT
198 REM
200 REM - CONSTANTS
202 REM
204 A=1.5708
206 B=3.14159
208 C=4.71239
210 D=6.28319
212 REM
214 REM - INPUTS
216 REM
218 INPUT "LAT. ";Z
220 GOSUB 378
222 E=Z*.0174533
224 REM
226 INPUT "LON. ";Z
228 GOSUB 378
230 F=Z*.0174533
232 REM
234 INPUT "YEAR ";H
235 IF H=0 THEN RUN "ASTRMENU.BAS"
236 INPUT "MONTH ";I
238 INPUT "DAY ";J
240 REM
242 INPUT "ZONE ";Z
244 GOSUB 378
246 G=Z*.261799
248 REM
250 REM - DAY OF YEAR
252 REM
254 K=INT((I+9)/12)
256 X=H/4
258 Y=INT(X)
260 Z=X-Y
262 IF Z=0 THEN 266
264 K=K*2
266 H=INT(275*I/9)
268 H=H+J-K-30
270 REM
272 REM - RISING PHENOMENA
274 REM
276 PRINT " "
278 REM
280 I=0
282 J=A
284 GOSUB 404
286 REM
288 R=-.309017
290 GOSUB 510
292 PRINT "A DAWN ";V
294 REM
296 R=-.207912
298 GOSUB 510
300 PRINT "N DAWN ";V
302 REM
304 R=-.104528
306 GOSUB 510
308 PRINT "C DAWN ";V
310 REM
312 R=-.0145439
314 GOSUB 510
316 PRINT "SUNRIS ";V
318 REM
320 REM - SETTING PHENOMRNA
322 REM
324 I=1
326 J=C
328 GOSUB 404
330 REM
332 R=-.0145439
334 GOSUB 510
336 PRINT "SUNSET ";V
338 REM
340 R=-.104528
342 GOSUB 510
344 PRINT "C DUSK ";V
346 REM
348 R=-.207912
350 GOSUB 510
352 PRINT "N DUSK ";V
354 REM
356 R=-.309017
358 GOSUB 510
360 PRINT "A DUSK ";V
362 REM
364 PRINT " "
366 PRINT "------------"
368 PRINT " "
369 PRINT "TYPE 0 AT THE NEXT PROMPT TO END" : PRINT " "
370 GOTO 234
372 REM
374 REM - SEXAGESIMAL TO DECIMAL
376 REM
378 W=1
380 IF Z>=0 THEN 386
382 W=-1
384 Z=ABS(Z)
386 X=INT(Z)
388 Z=(Z-X)*100
390 Y=INT(Z)
392 Z=(Z-Y)*100
394 Z=(X+Y/60+Z/3600)*W
396 RETURN
398 REM
400 REM - APPROXIMATE TIME
402 REM
404 K=H+((J+F)/D)
406 REM
408 REM - SOLAR MEAN ANOMALY
410 REM
412 L=K*.017202
414 L=L-.0574039
416 REM
418 REM - SOLAR TRUE LONGITUDE
420 REM
422 Z=SIN(L)
424 M=L+.0334405*Z
426 Z=SIN(2*L)
428 M=M+3.49066E-04*Z
430 M=M+4.93289
432 REM
434 REM - QUADRANT DETERMINATION
436 REM
438 Z=M
440 GOSUB 608
442 M=Z
444 X=M/A
446 Y=INT(X)
448 Z=X-Y
450 IF Z<>0 THEN 454
452 M=M+4.84814E-06
454 N=2
456 IF M>C THEN 470
458 N=1
460 IF M>A THEN 470
462 N=0
464 REM
466 REM - SOLAR RIGHT ASCENSION
468 REM
470 P=.91746*TAN(M)
472 P=ATN(P)
474 REM
476 REM - QUADRANT ADJUSTMENT
478 REM
480 IF N=0 THEN 496
482 IF N=2 THEN 488
484 P=P+B
486 GOTO 496
488 P=P+D
490 REM
492 REM - SOLAR DECLINATION
494 REM
496 Q=.39782*SIN(M)
498 Q=Q/SQR(-Q*Q+1)
500 Q=ATN(Q)
502 RETURN
504 REM
506 REM - COORDINATE CONVERSION
508 REM
510 S=R-(SIN(Q)*SIN(E))
512 S=S/(COS(Q)*COS(E))
514 REM
516 REM - NULL PHENOMENON
518 REM
520 Z=ABS(S)
522 IF Z<=1 THEN 534
524 V=0
526 RETURN
528 REM
530 REM - ADJUSTMENT
532 REM
534 S=S/SQR(-S*S+1)
536 S=-ATN(S)+A
538 IF I=1 THEN 548
540 S=D-S
542 REM
544 REM - LOVAL APPARENT TIME
546 REM
548 Z=.0172028*K
550 T=S+P-Z-1.73364
552 REM
554 REM - UNIVERSAL TIME
556 REM
558 U=T+F
560 REM
562 REM - WALL CLOCK TIME
564 REM
566 V=U-G
568 REM
570 REM - DECIMAL TO SEXAGESIMAL
572 REM
574 Z=V
576 GOSUB 608
578 Z=Z*3.81972
580 V=INT(Z)
582 W=(Z-V)*60
584 X=INT(W)
586 Y=W-X
588 IF Y<.5 THEN 592
590 X=X+1
592 IF X<60 THEN 598
594 V=V+1
596 X=0
598 V=V+X/100
600 RETURN
602 REM
604 REM - NORMALIZATION
606 REM
608 IF Z>=0 THEN 614
610 Z=Z+D
612 GOTO 608
614 IF Z<D THEN 620
616 Z=Z-D
618 GOTO 614
620 RETURN
622 RUN "ASTRMENU.BAS"
THEN 614
610 Z=Z+D
6