Horizontal sundial calculations: Difference between revisions
Content added Content deleted
(Added DWScript) |
(Add Seed7 example) |
||
Line 1,253: | Line 1,253: | ||
end; |
end; |
||
end;</lang> |
end;</lang> |
||
=={{header|Seed7}}== |
|||
<lang seed7>$ include "seed7_05.s7i"; |
|||
include "float.s7i"; |
|||
include "math.s7i"; |
|||
const float: radianToDegrees is 57.295779513082320876798154814114; |
|||
const float: degreesToRadian is 0.017453292519943295769236907684883; |
|||
const proc: main is func |
|||
local |
|||
var float: lat is 0.0; |
|||
var float: slat is 0.0; |
|||
var float: lng is 0.0; |
|||
var float: meridian is 0.0; |
|||
var float: hla is 0.0; |
|||
var float: hra is 0.0; |
|||
var integer: h is 0; |
|||
begin |
|||
write("Enter latitude: "); |
|||
readln(lat); |
|||
write("Enter longitude: "); |
|||
readln(lng); |
|||
write("Enter legal meridian: "); |
|||
readln(meridian); |
|||
writeln; |
|||
slat := sin(degreesToRadian * lat); |
|||
writeln("sine of latitude: " <& slat digits 3); |
|||
writeln("diff longitude: " <& lng - meridian digits 3); |
|||
writeln; |
|||
writeln("Hour, sun hour angle, dial hour line angle from 6am to 6pm"); |
|||
for h range -6 to 6 do |
|||
hra := 15.0 * flt(h); |
|||
hra := hra - lng + meridian; |
|||
hla := radianToDegrees * atan(slat * tan(degreesToRadian * hra)); |
|||
writeln("HR= " <& h lpad 2 <& "; HRA= " <& hra digits 3 lpad 7 <& |
|||
"; HLA= " <& hla digits 3 lpad 7); |
|||
end for; |
|||
end func;</lang> |
|||
Output: |
|||
<pre> |
|||
Enter latitude: -4.95 |
|||
Enter longitude: -150.5 |
|||
Enter legal meridian: -150 |
|||
sine of latitude: -0.086 |
|||
diff longitude: -0.500 |
|||
Hour, sun hour angle, dial hour line angle from 6am to 6pm |
|||
HR= -6; HRA= -89.500; HLA= 84.225 |
|||
HR= -5; HRA= -74.500; HLA= 17.283 |
|||
HR= -4; HRA= -59.500; HLA= 8.334 |
|||
HR= -3; HRA= -44.500; HLA= 4.847 |
|||
HR= -2; HRA= -29.500; HLA= 2.795 |
|||
HR= -1; HRA= -14.500; HLA= 1.278 |
|||
HR= 0; HRA= 0.500; HLA= -0.043 |
|||
HR= 1; HRA= 15.500; HLA= -1.371 |
|||
HR= 2; HRA= 30.500; HLA= -2.910 |
|||
HR= 3; HRA= 45.500; HLA= -5.018 |
|||
HR= 4; HRA= 60.500; HLA= -8.671 |
|||
HR= 5; HRA= 75.500; HLA= -18.451 |
|||
HR= 6; HRA= 90.500; HLA= 84.225 |
|||
</pre> |
|||
=={{header|Smalltalk}}== |
=={{header|Smalltalk}}== |