【问题标题】:Draw sine wave with increasing frequency processing用递增频率处理绘制正弦波
【发布时间】:2017-04-30 23:14:54
【问题描述】:

我有以下绘制正弦波的代码。 请参阅下面的代码:

float x, y;
float prevX=0.0, prevY=0.0;
int numOfWaves = 6;
float angle = 0;

void setup()
{
  size(360, 360);
  background(0);
  smooth();
  stroke(255);
}

void draw()
{
  translate(0, height/2);
  scale(1, -1);

  for(int count=0; count < 360; ++count){
    x = count;

    angle = radians(count);
    y = sin(angle*(numOfWaves/2.0));

    y = map(y,-1,1,-height/2,height/2);

    line(prevX, prevY, x, y);

    prevX = x;
    prevY = y;
  }

  prevX = prevY = 0.0;
}

但我希望正弦的频率随着距离的增加而增加。 这是我得到的当前正弦波:

但我想让它看起来像这样:

我该怎么做?

【问题讨论】:

  • 在最后一张图中,当您从左向右移动时,频率降低,而波长增加。这是您想要的,还是您希望频率向右增加,还是在图形的一端之外发生了其他事情?

标签: math processing frequency


【解决方案1】:

你知道如何绘制sin(2*π*f*t)

“啁啾”的频率本身就是时间的函数:

y(t) = A*sin(2*π*f(t)*t)

其中f(t) 可以是线性的、二次的或您选择的任何其他值。

【讨论】:

  • 嘿,谢谢你的回答!但我真的对数学知之甚少:(你能不能给出一个关于如何实现这个的代码示例?
  • 这里有一些帮助:mathworks.com/help/signal/ref/…。你必须学习一些数学知识。
  • 您的绘图是 x 和 y 坐标。将它们视为自变量和因变量。名字无所谓。我将 x 视为“时间”,将 y 视为“幅度”。在时间范围内编写一个循环(函数的几个循环)。将时间插入我给你的频率与时间和幅度与时间函数并绘制结果。
猜你喜欢
  • 2015-01-11
  • 1970-01-01
  • 2015-12-16
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-22
  • 1970-01-01
相关资源
最近更新 更多