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

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

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

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

查看您的代码,您在那里有振幅。您只需要一个新参数来指定 b。

于 2013-07-15T22:05:15.027 回答
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

于 2013-07-15T22:06:55.100 回答