有人可以帮助我在我的三角形网格上添加一个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]?
答案 0 :(得分:0)
这实际上取决于你想要完成的事情。
你是否试图设置一个表面,当它看起来像一个正弦波? 如果是这种情况,那么假设您正在调制y轴并且z轴没有任何效果,那么您需要确定要使用的频率。 即y = A *正弦(w * x + p)其中A是幅度,w是角频率,p是相位。
您还必须考虑x轴上的采样点数,以便它看起来没有别名。正弦是一个连续函数,但你只需要150个样本。
您也可以重新考虑如何计算和绘制最终的三角形网格。您当前的代码不是最有效的,因为您每帧都在重新计算网格。 您可能需要考虑初始化网格然后绘制三角形条带等。网上有很多讨论它。