2017-04-30 192 views
0

我繪製正弦波的代碼如下。 見下面我的代碼:用正在增加的頻率處理繪製正弦波

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; 
} 

但我想正弦波的頻率增加了距離。 這是當前正弦波我得到:

enter image description here

但我想使它看起來像這樣: enter image description here

我將如何做到這一點?

+1

在最後一幅圖中,當您從左到右移動時,頻率*下降*,波長增加。這是你想要的,還是你想讓頻率增加到正確的位置,還是其他事情發生在圖形的一端? –

回答

1

你知道如何繪製sin(2*π*f*t)

A「唧唧」將有一個頻率本身是時間的函數:

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

哪裏f(t)可以是線性的,二次,或其他任何你選擇。

+0

嘿感謝您的答案!但是我對數學知之甚少(可能你可能給出了一個關於如何實現這個的代碼示例?) – FutureCake

+0

這裏有些幫助:https://www.mathworks.com/help/signal/ref/chirp.html? requestedDomain = www.mathworks.com你必須學習一些關於數學的知識 – duffymo

+0

好的抱歉,我真的沒有得到它..如何將其轉換爲x和y座標... – FutureCake