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> |
<!--<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> |