我使用的是我从http://www.gamedev.net/reference/articles/article915.asp得到的水流算法
似乎当我创建一个wave时,它从一个圆圈开始。随着时间的推移,圆圈逐渐消散,并在45度、-45度、45度和-45度处形成线条。因此,它看起来不再像一个波浪,而是一个方形的形状。
这是启动wave的代码:
WaveMapPingc(int x,int y,int rd, int str)
{
for(float a=0; a<3.14159*2; a+=.1)
{
for(int r=1; r<rd;r++)
{
// LowWaveMapPingca(x+(int)((float)r*cos(a)+.5) ,y+(int)((float)r*sin(a)+.5),str );
WaveMap[CT]
[x+(int)((float)r*cos(a)+.5)]
[y+(int)((float)r*sin(a)+.5)]=str;
}
}
}这是生成高度图的代码:
UpdateWaveMap()
{
int x,y,n;
int Temporary_Value = CT;
CT = NW;
NW = Temporary_Value;
// { Skip the edges to allow area sampling }
for(y= 1; y<MAXY-1; y++)
{
for(x= 1;x< MAXX-1; x++)
{
n = ( WaveMap[CT][x-1][y] +
WaveMap[CT][x+1][y] +
WaveMap[CT][x][y-1] +
WaveMap[CT][x][y+1] ) / 2 -
WaveMap[NW][x][y];
float sub=(float)n / DAMP;
int isub=sub;
if (n<1 && isub==0)
n++;
else
if (n>1 && isub==0)
n--;
else
n = n-isub;
WaveMap[NW][x][y] = n;
} // x
} // y
} // function发布于 2011-01-06 07:42:48
您使用的是整数的位置。这引入了各种量化问题(即顶点位置)。
我想说的是,你可能希望将它保持在浮点数中,以使事情变得平滑。
https://stackoverflow.com/questions/4609734
复制相似问题