Jump to content

Horizontal sundial calculations: Difference between revisions

Added BBC BASIC
(Simpler D version)
(Added BBC BASIC)
Line 143:
HR= +6; HRA= +90.500; HLA= +84.225
</pre>
 
=={{header|BBC BASIC}}==
<lang BBC BASIC> INSTALL @lib$+"FNUSING"
INPUT "Enter latitude (degrees) : " latitude
INPUT "Enter longitude (degrees) : " longitude
INPUT "Enter legal meridian (degrees): " meridian
PRINT '" Time", "Sun hour angle", "Dial hour line angle"
FOR hour = 6 TO 18
hra = 15*hour - longitude + meridian - 180
hla = DEG(ATN(SIN(RAD(latitude)) * TAN(RAD(hra))))
IF ABS(hra) > 90 hla += 180 * SGN(hra * latitude)
PRINT FNusing("##.##", hour), FNusing(" ####.### ", hra), FNusing(" ####.###", hla)
NEXT hour</lang>
 
Output (note the correct '''negative''' value for 18:00):
<pre>Enter latitude (degrees) : -4.95
Enter longitude (degrees) : -150.5
Enter legal meridian (degrees): -150.0
 
Time Sun hour angle Dial hour line angle
6.00 -89.500 84.225
7.00 -74.500 17.283
8.00 -59.500 8.334
9.00 -44.500 4.847
10.00 -29.500 2.795
11.00 -14.500 1.278
12.00 0.500 -0.043
13.00 15.500 -1.371
14.00 30.500 -2.910
15.00 45.500 -5.018
16.00 60.500 -8.671
17.00 75.500 -18.451
18.00 90.500 -95.775</pre>
 
=={{header|C}}==
Cookies help us deliver our services. By using our services, you agree to our use of cookies.