Horizontal sundial calculations: Difference between revisions
Content added Content deleted
m (added whitespace before the TOC (table of contents), added a ;Task: (bold) header.) |
(added FreeBASIC) |
||
Line 793: | Line 793: | ||
end program SunDial</lang> |
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}}== |
=={{header|FutureBasic}}== |