2013-07-15 111 views
0

我正在尋找一波。我有這個至今:繪製波浪java

private void drawWave(int yPos, int xPos, int colour, int length, int amplitude, int alpha) { 
    int pixelY, pixelX; 

    for(int i = 0; i < length; i++) { 
     pixelX = xPos + i; 
     pixelY = (int) (yPos - Math.sin(Math.toRadians(i)) * amplitude); 
     Rasterizer2D.drawAlphaPixel(colour, pixelY, 1, 1, alpha, pixelX); 
    } 
} 

這吸引了一波,但我不能指定的波長來使用,就沒有那麼肯定,我怎麼能做到這一點。非常感謝大家。

回答

0

要修改波長短,可以使用此公式

F(X)=α* SIN((1/B)* X)

凡是振幅,b爲波長。

看着你的代碼,你有振幅。你只需要一個新的參數來指定b。

+0

不完全。 'b'將與頻率成正比,而不是波長。 – John

+0

pixelY =(int)(yPos - (amplitude * Math.sin(Math.toRadians(i))* waveLength));改成這個,沒有奏效。 – user1009569

+0

這是真的。幸運的是,波長與頻率成反比,所以我足夠接近。我編輯它。 –

0

添加參數一樣float wavelength和改變

pixelY = (int) (yPos - Math.sin(2.0 * Math.pi * Math.toRadians(i)/wavelength) * amplitude); 

你有

y(i) = y0 - A sin(i) 

我的公式給你

y = y0 - A sin (2 pi i/L) 

其中L是波長。

現在,這仍然可能不會做你想要的。這取決於你想要什麼xPosyPos來表示。你想xPos給你一個階段轉變?如果是這樣,那麼你需要將它包含在pixelY的表達式中。

+0

XPos正是Wave開始的地方。它不起作用,波長和振幅都起振幅的作用,有點... – user1009569

+0

對不起,更好的解釋是,xPos和yPos只是波形位置的屏幕座標,例如如果我有10,10那麼波將開始在(10,10)(x,y) – user1009569