地形算法 Fault Generation
一、不规则地形生成(分形地形算法):Fractal Terrain Generation
Fractal Terrain Generation包含2种算法:
缺点形成算法:Fault Formation
中点算法:Midpoint Displacement
二、缺点形成算法:Fault Formation
该算法分为两步,第一步生成地形;第二步平滑滤波。
生成地形:
在地形中取随机点点A,B,并计算AB 的向量 Dir1;在取随机点C,点C不与AB重合,计算AC的向量Dir2;计算Dir1与Dir2的点积,如果小于0,则在直线L的右边,否则在L的左边或在L上。自定义在L的任意一边叠加高程;
迭代的方式叠加高程:
iCurrentIteration为当前迭代次数;
iIterations为需要迭代的次数;
for (iCurrentIteration = 0; iCurrentIteration<iIterations; iCurrentIteration++)
{
//产生高度
iHeight = iMaxDelta-((iMaxDelta-iMinDelta)*iCurrentIteration)/iIterations;
}
平滑过滤:
将地形高度数据,从左到右,从右到左,从上到下,从下到上,进行平滑插值;
迭代的方式叠加高程:
for( i=0; i<iCount-1; i++ )
{
fpBand[j]= fFilter*v + ( 1.0f-fFilter )*fpBand[j];
v = fpBand[j];
j+= iStride;
}
迭代的方式叠加高程: