沃罗诺伊图

试试看自己调整参数: : : :

沃罗诺伊图:把世界分给离你最近的那个点

假设一座城市里有几个消防站,城市里每一个人都有一个问题:如果发生火灾,我应该去哪一个消防站?最简单的答案当然是:去离自己最近的那个消防站。

于是,我们可以把整个城市划分成几个区域:这个区域里的人,离消防站 A 最近;那个区域里的人,离消防站 B 最近;另一个区域里的人,离消防站 C 最近。最终,每一个地方,都被分配给离它最近的一个消防站。

如果把这些区域画出来,你就会得到一种非常漂亮的几何图案:沃罗诺伊图。

一切从几个点开始

沃罗诺伊图的起点非常简单:一些散布在平面上的点。这些点可以代表任何东西,比如:消防站、医院、商店、学校、城市,甚至树木。我们把这些点叫作 生成点 或者 站点。

假设我们现在只有三个点:A、B 和 C。接下来,个平面上的每一个位置,都去找离自己最近的那个点。比如,点 A 周围的一大片区域的所有位置,都离 A 最近。点 B 也同样获得自己的区域。点 C 同样获得自己的区域。于是整个平面就被分割成三个部分:A 的区、B 的区域和 C 的区域。每个区域就是 沃罗诺伊单元,或者叫做 沃罗诺伊区域。一个生成点,对应一个沃罗诺伊区域。如果有10个点,通常就会得到10个区域。如果有100个点就会得到100个区域。

那么边界在哪里?

这是整个沃罗诺伊图最关键的地方。

假设只有两个点A和B,那么,问题就变成了:什么时候一个位置离这两个点一样近?答案是:正好位于它们中间的位置。于是,A和B这两个点正中间的直线,就是这两个点的分界线。线上的每一个点,都与A和B这两个点的距离完全相同。而线的两侧,分别属于A和B。数学上,两个点之间所有距离相等的位置,会形成一条 垂直平分线。所以,沃罗诺伊图中的边界,并不是随便画出来的,它其实来自一个非常简单的数学规则:找出距离两个生成点一样远的位置。

三个点会发生什么?现在增加第三个点C,这时候,A、B、C都开始争夺自己的区域。每一个位置都要问:“我离谁最近?”最终,整个平面会被切割成三个区域。而这些区域的边界,就是不同生成点之间的 等距离线。

点越多,边界线形成的图案越复杂。从3个点开始,增加到10个点,再增加到50个点,再增加到100个点,你会看到,整个平面开始迅速形成复杂的多边形网络。但是仔细观察会发现:每一个区域,仍然只是围绕着一个生成点,规则从来没有改变。

为什么它看起来这么像细胞?

如果你随机生成大量点,沃罗诺伊图很容易出现一种非常熟悉的视觉,那就是 细胞。一个个不规则的多边形,彼此紧密排列,每个区域都有自己的中心,边界又和周围区域自然衔接。

所以你会发现,沃罗诺伊图经常让人联想到细胞、蜂巢、龟裂的土地、动物皮肤纹理、泡沫或者是城市街区。

但这里有一个重要的区别:它们看起来相似,并不意味着它们都是由沃罗诺伊图产生的。沃罗诺伊图首先是一个数学上的空间划分规则。自然界中的类似结构,有些可能与这种几何规律有关,有些则来自完全不同的物理过程。

为什么边界总是这么整齐?这是沃罗诺伊图非常漂亮的地方。假设只有两个生成点A和B,之间有一条边界,边界上的所有位置到A和B的距离完全相同,那么,边界天然就是 A与B的垂直平分线。当有更多点的时候,这些垂直平分线彼此相交,最终形成 一个由直线组成的多边形网络。因此你看到的沃罗诺伊图,虽然看起来像是随机生成的,但它实际上拥有非常严格的几何结构。

它不仅可以表示消防站

现在回到最开始的消防站。假设城市里有消防站A、消防站B、消防站C、消防站D等等。我们把每个消防站变成一个点,然后生成沃罗诺伊图。那么,每一个沃罗诺伊区域,就可以理解成一个消防站最“负责”的区域。如果某个居民住在A的区域里,A是距离他最近的消防站。如果住在B的区域,B是最近的消防站。于是,一张看起来非常漂亮的几何图,其实可以直接表达一个非常现实的问题。

