为什么处理会以粗略的方式绘制我的正弦波?

时间:2019-07-03 01:54:02

标签: java processing

我正在尝试让Processing绘制正弦波。但是,它看起来像是输出中正弦波的采样错误版本。我需要用一系列线条代替形状,还是有其他解决方案?

我尝试将变量强制转换为浮点数,然后将c++更改为c += 1

  noFill();
  stroke(255);
  beginShape();
  translate(0, 100);
  for (int c = 0; c <= width; c += 1)
  {
    vertex(c, (float) 100 * sin(c / 50));
  }
  endShape();

我希望它逐个像素地遍历窗口,从而形成平滑的形状。 我真正得到的是似乎要采样的东西,如下所示。

正弦波量化

1 个答案:

答案 0 :(得分:6)

表达式

c / 50

是整数除法。结果是整数值。如果0 <= c < 50,则结果为0;如果50 <= c < 100,则结果为1。

要使用浮点结果进行浮点除法,必须将2个值中的一个作为浮点(例如c / 50.0)。

更改表达式以解决问题:

vertex(c, 100.0 * sin((float)c / 50.0));