Java实现复杂的公式?

时间:2014-02-03 06:00:44

标签: java formula

以下公式的实施是否正确?我很难在java中实现某些公式:

Formula (Original)
Y(x,y,t)=A*cos(w *(x,y)+ wt*t + FI;

Formula (Java)
float yPos = (float) (A* Math.cos((w * (y) + w *   (x)) + wt* t+ FI));

yPos是网格上矢量的y(向上)位置。由于原始公式似乎返回一个向量,我只是将其应用于y。

我创建了一个包含顶点的三维网格。使用嵌套for循环在更新循环中更改每个顶点位置:

for (int y = 0; y < sizeY; y++) {
        for (int x = 0; x < sizeX; x++) {
            float xPos = x;
            float yPos = 0;
            float zPos = y;               
            yPos += sineY(x, y, time); // Cant be consistant Waves

            waterVertexPos.set(xPos, yPos, zPos); //y is where z is
            vertBufArray[index++] = waterVertexPos.getX();
            vertBufArray[index++] = waterVertexPos.getY();
            vertBufArray[index++] = waterVertexPos.getZ();
        }
    }

for循环使用上面的公式更改每个顶点的yposition:

float yPos = (float) (A* Math.cos((w * (y) + w *   (x)) + wt* t+ FI));

公式的信息:

这些波的幅度(A):波峰到波谷之间长度的一半;

波长(L):两个波峰之间的距离; 空间角频率(w):空间角频率的方向是相同的 波漫方向,数量为 相对于波长L:| w | = 2 * PI / L;

波浪速度:波浪在一秒钟内移动的距离;

时间角频率(wt):wt = S * 2 * PI / L;

波浪方向(D):波峰的方向。

初始阶段(FI):波浪的起始阶段;

编辑:

使用此公式给出了以下结果: enter image description here

来源:

http://lnu.diva-portal.org/smash/get/diva2:205412/FULLTEXT01

1 个答案:

答案 0 :(得分:1)

w是一个向量,因此您需要两个数字wxwy

float yPos = A*Math.cos(wx*x + wy*y + wt*t+ FI);

否则,一切都应该没问题,只要确保在遇到这些时将所有向量/矩阵表达式扩展为算术运算。