0

波を描いてみました。私はこれまでのところこれを持っています:

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

これは波を描きますが、使用する波長を指定できません。どうすればそれができるかわかりませんでした。どうもありがとうございました。

4

2 に答える 2

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波長です。

さて、これはまだあなたが望むことをしないかもしれません. それはあなたが何を望みxPos、何yPosを表現したいかによります。xPosあなたに位相シフトを与えたいですか?もしそうなら、それを for の式に含める必要がありますpixelY

于 2013-07-15T22:06:55.100 に答える
0

波長を変更するには、次の式を使用できます

F (x) = a * sin ( (1/b)*x )

ここで、a は振幅、b は波長です。

コードを見ると、そこに振幅があります。b を指定するための新しいパラメーターが必要なだけです。

于 2013-07-15T22:05:15.027 に答える