这有个纹理图的例子: 该图经过人工着色,山峰为白色,山谷为绿色,两者之间为灰色。尽管利用例子程序源码试试自己的配色方案。
早先还到过用迭代实现这个例程比递归好。原因是:一个递归实现可能翻采用如下形式:
执行 diamond 步;
执行 square 步;
减小随机数范围
调用自己四次。
这是个很简洁的实现,而且毫无疑问它能工作。但它要求用不充足的数据生成某些点。为什么呢?经过第一遍之后,你将再次调用以执行 square 步,但这时并没有一个棱锥四个角的全部数据。
与之相反,我用个迭代实现,伪码如下:
当 square 边长度大于 0 时{
遍历数组,对每个正方形表达执行 diamond 步
遍历数组,对每个棱锥表达执行 diamond 步
减小随机数范围
}