地形算法 Fractal Terrain Generation

时间:2021-03-24 04:48:09

地形算法 Fault Generation

地形算法 Fractal Terrain Generation

地形算法 Fractal Terrain Generation

一、不规则地形生成(分形地形算法):Fractal Terrain Generation

Fractal Terrain Generation包含2种算法:
缺点形成算法:Fault Formation
中点算法:Midpoint Displacement

二、缺点形成算法:Fault Formation

该算法分为两步,第一步生成地形;第二步平滑滤波。
生成地形:
地形算法 Fractal Terrain Generation
在地形中取随机点点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;
	}


迭代的方式叠加高程: