Angle difference between two bearings: Difference between revisions

Content added Content deleted
m (→‎{{header|C}}: Remove vanity tags)
(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}}==