中点分割裁剪算法Python代码
时间: 2024-01-21 22:18:42 浏览: 22
中点分割裁剪算法(Midpoint Displacement)是一种生成自然风景的随机算法。以下是Python实现代码:
```python
import random
def midpoint_displacement(length, roughness):
# 初始化高度图
height_map = [0] * length
# 设置起点和终点高度
height_map[0] = random.uniform(0, 1)
height_map[length - 1] = random.uniform(0, 1)
# 进行分割裁剪
divide(length - 1, roughness, height_map)
return height_map
def divide(length, roughness, height_map):
# 如果长度小于等于1,则不需要再分割
if length <= 1:
return
# 计算中点高度
midpoint = length // 2
height = (height_map[0] + height_map[length]) / 2 + random.uniform(-roughness, roughness)
height_map[midpoint] = height
# 递归分割左半部分
divide(midpoint, roughness / 2, height_map[:midpoint+1])
# 递归分割右半部分
divide(length - midpoint, roughness / 2, height_map[midpoint:])
```
其中,`length`表示高度图的长度,`roughness`表示粗糙度。调用`midpoint_displacement`函数即可生成高度图。