

在 P5.js 中绘制一棵树。
绘制树的过程与数据结构中树的遍历过程相似,都是从根开始,递归地调用遍历方法。
在这个例子中,为了使树的外观具有一定的随机性,我们不固定树的层数,而是约定树枝(branch)的最小长度。当某一次递归时,树枝的长度小于或等于最小长度,我们就停止递归,并通过vertex()方法来绘制叶子。
在绘制树枝时,每次调用都递归地绘制左右子树。绘制左右子树前,将绘制的方向旋转一个随机角度,并将下一次递归绘制树枝的长度设置为此次长度的 0.7 到 0.9 倍,从而产生不对称的树。
const branch = (length: number) => {
if (length > MIN_BRANCH_LENGTH) {
p.line(0, 0, 0, -length)
p.translate(0, -length)
// 右子树
p.rotate(p.random(20, 30))
branch(length * p.random(0.7, 0.9))
// 左子树
p.rotate(p.random(-50, -60))
branch(length * p.random(0.7, 0.9))
} else {
// 叶子
leave()
}
}
按下 R 键可以重新绘制一棵树。