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}}==