在数字艺术的世界里,生物形态(Biomorphs)是一种由计算机程序生成的随机图案。这些图案看似杂乱无章,但实际上是运行一种流行的AI程序的结果,这个程序执行的是Richard Dawkins在其著作《盲眼钟表匠》中描述的算法。Dawkins探索了仅仅通过变异和选择的组合,结合一个强大的发展(解码)过程,所能产生的可能性。
这基本上是一个递归算法,它有一些基因,并使用一些变异和一些随机选择。仅此而已。这就是产生各种各样迷人虚拟生物所需的一切,其中一些看起来非常具有遗传性。
在Dawkins的系统中,表型(即它的外观)基本上是分支树结构。一个扩展是向这个结构添加段(本文不包括此内容)。
基础系统有九个基因,控制诸如分支角度、分支深度、线条数量等。它使用递归算法来执行绘图;以下是示例代码:
private void draw(Graphics g, int i, int j) {
tree(g, i / 2, j, order, 2);
}
这段代码展示了如何在C#中实现Dawkins生物形态结构的绘制(此实现中没有分段)。
下面的图表说明了代码设计。在展示演示屏幕截图之前,将简要讨论每个类。
基本上,为本文创建了两种类型的生物形态。这些是:
还有一个共同的接口:
那么,应用程序是什么样子的呢?这取决于当前使用的是哪种生物形态。基本上,有两个链接,根据选择的链接,主面板将切换以显示正确的生物形态面板。它要么是BiomorphLayoutPanel(Dawkins生物形态),要么是CritterLayoutPanel(牛头骨生物形态)。让一起来看看吧?
在表单上放置了一个计时器,每1500毫秒,它将选择一个随机的Dawkins生物形态,并使用它来产生一群新的疯狂生物。这里只有随机选择(没有技巧),可以得到一些非常生物逻辑的生物。基本上,这完全取决于之前看到的巧妙的基因解码。
真的只是包括了创建其他风格的生物形态的可能性,只是为了好玩。这里的不同之处在于,这些家伙被评判以确定哪一个应该被用来繁殖。基本上,面积最大、首选眼睛颜色和首选组成部分的生物将获得更好的评分,因此它更有可能成为用于繁殖的alpha雄性。
注意:确实在这里挑选最适应的一个,所以人们会希望随着时间的推移,最终会得到形状或颜色相似的生物。但大自然有其他想法,变异是非常强大的。玩一会儿就知道了。