Ну, это выглядит примерно как -sin
, так что вы можете сделать что-то вроде:
let cnvs = document.getElementById('cnvs')
let ctx = cnvs.getContext('2d');
ctx.beginPath();
for (let i = 0; i < cnvs.width; i++){
ctx.lineTo(i, cnvs.height/2-Math.sin(i*(Math.PI/180))*50);
}
ctx.stroke()
<canvas id='cnvs'></canvas>
Таким образом, идея состоит в том, чтобы выразить вашу кривую как некоторую функцию x
(здесь это -sin(x)
), а затем использовать * 1012 контекста рендеринга* метод рисования линий между различными точками на этой кривой.До тех пор, пока вы увеличиваете каждые несколько пикселей (здесь 1
так же хорош, как и получается), вы получите эффект хорошего сглаженного графика.