将正弦波添加到三角形网格中

时间:2011-11-04 13:14:03

标签: opengl

有人可以帮助我在我的三角形网格上添加一个sin波来帮助我获得波浪效果。

for(int i = 0; i<150; i++){
        for(int j = 0; j<150; j++){
            grid[i][j] = 0;
            glBegin(GL_LINE_LOOP);
                glVertex3f(i*3,grid[i][j],j*3);
                glVertex3f(i*3,grid[i][j],j*3+3);
                glVertex3f(i*3+3,grid[i][j],j*3);
            glEnd();
            glBegin(GL_LINE_LOOP);
                glVertex3f(i*3,grid[i][j],j*3+3);
                glVertex3f(i*3+3,grid[i][j],j*3+3);
                glVertex3f(i*3+3,grid[i][j],j*3);
            glEnd();
        }

    }

如果我说得对,我应该做的就是为网格[i] [j]添加一个sin值,我是对的吗? 是否所有y值都设置为相同的网格[i] [j]?

1 个答案:

答案 0 :(得分:0)

这实际上取决于你想要完成的事情。

你是否试图设置一个表面,当它看起来像一个正弦波? 如果是这种情况,那么假设您正在调制y轴并且z轴没有任何效果,那么您需要确定要使用的频率。 即y = A *正弦(w * x + p)其中A是幅度,w是角频率,p是相位。

您还必须考虑x轴上的采样点数,以便它看起来没有别名。正弦是一个连续函数,但你只需要150个样本。

您也可以重新考虑如何计算和绘制最终的三角形网格。您当前的代码不是最有效的,因为您每帧都在重新计算网格。 您可能需要考虑初始化网格然后绘制三角形条带等。网上有很多讨论它。