龙空技术网

奇妙分形:大自然的代码

遇见数学 497

前言:

眼前各位老铁们对“经典的分形几何算法是什么”大约比较看重,咱们都想要分析一些“经典的分形几何算法是什么”的相关资讯。那么小编同时在网上收集了一些对于“经典的分形几何算法是什么””的相关内容,希望大家能喜欢,你们一起来学习一下吧!

什么是分形?

“分维和分形的设想”最早由本华·曼德博(Benoit B. Mandelbrot)于 1973 年在法兰西学院讲课时提出,但人类在这个概念被提出之前早已发现了分形现象。1904 年,瑞典数学家科赫(Helge von Koch)首次发表了雪花图案的结构—科赫曲线(又称雪花曲线),它被认为是一种数学怪胎,一种奇怪的人工构造(但实际上并不是,自然界中到处都是以分形结构存在着的图形)。分形具有以非整数维[1]形式充填空间的形态特征。以科赫曲线为例,我们既不能说科赫曲线是一维的,也不能说它是二维的,因为无论将它放大到什么程度,它都不会是以直线或光滑曲线所构成的,那么它就不包含任何一维的几何图形;同样,它被称作曲线也就意味着它不占任何面积,所以它也不是二维的。那么, 我们就需要一个新的维度,对这一类图形进行定义,这就是分维。科赫曲线约为 1.26 维。分形还有一个重要的特性就是自相似性—一个粗糙或零碎的几何形状(分形图形),可分成数个部分,且每一部分都与整体完全一致或至少相近似,例如罗马花椰菜、谢尔宾斯基三角形,等等。

[1]. 普通人对分形难理解的是“分维”。在经典的欧几里得几何学中,人们习惯上认识的世界都是整数维的,比如点是零维、线是一维、面是二维……也就是说,人们习惯上认识的世界是由直线和光滑的曲线构成的,而分形在数学上存在于一个奇怪的世界—介于一个整数维和另一个整数维之间。—译者注

▲ 科赫曲线是一种分形, 其形态似雪花, 又称科赫雪花, 上图为生成过程

自从内斯使用计算机绘制出由代码生成的绘画开始,在随后的几十年里, 程序员们利用计算机展开试验,使用简单的程序代码生成非同一般、异乎寻常的视觉艺术作品。程序员们之所以能展开这些试验,全都依靠于不断发展的计算机技术。如果没有计算机的帮助,从无限复杂的图形中发现分形几乎是不可能的。从某种程度上讲,在没有参照物的情况下,因为分形图像的自相似性, 我们是无法判断我们所观察的这一部分在图中的所在位置以及放大倍数的。

相信所有去过迪厅或夜总会的人,都会被 DJ 身后大屏幕上奇幻的画面所吸引。注视它时,你会发现大屏幕上所投放的画面不断地放大,让人有一种被吸入的感觉,仿佛进入了一个梦幻般的世界,但似乎永远触不到底。当被这奇幻的画面所吸引时,你会联想到什么?这就是用计算机生成的最经典的分形案例之一 —— 曼德博集合[2](Mandelbrot set)。这样的分形图像在没有计算机辅助的情况下是不可能生成的。那么,计算机生成的这些分形图像算得上是艺术吗?

[2]. 曼德博集合是一种在复平面上组成分形的点的集合,以数学家本华·曼德博的名字命名。曼德博集合与朱利亚集合有相似的地方,例如使用相同的复二次多项式进行迭代。即使将曼德博集合无限放大,它都能有精妙的细节,而其瑰丽的图案仅仅由一个简单的公式生成。因此,有人认为曼德博集合是“人类有史以来做出的最奇异、最瑰丽的几何图形”,曾被称为“上帝的指纹”。—译者注

凯瑞·米切尔(Kerry Mitchell)是一位以算法和分形艺术而闻名的美国艺术家,他在 1999 年发表的《分形艺术宣言》中试图证明这样的观点:艺术不能仅仅依靠计算机来制作—艺术是设计程序,是算法的选择,而不是最终的执行。他这样写道:“分形艺术不是电脑艺术。从某种意义上来讲,计算机完成了所有的工作,但这些工作只有艺术家来操作电脑才能完成。打开一台电脑,让它单独待在那里一个小时,等你回来的时候,不会有任何艺术作品产出。”

没有人会宣称计算机是具有创造性的。分形艺术和内斯利用计算机生成的计算机艺术最根本的区别在于,分形艺术是完全确定的,是由算法决定的。计算机在没有编程的情况下,是不会做出任何运算的。虽然计算机分形图像让人感到如此的新奇和惊讶,但也让人感觉毫无生气、贫乏。也许这是因为其无法在两个意识世界之间架设有效的桥梁。

