![34e7a7a384c4709a792f91de99a27460.png](https://img-blog.csdnimg.cn/img_convert/34e7a7a384c4709a792f91de99a27460.png)
源码:
https://github.com/srchea/Terrain-Generation
https://github.com/IceCreamYou/THREE.Terrain
菱形正方形算法(diamond square algorithm)
随机地形生成中,我们面临的问题就是给出一个位置(x,z),如何找到它的高度y,使其成为我们想要的地形。如果仅仅是随机给出一共y的话,那么地形必然是遍布尖峰和悬崖,而本篇文章用到的算法可以很好地解决这个问题。
下面这张图很好地解释了这个算法。
![49dbadca36a0933e6b53e9081ce0d12d.png](https://img-blog.csdnimg.cn/img_convert/49dbadca36a0933e6b53e9081ce0d12d.png)
算法可分为如下几步:
- 在一个大正方形上,随机生成左上,左下,右上,右下点的高度,如第一幅图
- 正方形步骤,以上述四点的平均值加上一个噪音得到正中心点的高度,第二幅图。
- 菱形步骤,左边中间的点以正中,左上,左下三个点如果自己不是边界的话再加上自己左边的点,取平均值加噪音算出高度