js输出一个菱形_Threejs使用菱形正方形算法,中点替换算法生成随机地形

34e7a7a384c4709a792f91de99a27460.png

源码:

https://github.com/srchea/Terrain-Generation

https://github.com/IceCreamYou/THREE.Terrain

菱形正方形算法(diamond square algorithm)

随机地形生成中,我们面临的问题就是给出一个位置(x,z),如何找到它的高度y,使其成为我们想要的地形。如果仅仅是随机给出一共y的话,那么地形必然是遍布尖峰和悬崖,而本篇文章用到的算法可以很好地解决这个问题。

下面这张图很好地解释了这个算法。

49dbadca36a0933e6b53e9081ce0d12d.png

算法可分为如下几步:

  1. 在一个大正方形上,随机生成左上,左下,右上,右下点的高度,如第一幅图
  2. 正方形步骤,以上述四点的平均值加上一个噪音得到正中心点的高度,第二幅图。
  3. 菱形步骤,左边中间的点以正中,左上,左下三个点如果自己不是边界的话再加上自己左边的点,取平均值加噪音算出高度࿰
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值