Horizontal sundial calculations: Difference between revisions

Rename Perl 6 -> Raku, alphabetize, minor clean-up
(Added 11l)
(Rename Perl 6 -> Raku, alphabetize, minor clean-up)
Line 291:
18 90.500 -95.775
</pre>
 
=={{header|BBC BASIC}}==
{{works with|BBC BASIC for Windows}}
Line 897 ⟶ 898:
 
end program SunDial</lang>
 
=={{header|freeBASIC}}==
{{trans|BBC BASIC}}
Line 1,119 ⟶ 1,121:
HR= +5; HRA= +75.500; HLA= -18.451
HR= +6; HRA= +90.500; HLA= +84.225
</pre>
 
=={{header|Haskell}}==
Line 1,531 ⟶ 1,533:
if x >0 then return 1 else return -1
end sgn</lang>
 
 
=={{header|Logo}}==
Line 1,969 ⟶ 1,970:
5 PM 75.500 -18.451
6 PM 90.500 -95.775</pre>
 
=={{header|Perl 6}}==
<lang perl6>sub postfix:<°> ($a) { $a * pi / 180 } # degrees to radians
sub postfix:<®> ($a) { $a * 180 / pi } # radians to degrees
 
my $latitude = prompt 'Enter latitude => ';
my $longitude = prompt 'Enter longitude => ';
my $meridian = prompt 'Enter legal meridian => ';
 
my $lat_sin = sin( $latitude° );
say 'Sine of latitude: ', $lat_sin.fmt("%.4f");
say 'Longitude offset: ', my $offset = $meridian - $longitude;
say '=' x 48;
say ' Hour : Sun hour angle° : Dial hour line angle°';
 
for -6 .. 6 -> $hour {
my $sun_deg = $hour * 15 + $offset;
my $line_deg = atan2( ( sin($sun_deg°) * $lat_sin ), cos($sun_deg°) )®;
printf "%2d %s %7.3f %7.3f\n",
($hour + 12) % 12 || 12, ($hour < 0 ?? 'AM' !! 'PM'), $sun_deg, $line_deg;
}</lang>
{{out|Example output}}
<pre>
Enter latitude => -4.95
Enter longitude => -150.5
Enter legal meridian => -150
Sine of latitude: -0.0863
Longitude offset: 0.5
================================================
Hour : Sun hour angle° : Dial hour line angle°
6 AM -89.500 84.225
7 AM -74.500 17.283
8 AM -59.500 8.334
9 AM -44.500 4.847
10 AM -29.500 2.795
11 AM -14.500 1.278
12 PM 0.500 -0.043
1 PM 15.500 -1.371
2 PM 30.500 -2.910
3 PM 45.500 -5.018
4 PM 60.500 -8.671
5 PM 75.500 -18.451
6 PM 90.500 -95.775
</pre>
 
=={{header|Phix}}==
Line 2,406 ⟶ 2,363:
HR= 6; HRA= 90.500; HLA=-95.775
>
</pre>
 
=={{header|Perl 6Raku}}==
(formerly Perl 6)
<lang perl6>sub postfix:<°> ($a) { $a * pi / 180 } # degrees to radians
sub postfix:<®> ($a) { $a * 180 / pi } # radians to degrees
 
my $latitude = prompt 'Enter latitude => ';
my $longitude = prompt 'Enter longitude => ';
my $meridian = prompt 'Enter legal meridian => ';
 
my $lat_sin = sin( $latitude° );
say 'Sine of latitude: ', $lat_sin.fmt("%.4f");
say 'Longitude offset: ', my $offset = $meridian - $longitude;
say '=' x 48;
say ' Hour : Sun hour angle° : Dial hour line angle°';
 
for -6 .. 6 -> $hour {
my $sun_deg = $hour * 15 + $offset;
my $line_deg = atan2( ( sin($sun_deg°) * $lat_sin ), cos($sun_deg°) )®;
printf "%2d %s %7.3f %7.3f\n",
($hour + 12) % 12 || 12, ($hour < 0 ?? 'AM' !! 'PM'), $sun_deg, $line_deg;
}</lang>
{{out|Example output}}
<pre>
Enter latitude => -4.95
Enter longitude => -150.5
Enter legal meridian => -150
Sine of latitude: -0.0863
Longitude offset: 0.5
================================================
Hour : Sun hour angle° : Dial hour line angle°
6 AM -89.500 84.225
7 AM -74.500 17.283
8 AM -59.500 8.334
9 AM -44.500 4.847
10 AM -29.500 2.795
11 AM -14.500 1.278
12 PM 0.500 -0.043
1 PM 15.500 -1.371
2 PM 30.500 -2.910
3 PM 45.500 -5.018
4 PM 60.500 -8.671
5 PM 75.500 -18.451
6 PM 90.500 -95.775
</pre>
 
Line 2,720 ⟶ 2,722:
 
}</lang>
 
=={{header|Seed7}}==
<lang seed7>$ include "seed7_05.s7i";
10,333

edits