.controls {list-style: none; z-index: 99;}
canvas {position: absolute; left: 300px; top: 0px;}
a: <text class="a"></text>
b: <text class="b"></text>
Phase: <input type="checkbox"
const width = innerWidth,
const scale = Math.min(width, height)/3;
const canvas = document.querySelector('canvas');
const canvasCtx = canvas.getContext('2d');
canvasCtx.fillStyle = 'rgb(255, 255, 255)';
canvasCtx.strokeStyle = 'rgb(37, 37, 109)';
canvasCtx.lineWidth = .01;
const [a, b, rotate] = getVals();
if (rotate) offset += .005;
document.querySelector("text.a").innerHTML = a;
document.querySelector("text.b").innerHTML = b;
canvasCtx.fillRect(0, 0, width, height);
canvasCtx.moveTo(...calcPoint(a, b, i--));
while (i--) canvasCtx.lineTo(...calcPoint(a, b, i));
window.requestAnimationFrame(draw);
const a = +document.querySelector("input.a").value,
b = +document.querySelector("input.b").value,
rotate = document.querySelector(".checkbox").checked;
function calcPoint(a, b, i) {
const x = Math.sin(a*i + offset) * scale + width/3;
const y = Math.sin(b*i) * scale + height/2;