2011-11-04 85 views
0

有人可以帮助我添加一个正弦波到我的三角形网格,以帮助我获得波浪效果。添加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]添加一个单值,对不对? 是否所有的y值都被设置为相同的网格[i] [j]?

+0

试试吧,看看你得到了什么,结果对你来说是否有意义?如果它不试图解释为什么? – Bart

回答

0

这实际上取决于你想要完成什么。

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

您还必须考虑x轴上采样点的数量,使其不会看到别名。正弦是一个连续的功能,但你只需要150个样本。

此外,您可能想重新考虑如何计算并绘制最终的三角形网格。您目前的代码不是最高效的,因为您每帧重新计算网格。 您可能需要考虑初始化网格,然后绘制三角形条等。网上有很多讨论这个问题。