画一波java

时间:2013-07-15 21:55:46

标签: java math graphics wave sine

我想画一个波浪。到目前为止我有这个:

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

这画一个波但我不能指定使用的波长,不太确定我怎么能这样做。非常感谢大家。

2 个答案:

答案 0 :(得分:0)

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

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

其中a是振幅,b是波长。

看看你的代码,你有幅度。您只需要一个新参数来指定b。

答案 1 :(得分: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的表达式中。