Horizontal sundial calculations: Difference between revisions

added FreeBASIC
m (added whitespace before the TOC (table of contents), added a ;Task: (bold) header.)
(added FreeBASIC)
Line 793:
 
end program SunDial</lang>
=={{header|freeBASIC}}==
{{trans|BBC BASIC}}
<lang freebasic>' version 04-11-2016
' compile with: fbc -s console
 
#Macro deg2rad (x)
(x) * Atn(1) / 45
#EndMacro
 
#Macro rad2deg (x)
(x) * 45 / Atn(1)
#EndMacro
 
' ------=< MAIN >=------
 
Dim As Double latitude, longitude, meridian, hra, hla
Dim As ULong h
 
Input " Enter latitude (degrees): ", latitude
Input " Enter longitude (degrees): ", longitude
Input "Enter legal meridian (degrees): ", meridian
 
Print
Print " Time Sun hour angle Dial hour line angle"
 
For h = 6 To 18
hra = h * 15 - longitude + meridian - 180
hla = rad2deg(Atn(Sin(deg2rad(latitude)) * Tan(deg2rad(hra))))
If Abs(hra) > 90 Then hla += 180 * Sgn(hra * latitude)
Print Using "##.## ####.### ####.###"; h; hra; hla
Next
 
' empty keyboard buffer
While InKey <> "" : Wend
Print : Print "hit any key to end program"
Sleep
End</lang>
{{out}}
<pre> Enter latitude (degrees): -4.95
Enter longitude (degrees): -150.5
Enter legal meridian (degrees): -150
 
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|FutureBasic}}==
457

edits