如何在一个正方形网格中创建类似树干/河流的分支结构

我正在尝试按程序生成一些河流。

我有一个没有高程概念的平的正方形网格作为基础,并希望在上面绘制类似于图像中所示的分支结构。

你能分享一下实现这个目标的步骤吗?

我不需要最快的实现,因为没有实时生成,但我会更倾向于简化的实现。Lua是我的语言,但任何语言都可以。

还有几个要点:

  1. 形状应该是通过算法生成的。
  2. 形状应该 可使用种子值进行控制。

enter image description here

点赞
用户6595438
用户6595438

你的河三角洲看起来很像一棵树。这里有一些使用 Python 画图的 turtle 库来画树的代码。

# 你可以在浏览器中编辑并运行此代码!

尝试更改颜色或添加自己的形状。

import turtle
from random import randint

def tree(length,n, ps):
    """ paints a branch of a tree with 2 smaller branches, like an Y"""
    if length < (length/n):
           return       # 退出函数
    turtle.pensize(max(ps,1))
    turtle.forward(length)        # 画一个粗的树枝
    lb = 45+randint(-20,20)
    turtle.left(lb)          # 左旋“分叉”较小的分支
    tree(length * 0.5*(1+randint(-20,20)/100),length/n,ps-1) # 创建一个长度为父分支的1/2的较小分支
    rb = 45+randint(-20,20)
    turtle.right(lb+rb)         # 右旋“分叉”较小的分支
    tree(length * 0.6,length/n,ps-1)      # 创建第二个较小的分支
    turtle.left(rb)          # 向左旋转回原始头部
    rt = randint(-20,20)
    turtle.right(rt)
    tree(length * 0.45,length/n,ps-1)
    turtle.left(rt)
    turtle.backward(length)       # 后退到原始位置
    return              # 离开函数,继续调用程序

turtle.left(90)
turtle.penup()
turtle.backward(250)
turtle.pendown()
tree(150,5,5)
2016-09-21 10:59:13