1 'SOLAR.BA by Louis C. Graue 2 'This program displays the azimuth and altitude 3 'of the sun for date, latitude and longitude. 4 'Local sunrise and sunset are also shown. 5 'Coordinates set to Santa Barbara for PDT. 6 'Replace line 175 with your coordinates. 7 'Change lines 400 and 410 for other time zones. 100 CLS 110 PRINT" SOLAR ALTITUDE" 115 PRINT"90";:PRINT@200," 0"; 116 PRINT@242,"0";:PRINT@246,"6";:PRINT@250,"12";:PRINT@254,"18";:PRINT@258,"24"; 120 LINE(14,8)-(110,44),1,B 130 FORI=12TO40STEP4:PSET(15,I):NEXT 135 FORI=12TO40STEP4:PSET(109,I):NEXT 140 FORI=18TO106STEP4:PSET(I,43):NEXT 150 FORI=38TO86STEP24:PSET(I,42):NEXT 160 PRINT@22,"DATE ";DATE$; 170 PRINT@60,""; 175 LA=34.25:LO=119.41 '(replace with your coordinates) 180 PRINTUSING"Lat=##.## Lon=###.##";LA,LO 185 PRINT@100,""; 190 PRINT"Time Azmuth Altitude"; 192 PRINT@140,""; 193 PRINT"---- ------ --------"; 195 PRINT@180," +++ COMPUTING +++"; 285 DEFDBL J 310 KC=57.29578 : SL=SIN(LA/KC) : CL=COS(LA/KC) 320 'For PST change: 400 FOR UT=8TO32; 410 ES=1600+UT*100 330 'For EST change: 400 FOR UT=5TO29; 410 ES=1900+UT*100 340 'For EDT change: 400 FOR UT=4TO28; 410 ES=2000+UT*100 350 M=VAL(LEFT$(DATE$,2)) 360 I=VAL(MID$(DATE$,4,2)) 370 K=VAL(RIGHT$(DATE$,2)) 380 K=K+1900 390 JD=367*K-INT(7*(K+INT((M+9)/12))/4)+INT(275*M/9)+I+1721013.5-.5*SGN(100*K+M-190002.5)+.5 400 FOR UT=7TO31 '(adjust for timezone) 410 ES=1700+UT*100 '(adjust for timezone) 420 IF ES>=2400 THEN ES=ES-2400 430 JT=JD+UT/24 440 T=(JT-2415020)/36525 450 MS=358.476+35999.05*T 460 L=279.691+36000.769*T 470 LS=L+(1.919-.0048*T)*SIN(MS/KC)+.02*SIN(2*MS/KC) 480 IF LS>360 THEN LS=LS-360 490 IF LS>360 THEN 480 500 EP=23.452-.013*T 510 TR=COS(EP/KC)*TAN(LS/KC) 520 SD=SIN(EP/KC)*SIN(LS/KC) 530 RA=ATN(TR)*KC 540 IF RA<0 THEN RA=RA+180 550 IF ABS(LS-RA)>90 THEN RA=RA+180 560 IF RA>360 THEN RA=RA-360 570 DE=ATN(SD/SQR(-1*SD*SD+1)) : CD=COS(DE) 580 GM=6.67170278+.0657098232*(JD-2433282.5)+1.0027379093*UT 590 OM=372.1133-.0529539*(JT-2433282.5) 600 E=.00029*SIN(OM/KC) 610 GA=GM+E 620 LH=15*(GA-RA/15)-LO : SH=SIN(LH/KC) : CH=COS(LH/KC) 630 SA=SL*SD+CL*CD*CH 640 AL=ATN(SA/SQR(-1*SA*SA+1))*KC 655 AZ=ATN(SIN(LH/KC)/(COS(LH/KC)*SIN(LA/KC)-TAN(DE)*COS(LA/KC)))*KC 656 IF AZ<0 THEN AZ=AZ+180 657 IF ES>1200 THEN AZ=AZ+180 658 GOSUB 900 659 IFA1*AL<0THENGOSUB 950:S1=1 660 A1=AL 665 IF AL>0 THEN GOSUB 690 670 NEXT UT 680 GOTO 780 690 ' 730 T1=ES/100 740 C=4*T1+14 750 R=INT(44-.4*AL+.5) 760 PSET(C,R) 770 RETURN 780 PRINT@224,"";:PRINTUSING"Sunrise ####";SR 790 PRINT@264,"";:PRINTUSING"Sunset ####";SS 800 GOTO 800 900 PRINT@180,""; 905 IF ES<100 THEN 920 910 PRINT USING"#### ###.# ###.#";ES,AZ,AL 920 RETURN 950 MO = INT(60*ABS(A1)/(ABS(A1)+AL)+.5):EV=INT(60*A1/(ABS(AL)+A1)+.5) 960 IFS1=0THENSR=ES-100+MO:IFMO=60THENSR=SR+40 970 IFS1=1THENSS=ES-100+EV:IFEV=60THENSS=SS+40 980 RETURN