我認爲這個實現過程最關鍵的兩部分
一是用平面模擬曲面
二實現波動效果
第一部分
for(int x=0; x<45; x++)
{
// Loop Through The Y Plane
for(int y=0; y<45; y++)
{
// Apply The Wave To Our Mesh
points[x][y][0]=float((x/5.0f)-4.5f);
points[x][y][1]=float((y/5.0f)-4.5f);
points[x][y][2]=float(sin((((x/5.0f)*40.0f)/360.0f)*3.141592654*2.0f));
}
}
可以想象成一個大的正方形被分割成44*44個小方格
每一豎條小方格在一個平面上,通過這些小豎條來模擬正弦曲面。
第二部分原文講得比較清楚了。就是依次把後邊的平面位置給前面的,再把最前面的給最後一個。就像循環左移一樣。
for( y = 0; y < 45; y++ ) // Loop Through The Y Plane
{
hold=points[0][y][2]; // Store Current Value One Left Side Of Wave
for( x = 0; x < 44; x++) // Loop Through The X Plane
{
// Current Wave Value Equals Value To The Right
points[x][y][2] = points[x+1][y][2];
}
points[44][y][2]=hold; // Last Value Becomes The Far Left Stored Value
}