尽管如此,计算机生成的分形图像还是让它们的创造者赚了大钱,因为分形已经被证明是模拟自然世界的一种非常有效的方法。曼德博在其开创性的著作《大自然的分形几何学》中解释了自然如何使用分形算法来制造蕨类植物、云、波浪、山。这本书启发了时任波音公司工程师的洛伦·卡彭特(Loren Carpenter)在计算机上使用分形代码模拟自然世界,他在夜间使用波音公司的电脑制作了一段长约两分钟的电脑生成的分形鸟瞰风景动画 Vol-Libre。正是这段时长两分钟的动画,最终使他成了皮克斯公司的创始人之一和首席科学家。

影片 Vol-Libre 截图

尽管这段动画本来是波音公司的宣传片,但卡彭特的最终目标是用这段动画给《星球大战》的制片人和导演乔治·卢卡斯留下深刻印象。在他的心中一直有一个梦想:为电影制作动画。1980 年,美国计算机协会召开国际图形学年会(SIGGRAPH),出席会议的有对计算机绘图感兴趣的科学家、艺术家和电影制片人,卡彭特在会议上展示了他的分形算法动画。当启动 16 毫米胶片放映机时,他看到了坐在前排的卢卡斯,他希望能给卢卡斯和其他电影公司的人留下深刻的印象。

当影片放映完毕时,观众们爆发出了雷鸣般的掌声,他们从未见过由算法创造的如此逼真、如此自然的画面。卢卡斯看过了这段动画,当即邀请卡彭特到自己的公司工作。史蒂文·斯皮尔伯格看了卡彭特用代码创作的特效动画后这样说道:“能生活在这个伟大时代太好了!”卡彭特的同事艾德·卡姆尔(Ed Catmull)则这样说道:“总有一天,我们会用这种方式制作整部电影,我们会用电脑特效创造角色、怪物、外星人、整个世界。除了真人演员,其他一切都将由电脑制作完成。”

后来,卡彭特、卡姆尔和阿尔维·雷·史密斯一起创建了皮克斯,如今, 该公司像其他动画公司雇用艺术家和动画师一样,雇用了许多数学家和计算机科学家。曾经,为了制作像《飞屋环游记》里令人迷醉、让人流连忘返的丛林景色,要花费动画师们几个月的时间,而现今在皮克斯,他们可以利用一个算法,瞬间生成。

小小的分形代码拥有着惊人的力量,人们使用它就可以创造出十分逼真的自然景观图像。这样的技术也非常适合于构建游戏中的环境。1982 年,在卢卡斯影业的游说下,雅达利电子游戏公司在计算机图形系统上投入巨资 100 万美元,首先在游戏里使用了这项技术。这也带来了电子游戏行业的一次革命性创新。

1984 年,雅达利电子游戏公司发行了一款名为《异星救援》的游戏。在这个游戏里,游戏中的环境全部由分形代码来绘制。虽然看起来不那么真实,游戏玩家们依然觉得很满意,玩得很开心,毕竟人们对于游戏环境的要求要比电影宽容得多。由于各种条件的限制,在图像周围还是出现了像素化的锯齿边, 游戏的制作团队对此耿耿于怀。但最终他们还是接受了这样的事实,因为这款游戏和雅达利的游戏街机一样畅销,他们还给游戏中的外星人起了花名“锯齿状”。随着游戏机处理能力的提高,游戏中所展现的世界与真实世界越来越相近。从静态空间的《吃豆人》,到几乎像电影一样进行游戏画面渲染的《神秘海域》,这一切全取决于算法的力量。

2016 年发行的大型游戏《无人深空》或许是游戏世界中算法应用最具创造性的实例之一。这款游戏是为索尼的 PlayStation 4 开发的,在游戏中玩家可以在宇宙中漫游,访问无穷无尽的星球。每个星球都是不同的,居住着独特的动植物种群。参与开发这款游戏的肖恩·马瑞(Sean Murray)这样说:“从技术上讲,那些星球的数量可能并不算多,但是在游戏中,即使你每秒造访一颗星球, 在你造访完所有星球之前,我们的太阳系早已消亡。”

那么, 开发《无人深空》的公司 Hello Games 是否雇用了成千上万位艺术家来创造这些独立的星球呢?实际上,只有四个程序员在利用算法创造这个世界。每个星球的环境都是独一无二的,当玩家第一次访问时,代码就会创建这个星球的一切。即使是那四个程序员也不知道在星球被访问之前算法会产生出什么。

皮克斯和索尼在它们的产品中,使用了算法作为人类创造力的工具。就像照相机没有取代肖像画画家一样,电脑只是成为动画师创造世界的一种新工具。只要计算机是人类独创性和自我表达的工具,它们就不会对艺术家构成真正的威胁。但是,我们应如何看待那些旨在创造新艺术的计算机呢?

上文节选自《天才与算法》第7章“数学家的望远镜”, [遇见]已经机械出版社授权.

标签: #经典的分形几何算法是什么