Angle difference between two bearings: Difference between revisions

Content added Content deleted
(Added Quackery.)
m (→‎{{header|Phix}}: added syntax colouring the hard way)
Line 2,110: Line 2,110:


=={{header|Phix}}==
=={{header|Phix}}==
<lang Phix>function tz(atom a)
<!--<lang Phix>(phixonline?)-->
<span style="color: #008080;">function</span> <span style="color: #000000;">tz</span><span style="color: #0000FF;">(</span><span style="color: #004080;">atom</span> <span style="color: #000000;">a</span><span style="color: #0000FF;">)</span>
-- trim trailing zeroes and decimal point
<span style="color: #000080;font-style:italic;">-- trim trailing zeroes and decimal point</span>
string res = sprintf("%16f",a)
<span style="color: #004080;">string</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"%16f"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">a</span><span style="color: #0000FF;">)</span>
for i=length(res) to 1 by -1 do
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">res</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">to</span> <span style="color: #000000;">1</span> <span style="color: #008080;">by</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">1</span> <span style="color: #008080;">do</span>
integer ch = res[i]
<span style="color: #004080;">integer</span> <span style="color: #000000;">ch</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">res</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span>
if ch='0' or ch='.' then
<span style="color: #008080;">if</span> <span style="color: #000000;">ch</span><span style="color: #0000FF;">=</span><span style="color: #008000;">'0'</span> <span style="color: #008080;">or</span> <span style="color: #000000;">ch</span><span style="color: #0000FF;">=</span><span style="color: #008000;">'.'</span> <span style="color: #008080;">then</span>
res[i] = ' '
<span style="color: #000000;">res</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">' '</span>
end if
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
if ch!='0' then exit end if
<span style="color: #008080;">if</span> <span style="color: #000000;">ch</span><span style="color: #0000FF;">!=</span><span style="color: #008000;">'0'</span> <span style="color: #008080;">then</span> <span style="color: #008080;">exit</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
end for
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
return res
<span style="color: #008080;">return</span> <span style="color: #000000;">res</span>
end function
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>

procedure test(atom b1, b2)
<span style="color: #008080;">procedure</span> <span style="color: #000000;">test</span><span style="color: #0000FF;">(</span><span style="color: #004080;">atom</span> <span style="color: #000000;">b1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">b2</span><span style="color: #0000FF;">)</span>
atom diff = mod(b2-b1,360)
<span style="color: #004080;">atom</span> <span style="color: #000000;">diff</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">mod</span><span style="color: #0000FF;">(</span><span style="color: #000000;">b2</span><span style="color: #0000FF;">-</span><span style="color: #000000;">b1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">360</span><span style="color: #0000FF;">)</span>
diff -= iff(diff>180?360:0)
<span style="color: #000000;">diff</span> <span style="color: #0000FF;">-=</span> <span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #000000;">diff</span><span style="color: #0000FF;">></span><span style="color: #000000;">180</span><span style="color: #0000FF;">?</span><span style="color: #000000;">360</span><span style="color: #0000FF;">:</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
printf(1,"%s %s %s\n",{tz(b1),tz(b2),tz(diff)})
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%s %s %s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">tz</span><span style="color: #0000FF;">(</span><span style="color: #000000;">b1</span><span style="color: #0000FF;">),</span><span style="color: #000000;">tz</span><span style="color: #0000FF;">(</span><span style="color: #000000;">b2</span><span style="color: #0000FF;">),</span><span style="color: #000000;">tz</span><span style="color: #0000FF;">(</span><span style="color: #000000;">diff</span><span style="color: #0000FF;">)})</span>
end procedure
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>

puts(1," b1 b2 diff\n")
<span style="color: #7060A8;">puts</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" b1 b2 diff\n"</span><span style="color: #0000FF;">)</span>
puts(1,"---------------- ---------------- ----------------\n")
<span style="color: #7060A8;">puts</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"---------------- ---------------- ----------------\n"</span><span style="color: #0000FF;">)</span>
test(20,45)
<span style="color: #000000;">test</span><span style="color: #0000FF;">(</span><span style="color: #000000;">20</span><span style="color: #0000FF;">,</span><span style="color: #000000;">45</span><span style="color: #0000FF;">)</span>
test(-45,45)
<span style="color: #000000;">test</span><span style="color: #0000FF;">(-</span><span style="color: #000000;">45</span><span style="color: #0000FF;">,</span><span style="color: #000000;">45</span><span style="color: #0000FF;">)</span>
test(-85,90)
<span style="color: #000000;">test</span><span style="color: #0000FF;">(-</span><span style="color: #000000;">85</span><span style="color: #0000FF;">,</span><span style="color: #000000;">90</span><span style="color: #0000FF;">)</span>
test(-95,90)
<span style="color: #000000;">test</span><span style="color: #0000FF;">(-</span><span style="color: #000000;">95</span><span style="color: #0000FF;">,</span><span style="color: #000000;">90</span><span style="color: #0000FF;">)</span>
test(-45,125)
<span style="color: #000000;">test</span><span style="color: #0000FF;">(-</span><span style="color: #000000;">45</span><span style="color: #0000FF;">,</span><span style="color: #000000;">125</span><span style="color: #0000FF;">)</span>
test(-45,145)
<span style="color: #000000;">test</span><span style="color: #0000FF;">(-</span><span style="color: #000000;">45</span><span style="color: #0000FF;">,</span><span style="color: #000000;">145</span><span style="color: #0000FF;">)</span>
test(29.4803,-88.6381)
<span style="color: #000000;">test</span><span style="color: #0000FF;">(</span><span style="color: #000000;">29.4803</span><span style="color: #0000FF;">,-</span><span style="color: #000000;">88.6381</span><span style="color: #0000FF;">)</span>
test(-78.3251,-159.036)
<span style="color: #000000;">test</span><span style="color: #0000FF;">(-</span><span style="color: #000000;">78.3251</span><span style="color: #0000FF;">,-</span><span style="color: #000000;">159.036</span><span style="color: #0000FF;">)</span>
test(-70099.74233810938,29840.67437876723)
<span style="color: #000000;">test</span><span style="color: #0000FF;">(-</span><span style="color: #000000;">70099.74233810938</span><span style="color: #0000FF;">,</span><span style="color: #000000;">29840.67437876723</span><span style="color: #0000FF;">)</span>
test(-165313.6666297357,33693.9894517456)
<span style="color: #000000;">test</span><span style="color: #0000FF;">(-</span><span style="color: #000000;">165313.6666297357</span><span style="color: #0000FF;">,</span><span style="color: #000000;">33693.9894517456</span><span style="color: #0000FF;">)</span>
test(1174.8380510598456,-154146.66490124757)
<span style="color: #000000;">test</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1174.8380510598456</span><span style="color: #0000FF;">,-</span><span style="color: #000000;">154146.66490124757</span><span style="color: #0000FF;">)</span>
test(60175.77306795546,42213.07192354373)</lang>
<span style="color: #000000;">test</span><span style="color: #0000FF;">(</span><span style="color: #000000;">60175.77306795546</span><span style="color: #0000FF;">,</span><span style="color: #000000;">42213.07192354373</span><span style="color: #0000FF;">)</span>
<!--</lang>-->
{{out}}
{{out}}
<pre>
<pre>