沃罗诺伊图不仅可以表示消防站,同样的方法可以用于医院,哪一家医院离我最近?商店,哪一家商店覆盖这个区域?学校,哪所学校距离学生最近?快递站,哪个配送中心负责这个区域?手机基站,哪个基站距离手机最近?所以沃罗诺伊图不只是一个漂亮的数学图案,它还是一种非常实用的 空间划分工具。

沃罗诺伊图甚至可以解释“最近”这件事情。沃罗诺伊图最核心的思想其实只有两个字:最近。给你一堆点,对于平面上的任何一个位置,问:哪个点离我最近?回答这个问题,就能得到它属于哪个区域。把所有位置的答案全部画出来,沃罗诺伊图就出现了。

你甚至可以把沃罗诺伊图理解成一台数学机器。机器拿到一堆点,然后对屏幕上的每一个位置问:“你离哪个点最近?”如果答案是A,就把这里分给A。如果答案是B,就分给B。如果答案是C,就分给C。……。最后,整个空间就被自动分割了。

随机的点,也能产生秩序

如果我们随机撒一些点,点的位置完全随机。但是一旦应用 “每个位置归最近的点所有” 这个简单规则之后,一个高度有组织的几何结构就出现了。也就是说,随机的输入,也可以产生有秩序的空间划分。

这和分形不一样,沃罗诺伊图 不是分形,它没有无限递归,没有无限自相似,也没有不断放大的相同结构。它的核心是:空间划分。

一个点,就是一个“中心”

你可以把沃罗诺伊图想象成 一群点正在争夺空间。每一个点都在说:“这里离我最近。”另一个点说:“不,这里离我更近。”最终,它们之间形成一道道边界。而整个平面,就在这种“最近距离”的竞争中,被划分成无数个区域。

更有趣的是,改变规则,世界也会改变。标准沃罗诺伊图使用的是 欧几里得距离,也就是我们平时熟悉的直线距离。例如:一个点距离你3米,另一个点5米,那么显然,第一个点更近。

但现实世界不一定这么简单。比如你在城市里,直线距离最近的医院,不一定是开车最快到达的医院,因为还需要考虑道路、河流、山脉、交通等各种因素。所以,“距离”并不只是欧几里得距离。如果把“距离”的定义改变,沃罗诺伊图图也会跟着发生变化。这就是数学非常有趣的地方:改变一个规则,就可能改变整个世界的形状。

一个简单的问题,创造了一整张地图

当你看到一张漂亮的沃罗诺伊图时,不要只把它看成:随机生成的彩色多边形。你其实正在看到:整个空间对于“谁离我最近”这个问题的答案。每一块区域都在回答:“这里属于谁?”每一条边界都在回答:“从哪里开始,另一个点变得更近?”每一个顶点,又代表多个区域之间非常特殊的几何关系。

沃罗诺伊图的故事其实可以浓缩成一句话:给我一些点,我就能把整个世界分给离每个地方最近的那个点。没有复杂的递归,没有神秘的公式,也没有人为设计。只有 点、距离、最近。但是当这些简单规则作用于整个平面时,一个复杂而美丽的几何世界就出现了。

从“最近”开始探索数学世界

沃罗诺伊图 展示的是 距离如何塑造空间。

你还可以继续探索 谢尔宾斯基三角形,看看如何从一个三角形开始,不断挖洞,让简单图形产生无限递归。

或者探索 科赫雪花,看看如何通过不断修改边缘,让一条简单的直线,变成无限复杂的雪花。

或者探索 希尔伯特曲线,看看让一条曲线不断递归,最终如何逐渐填满一个二维空间。

或者 分形龙,看看如何通过不断折叠,让一条简单的线形成神秘的龙形结构。

而 沃罗诺伊图 则完全不同,它不需要无限递归,只需要问 “谁离这里最近?”,一个简单的问题,就足以把整个空间变成一幅令人惊叹的数学地图。

你还可以继续欣赏更多奇妙的数学图形,或者查看维基百科上更多关于沃罗诺伊图的介绍。

想要在每次打开新标签页时都能看到这些精美的数学视觉效果吗?立即安装 Chrome 插件,将“科学盲盒”设为您的新标签页。🚀

了解详情