Horizontal sundial calculations: Difference between revisions

→‎{{header|AutoHotkey}}: AutoHotkey example added
(Add Seed7 example)
(→‎{{header|AutoHotkey}}: AutoHotkey example added)
Line 143:
HR= +6; HRA= +90.500; HLA= +84.225
</pre>
 
=={{header|AutoHotkey}}==
{{trans|F#}}
AutoHotkey is not a command-line programming language, let me make that clear. However, in translating the F# I found that the command line really is best for this type of app. The first 3 comments in the script describe the workarounds used to interface with the commandline.
<lang AutoHotkey>DllCall("AllocConsole") ; Open a console window for this application
Pi := 4*ATan(1)
,Degrees := Pi/180
 
FileAppend, Enter Latitude: , CONOUT$ ; write to stdout
FileReadLine, latitude, CONIN$, 1 ; read from stdin
 
FileAppend, Enter Longitude: , CONOUT$
FileReadLine, longitude, CONIN$, 1
 
FileAppend, Enter Legal meridian: , CONOUT$
FileReadLine, meridian, CONIN$, 1
 
sineLatitude := Sin(latitude*Degrees)
FileAppend, `n, CONOUT$
FileAppend, Sine of latitude: %sineLatitude%`n, CONOUT$
FileAppend, % "Difference of Longitudes (given longitude - meridian): " . longitude-meridian . "`n", CONOUT$
FileAppend, `n, CONOUT$
 
FileAppend, Numbers from 6 AM to 6 PM:`n, CONOUT$
FileAppend, Hour`t`tSun Hour Angle`t Dial hour line angle`n, CONOUT$
 
 
hour := -7
While (++hour < 7)
{
clockHour := hour < 0 ? abs(hour) . "AM" : hour . "PM"
shr := RTrim("" . (15.0*hour - (longitude-meridian)), "0") ; RTrim() removes trailing zeroes
dhla := Atan(sineLatitude*Tan(shr*degrees))/Degrees
FileAppend, %clockhour%`t`t%shr%`t`t%dhla%`n, CONOUT$
}
MsgBox close me when done.</lang>
Sample Output:
<pre>Enter Latitude:-4.95
Enter Longitude:-150.5
Enter Legal meridian:-150
 
Sine of latitude: -0.086286
Difference of Longitudes (given longitude - meridian): -0.500000
 
Numbers from 6 AM to 6 PM:
Hour Sun Hour Angle Dial hour line angle
6AM -89.5 84.224833
5AM -74.5 17.282934
4AM -59.5 8.333712
3AM -44.5 4.846709
2AM -29.5 2.794874
1AM -14.5 1.278353
0PM 0.5 -0.043144
1PM 15.5 -1.370788
2PM 30.5 -2.909643
3PM 45.5 -5.018023
4PM 60.5 -8.671397
5PM 75.5 -18.450999
6PM 90.5 84.224833</pre>
 
=={{header|BBC BASIC}}==