Angle difference between two bearings: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (→{{header|C}}: Remove vanity tags) |
SqrtNegInf (talk | contribs) (Added Perl example) |
||
Line 1,319: | Line 1,319: | ||
-154146.66490124760 - 1174.83805105985 = -161.50295230740 |
-154146.66490124760 - 1174.83805105985 = -161.50295230740 |
||
42213.07192354373 - 60175.77306795546 = 37.29885558827 |
42213.07192354373 - 60175.77306795546 = 37.29885558827 |
||
=={{header|Perl}}== |
|||
Perl's built-in modulo is integer-only, so import a suitable one from the <code>POSIX</code> core module |
|||
<lang>use POSIX 'fmod'; |
|||
sub angle { |
|||
my($b1,$b2) = @_; |
|||
my $b = fmod( ($b2 - $b1 + 720) , 360); |
|||
$b -= 360 if $b > 180; |
|||
$b += 360 if $b < -180; |
|||
return $b; |
|||
} |
|||
@bearings = ( |
|||
20, 45, |
|||
-45, 45, |
|||
-85, 90, |
|||
-95, 90, |
|||
-45, 125, |
|||
-45, 145, |
|||
29.4803, -88.6381, |
|||
-78.3251, -159.036, |
|||
-70099.74233810938, 29840.67437876723, |
|||
-165313.6666297357, 33693.9894517456, |
|||
1174.8380510598456, -154146.66490124757, |
|||
60175.77306795546, 42213.07192354373 |
|||
); |
|||
while(my ($b1,$b2) = splice(@bearings,0,2)) { |
|||
printf "%10.2f %10.2f = %8.2f\n", $b1, $b2, angle($b1,$b2); |
|||
} |
|||
</lang> |
|||
{{out}} |
|||
<pre> 20.00 45.00 = 25.00 |
|||
-45.00 45.00 = 90.00 |
|||
-85.00 90.00 = 175.00 |
|||
-95.00 90.00 = -175.00 |
|||
-45.00 125.00 = 170.00 |
|||
-45.00 145.00 = -170.00 |
|||
29.48 -88.64 = -118.12 |
|||
-78.33 -159.04 = -80.71 |
|||
-70099.74 29840.67 = -139.58 |
|||
-165313.67 33693.99 = -72.34 |
|||
1174.84 -154146.66 = -161.50 |
|||
60175.77 42213.07 = 37.30</pre> |
|||
=={{header|Perl 6}}== |
=={{header|Perl 6}}== |