最近迷上了组合折纸(Unit Origami / Modular Origami),也就是折若干个一样的小单元,最后通过拼插,构造一个立体形状的折纸形式。刚开始是照着书来做,后来当然不满足于书上有限的几种组合形式,自己琢磨着做些新鲜玩意儿。于是是时候给我的“给 geek 做礼物”系列加一篇了!
至于做什么呢,今天要涉及到的是 geek 指数非常高的万能的 Mathematica(http://www.wolfram.com/mathematica/) 和强大的 Wolfram|Alpha(http://www.wolframalpha.com)。如果你家 geek 也是这两款产品的重度用户,那么做个 Mathematica 或 Wolfram|Alpha 的 logo 组合折纸模型送给对方是个不错的主意。这样你就不用花钱漂洋过海地去 Wolfram Store(https://store.wolfram.com/view/misc/index.str) 买他们的纸模型了,况且折纸做出的模型听起来要比现成的更帅一点 :)
Mathematica 对本文亦有贡献(详情见文末花絮部分)。
想要自己设计一个组合折纸作品,首先要把一个形状进行分析,理解要完成的立体形状(通常是多面体)是怎样的一个构成,这样才能知道自己要折什么样的单元、折多少个。下面我们先来看看我们要折的这两个 logo 到底是个什么。
先来说 Mathematica 的 logo。
1988 年,Mathematica 诞生,如今已经发展到第 10 个版本。Mathematica 的 logo 也有个名字,叫做“Spikey(http://mathworld.wolfram.com/Spikey.html)”,每一个版本 Spikey 都发生了一些变化。下图所示的就是 Spikey 的 10 个版本。
via Wolfram MathWorld(http://mathworld.wolfram.com/Spikey.html)
可以看到,与版本 1 相比,后续的 Spikey 已经变得非常复杂,它们是将正十二面体的每个五边形的面修改为曲面得到的(具体的构造方法见这里(http://blog.wolfram.com/2007/05/22/making-the-mathematica-6-spikey/))。我就不挑战曲面了,选择做最简单的 Mathematica 1。我们来分析一下 Spikey。
这个多面体可以这么理解:让正二十面体(上图中间的多面体)的每一个面上长出来一个正四面体,也就是以正二十面体的每个正三角形的面为底作正四面体,即可得到 Spikey。所以,Spikey 的表面总共有二十个正四面体,因此所有的面都是等边三角形,露在外面的面片数是 3 × 20 = 60 个。
由于正二十面体从每个顶点出发都有五条棱,很容易以此为基础构造出美丽的五瓣花瓣形图案,因此在组合折纸中,正二十面体的变体是最常见的结构之一。既然 Spikey 也是正二十面体为基础变化而来的,那么用组合折纸的方式做出它来也不是什么难事啦。唯一需要费点脑筋的就是正三角形的构造,用正方形纸折出 60° 其实不难,需要一点点初中几何知识。另外还有一点难办的就是还原它的颜色,我选择尽量遵循原版的配色,实在难以实现的部分用其他颜色代替了。
再来说 Wolfram|Alpha。
诞生于 2009 年的 Wolfram|Alpha 是 Mathematica 的同门师弟,因此 Wolfram 团队在想它的 logo 时,希望它既能让人联想到 Spikey 又带有自身的特色。Wolfram|Alpha 现在长成这个样子:
图中“WolframAlpha”字样前面的红红的多面体就是 Wolfram|Alpha 的 logo 啦,像一朵花一样,是从上百个方案里脱颖而出的最终赢家。这个多面体有一个名字,叫做 Rhombic Hexecontahedron(菱形六十面体)。顾名思义,它的每一个面都是菱形,总共有 60 个。
这个多面体也可以从正二十面体构造得出,不过稍微难想象一点。它其实是在正二十面体的每个三角形上长出来一个尖尖,这个尖尖是由三个菱形搭成的(如下图中间所示)。如果这样难想,我们就换一个角度,把它想成是正十二面体的每个五边形的面都捅进去一点得来的。至于两种思考方式为什么是一样的,大致是因为正二十面体和正十二面体是对偶的,正二十面体的每个面凸出来和正十二面体的每个面捅进去是一样的。
它的菱形也不是随随便便的菱形,而是一种叫做 Golden Rhombus(http://mathworld.wolfram.com/GoldenRhombus.html) 的菱形(黄金菱形),这种菱形的对角线长度之比刚好是黄金比例。比较头痛的是,要折出精确的黄金菱形有点难,好在黄金菱形的那个锐角度数大约是 63°,和 60° 非常接近,我就简化了一下模型,采用两个等边三角形拼成的菱形作为 Mathematica logo 模型的基本单元。它的折法和 Spikey 基本单元(等边三角形)是一样的,只是拼接上有些差异。
最后完成的两个模型是这样的:
铺垫了这么多,下面总算要开始讲怎么做了。想想到现在写了这么多,极有可能才占整个篇幅的 1/3,真有点懒癌发作想放弃。但这是三个月没有更新的人有脸做出的事吗!更何况后面才是我费最多力气准备的,咬咬牙继续嗯。
其实最重要的材料就是纸了。纸的选择和处理有几点注意事项:
组合折纸的特点就是重复劳动多,同样的单元要重复折出来几十个甚至上百个。但每个单元的折法其实并不复杂,有些极其简单,小朋友都可以轻松完成,但拼插出来的立体形状像万花筒一样有意想不到的效果,成就感满满,所以组合折纸应该会是一项非常有意思的亲子活动。
我们这次要折的单元在组合折纸中算非常复杂的一个了,因为要涉及到 60° 角的折叠。折法是布施知子在她的书中(http://www.amazon.com/exec/obidos/ASIN/0870408526/ref=nosim/weisstein-20)介绍的方法。虽然复杂,但重复 30 次甚至 60 次的时候就会慢慢熟练起来,我是折到第三遍基本脱离教程的,折到后面可以做到 30° 一折准,一边看电视一边折不用动脑子。
要开始了哟。
如果是单面有颜色的纸,将有颜色的一面朝下。竖着把纸对折再展开。
折纸的过程中其实处处藏着几何。经常要以一些折痕为参考,进行后续步骤。所以折叠过程中会有折一下再展开的情况。这可不是多此一举。
以左下角为轴,翻折正方形的右下部分,使得右下角正好落在第 0 步折出的折痕上。
这样我们就得到了一个有一个角是 60° 的直角三角形(右图红色的部分)。为什么是 60°?看一下画出的直角三角形,斜边刚好是原正方形的边长,其中一个直角边刚好是上一步对折后的长度,也就是 1/2 个边长。直角边等于斜边的一半,30° 角就出来了。很容易得出来红色三角形的尖角也是 30°。这个折痕是我们后续步骤中重要的轴线。
展开后,另一边也是同样的操作。
可以观察到,目前折出的三条折痕精确地交于一点。如果没有,要么是折得不够精细,要么就是纸不够方。最好能及时调整一下,因为越精确,拼插后的成品越漂亮。
将正方形的左下角折叠到交点处,右下角也做同样的处理。
展开后,正方形的底边产生了两个新的折痕交点。分别折叠正方形的两边,让左下角落到左边的交点处,右下角落在右边的交点处。这其实就是做了一个中垂线了,折痕应该垂直于正方形的底边,也就是平行于正方形的左右两边。剧透一下,这样折出来的宽度就是我们最终折好的菱形长对角线的长度了。
观察右侧,接近中点的部分有一个折痕。以折痕与右侧边的交点为轴,将右上部分翻折到下面,对齐第 1 步折出的折痕。展开。
同理翻折左上部分,然后再如图向上对折。这个步骤中我们可以猜到哪些角是 60°,事实上至此,最终菱形的四条边已经构造完成了。
这一步涉及到一种新折法,叫展开。我们捏住图中所示的红色那一层向上翻开,这个过程中压住下面的白色部分保持不动。翻开后应该是右边的样子。再将右下角沿折痕翻折上来。
和前面一样处理,只不过是换了个方向。
首先沿着中间的折痕对折整个图形,再展开。右图里可以看到一个等边三角形,那就是我们最终折好的菱形的其中一半啦。
接下来要进行一个比较复杂的展开过程,已经很难用文字和照片解释清楚了。大致就是捏住图中所示的位置沿折痕向左折叠,右上角的那一坨会自然地翻折下来。最后如下图的右边所示向上对折。
没看懂的话可以看一下下面的动态图,一遍又一遍地演示了这个过程(此处应该有掌声)。
首先我们要知道,组合折纸中,一个单元除了有它基本的形状(我们这里是那个菱形),还要有两个“口袋”和两个“触手”。口袋和触手是配套的,这样连接两个单元的时候,把其中一个的触手插进另一个单元的口袋,就连接好了。这一步中,我们就是给这个单元的口袋“缝”一个底。
把下图的阴影部分向后翻折,不仅要向后翻折,还要把阴影的小三角形塞到它后面那一层里。这一步一定要折得很牢固,因为这里就是口袋的“底”了,如果没有塞好,最后拼插的时候很容易跑出来。我们可以观察一下,现在右上部分实际上是两层,这就是口袋的“口”了,另一个单元的触手从这里进来。
下面的部分又要进行一次那个有难度的展开了。
虽然是同理,但勤劳的我还是做了一个动态图演示:
剩下的步骤也是一样一样的,只不过换了个方向。于是另一个口袋也完成了。
至此这个单元就基本做好了,但是还有些不听话的部分会翘起来影响最后的拼接,所以我们要把它们固定好。
就是下图圈出的这个部分了,我们把它塞到后面一层的小口袋里,这样它就老老实实地固定在那里,对折菱形的时候也不会轻易跑出来了。右边的也是一样的处理方式。
TADAAAA!终于完成了!虽然只是三十分之一或六十分之一,但是走到这里已经成功一半了。翻过来看,是不是看到了一个漂亮的菱形呢,你可以试着自己证明那个角的确是 60°。
最后附上一个完整折叠步骤的视频:
学会了一个单元的折法,下面要开始更需要技巧的拼插环节了。我们先来看一下两个单元是怎么拼接到一起的。Spikey 的拼接需要先把单元折叠一下,像下图那样,把它对半折成等边三角形,并把三角形两边两个多余的部分一前一后折叠。拼插的时候,把一个单元的触手伸进另一个单元的夹层构成的口袋里,推到尽头。拼接完成后是下图最右边那样。
Spikey 1 的颜色挺多的,我尽量还原了它的配色,准备了紫色、红色、黄色、蓝色四种颜色(因为纸不够,每个颜色用了深浅两种凑数,大家没必要这样)。每个颜色 8 张就足够了,最后总共只需要 30 张纸,会剩下两张。
首先我们来拼正对着我们的那一圈,它由 5 个单元组成,两个黄色、两个红色和一个蓝色。像下图最右所示的顺序,按同样的方向一个一个拼插起来。这样由 5 个单元首尾相连拼出的“五元组”是这个结构的基本元素,现在一个主体就构造出来了,后面我们要一步一步为它增加新单元。
然后拼 logo 里那一圈紫色的五角星。折出 5 个紫色的单元,分别拼到图中所示的位置。每个新单元的触手要伸进主体的一个口袋中,同时主体上的触手要插到新单元的口袋里,这样一个单元才算拼插完毕。5 个紫色单元都这样拼好。这样我们已经拼好了 10 个单元。这是第一层,我们总共要拼三层。
下面,我们再来拼下一层的 10 个单元,它们会两两一组拼插到两个紫色单元之间。先来拼其中的 4 个,颜色、顺序和插入位置如下图最右所示。以蓝色红色这一组为例,拼插的顺序是这样的:蓝色的触手插进紫色的口袋,然后红色的触手插进蓝色的口袋,最后另一个紫色的触手插进红色的口袋。
插好之后如下图最左所示,可以看到画面里左上和右上都形成了一个“五元组”。前面讲到了 Spikey 是正二十面体的变体,所以它也和 5 这个数字有密切的关系。每一个凹进去的顶点,都应该有 5 个分支。
我们再来处理第二层剩余的 6 个单元,颜色和顺序也同样摆在图中了。拼插的方法也是一样,拼插好之后,应该又多了三个“五元组”。
现在两层已经拼好了,用掉了 20 个单元。我们把它翻过来,看到最上面一层歪歪扭扭的 10 个单元,就是我们上一步加进去的单元。在开始拼插剩余 10 个单元之前,我们先把它们化简。刚才说到 Spikey 的每个凹进去的点应该有 5 个分支,而它的每个尖尖的凸出来的点,则应该由 3 个单元构成。我们把第二层上每个紫色单元两边的单元再拼接起来,构成一个“三元体”。
接下来开始拼最后的 10 个单元。因为这里是背面,不会出现在镜头里,所以我不知道他们应该是什么颜色,就自暴自弃地随便用了剩下的颜色拼上去了,这种时候我就不去计较“柜子的背面也要用好木头”了…从这一步开始,颜色不具有参考意义。首先是用 5 个单元给第二层的 5 对单元“封口”,拼成 5 个“三元组”。
拼好之后,是不是有一种错觉感觉要完工了呢?其实这个“顶”还是虚的,我们还要用最后的 5 个单元,在顶上拼接出一个“五元组”,才算大功告成。注意,到了这个阶段,因为结构已经趋于稳定,触手直接伸进口袋会变得有难度,这时候需要把触手先折短一点再插到口袋里,这不会影响最后的成品。下图最右就是大功告成的 Spikey 啦!
还记得 Wolfram|Alpha 的 logo 叫什么吗?菱形六十面体。所以我们需要做 60 个单元!全部用红色就可以了,做好之后自然会带有图中的光影效果。我的纸依然不够用,所以省吃俭用把一张 15 cm 的红纸裁成 9 张(人肉三等分很不容易的 T3T),还用了三个不同的红色才凑够 60 张。
Wolfram|Alpha 的拼接和 Spikey 稍有不同,因为它的基本面片是菱形的,不需要像 Spikey 那样对折单元,只需要把菱形两端多余的部分一前一后折好就可以了。它的拼插比 Spikey 要容易一些,但是牢固性稍差,可以考虑用胶水粘牢,或者前期用胶条辅助,全部插好之后再去掉胶条。
为了方便计数,我折单元的时候,每 5 个插好,像下图那样,这样 5 个一组 5 个一组数起来比较容易。最好一口气把 60 个都折好。这就需要将近两个小时的时间。
准备好之后,就要开始拼接了。菱形六十面体可以看作是 12 个“五角星”拼起来。所以我们就以 5 个单元为一组,首尾相连拼成下图最左所示的“五角星”。后面我们都 5 个 5 个进行拼接。
两个五角星拼好之后,我们将它们连接起来,每两个五角星会有两个角相连。第三个五角星分别和两个五角星有两个角相连。
同理我们拼插剩下的五角星们,只要遵循“每两个五角星有两个角相连”的规则,我们很快就能把 6 个五角星拼成下图最左的样子,这是整个模型的一个半球。剩下的半球当然是一样的道理,最后只需要把两个半球相连就可以了。相比之下,Wolfram|Alpha 的拼插难度很小,半小时之内一定能完成,主要的工作量集中在前期的单元折叠上。
为了让博客上的插图美美的,我特地把纸摆成下面这个样子拍了照片。
这张动图模拟了这个过程。