⍝ Polar from cartesian coordinates:
⍝ Cartesian from polar coordinates:
cmpts ← ⍉↑ ¯1 0 1∘.,1 0 ¯1 ⍝ compass points.
⍴cmpts ⍝ 3×3 array of coordinate pairs.
2 3 3
⊂[⎕io] cmpts
┌─────┬────┬────┐
│¯1 1 │0 1 │1 1 │
├─────┼────┼────┤
│¯1 0 │0 0 │1 0 │
├─────┼────┼────┤
│¯1 ¯1│0 ¯1│1 ¯1│
└─────┴────┴────┘
rnd ← {(10*-⍺)×⌊0.5+⍵×10*⍺} ⍝ rounding to ⍺ decimal places.
4 rnd polar cmpts ⍝ polar from cartesian.
1.4142 1 1.4142
1 0 1
1.4142 1 1.4142
2.3562 1.5708 0.7854
3.1416 3.1416 0
3.927 4.7124 5.4978
polar 0 0 ⍝ singularity at 0 0
0 3.141592654
¯1 polar polar 0 0 ⍝ round-trip awkward case.
0 0
cmpts ≡ 6 rnd ¯1 polar polar cmpts ⍝ round-trip.
1
poly←{2 1∘.○(○2÷⍵)×(⍳⍵)-⍳1} ⍝ cartesian ⍵-polygon.
3 rnd poly 12 ⍝ dodecagon.
1 0.866 0.5 0 ¯0.5 ¯0.866 ¯1 ¯0.866 ¯0.5 0 0.5 0.866
0 0.5 0.866 1 0.866 0.5 0 ¯0.5 ¯0.866 ¯1 ¯0.866 ¯0.5
:If ⎕FR=645 ⍝ binary FP
(1,12÷○2) ×[1] polar poly 12 ⍝ points evenly spaces 0 ≤< ○2.
1 1 1 1 1 1 1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 10 11
:Else ⍝ [14426]<V>1287
:EndIf
⍝∇ polar
Back to: code
Back to: Workspaces