)
}
}
)
(
}
{
)
)
(
)
(
(
{
}
)
(
)
}
)
)
{
(
(
)
)
}
)
(
}

### Polar Plots

1. `const Pnt = (x, y, p = { x, y }) => (`
2. `  p.add = o => (p.x += o.x, p.y += o.y, p), p`
3. `);`
4. `Pnt.polar = (rad, t) => Pnt(rad * Math.cos(t), rad * Math.sin(t));`
5. ` `
6. `const pnts = {};`
7. `let index = -1;`
8. `const polar = (inc, rad) => {`
9. `  index++;`
10. `  if (!pnts[index]) pnts[index] = 0;`
11. `  return Pnt.polar(rad, (pnts[index] += inc));`
12. `};`
13. ` `
14. `let d = document;`
15. `let b = d.body;`
16. `with (b.appendChild(`
17. `  Object.assign(d.createElement`canvas`, {`
18. `    width: 600,`
19. `    height: 500,`
20. `  })`
21. `).getContext`2d`) {`
22. `  canvas.style.transformOrigin = "0 0";`
23. `  canvas.style.transform = "scale(.6)";`
24. ` `
25. `  let p0 = Pnt(80, 100);`
26. `  let p1 = Pnt(270, 100);`
27. `  let p2 = Pnt(480, 40);`
28. `  let p3 = Pnt(170, 180);`
29. `  let p4 = Pnt(430, 300);`
30. ` `
31. `  fillStyle = "black";`
32. ` `
33. `  function loop() {`
34. `    for (let i = 0; i < 20; i++) {`
35. `      index = -1;`
36. ` `
37. `      p0.add(polar(0.2, 4).add(polar(-0.4, 2).add(polar(0.05, 1))));`
38. `      fillRect(p0.x, p0.y, 1, 1);`
39. ` `
40. `      p1.add(`
41. `        polar(0.1, 2).add(`
42. `          polar(-0.2, 2).add(polar(0.03, 1).add(polar(-0.01, 0.5)))`
43. `        )`
44. `      );`
45. `      fillRect(p1.x, p1.y, 1, 1);`
46. ` `
47. `      p2.add(polar(0.08, 3).add(polar(-0.2, -12).add(polar(2, 10))));`
48. `      fillRect(p2.x, p2.y, 1, 1);`
49. ` `
50. `      p3.add(polar(0.08, 7).add(polar(-0.2, -12).add(polar(2, 11))));`
51. `      fillRect(p3.x, p3.y, 1, 1);`
52. ` `
53. `      p4 = p4.add(polar(0.025, 2).add(polar(-0.05, 1)));`
54. `      fillRect(p4.x, p4.y, 1, 1);`
55. `    }`
56. `    requestAnimationFrame(loop);`
57. `  }`
58. ` `
59. `  loop();`
60. `}`

Some polar plots…

snippet.zone ~ 2021-23 /// {s/z}