温馨提示:本文翻译自stackoverflow.com,查看原文请点击:html - drawing sine wave in canvas
canvas html sine-wave

html - 在画布上绘制正弦波

发布于 2021-03-16 08:26:34

我想在画布上绘制一个简单的正弦波,但是我做得不好。如图所示,这是我想要的输出。

到目前为止,我得到的是http://jsfiddle.net/RaoBurugula/gmhg61s6/4/

的HTML

 <canvas id="myCanvas" width="360" height="360" style="border:1px solid #d3d3d3;">

JS

 var c = document.getElementById("myCanvas");
 var ctx = c.getContext("2d");
 var i;
 for(i=0; i<360; i+= 20){
    ctx.moveTo(i+5,180);
    ctx.lineTo(i,180);

 }
 ctx.stroke();
 var counter = 0, x=0,y=180;

 //100 iterations
 var increase = 90/180*Math.PI ;
 for(i=0; i<=180; i+=10){

 ctx.moveTo(x,y);
 x = i;
y=  180 - Math.sin(counter);
counter += increase;

ctx.lineTo(x,y);
alert( " x : " + x + " y : " + y) ;
}
ctx.stroke();

我想要的输出

我想要的输出

查看更多

提问者
BRDroid
被浏览
0
Guffa 2015-04-28 19:03

你所增加counter的值过高,请减小该值:

var increase = 90/180*Math.PI / 9;

绘制图的整个宽度而不是一半:

for(i=0; i<=360; i+=10){

你需要更高的振幅:

y =  180 - Math.sin(counter) * 120;

演示:http//jsfiddle.net/Guffa/gmhg61s6/5/