steam上的游戏《Zen trails》(暂译为禅径)是一款充满几何美感的绘图游戏。
其绘图规则为:
由某一点作为起点,给出一个线段。以起点为圆心,线段长度为半径,开始旋转画圆,记录下另一端点的轨迹。
该端点也可以作为新的圆心,随着原图形一起运动。
就像地心说的本轮、均轮一样。
可以自由搭配,调整参数。
游戏中有自带的引导过程,不过都是英文,没有中文版本。不过英语水平不需要太高也能学会操作。不过顺便插一嘴,选中点之后按C可以复制整个子树,复制中可以按R进行90°的旋转,非常有用,而这个操作教程中并没有提及。
要想画出想要的图形,更重要的是创意和一些绘图规律。教程中给出了一些常用的绘图技巧,比如画直线,画花瓣状,但是远远不够。
接下来是我自己整理的一些简单的基础规律。不进行数学证明。
画法不唯一。这里只是进行了一些比较容易掌握的画图技巧。有时候随便设置参数,也能画出相同效果。
首先给出一些概念定义,方便我表达,也方便你理解。
我将①节点称为根,挂在它下方的所有次级节点都称为它的叶子,比如②所指的两个节点。
红框内的是初始的,世界坐标固定不动的原点。原点称为0级节点,其叶子称为1级节点,1级节点的叶子称为2级节点,以此类推。
当我说“速度比为a : b : c : d : ……”时,指的是从1级节点开始,顺次向后的各层级节点的速度比。
规律开始。只考虑使用至多2级节点的情况。
1、绘制同心圆,或实现“包边”效果
将下级节点的速度设置为0即可。即节点不自己转动,完全跟从上级节点运动。
可用于绘制同心圆。
对于极短的下级节点,将速度设为0,可以实现如下的“包边”效果。
2、绘制N边形
使用两个层级节点,速度比置为1 : -N,同时调整两杆长度以达到较好的观感。
此法可以通过调整两杆长度来绘制不同的图形,但其本质是相同的,即顺次向内卷曲绘制。
3、绘制椭圆
使用两个层级节点,速度比置为1 : -2,调整两杆长度和初始位置来画不同的椭圆。
此法以椭圆的长轴与短轴确定形状。
椭圆长轴=两杆长之和
椭圆短轴=两杆长之差的绝对值
特别地,
当椭圆短轴=两杆长之差的绝对值=0,也就是两个杆长相等时,椭圆就只剩一个长轴了,也就是绘制直线段。
此时直线段的方向为:2级节点和原点的连线,长度为两杆长之和,且原点平分该线段。
4、绘制N角星
首先我们来定义一下什么是角星。当然这是我个人定义的,没有采用严格的数学定义(如果有的话)。
角星,星状图形,从某一星尖点开始,向另一星尖点画直线段,能够一笔画完的图形叫做角星。其中,各星尖点共圆,且平分圆周,除去角后可得一个正多边形。参考“五角星”。
相对应的,芒星,星状图形,由多个完全相同的正多边形,中心重叠,顺次旋转一定角度后形成的图形,各星尖点共圆,且平分圆周。参考“六芒星”。
最低角数量的角星为五角星。可以肯定没有六角星,不确定更高数量的角星一定存在。
最低角数量的芒星为六芒星。可以有奇数芒星,如三个五边形构成十五芒星。
N角星绘制方法:以下公式均使用两个层级节点
初级公式:
速度比置为1:-N/2
其中要保证N/2的结果不为整数。因为如果为整数,结果将是N/2边形。
进阶版公式:该公式可以一定程度上调整角星图形,使得大小更容易控制,且使得绘制高数量角星时不会太快而出现不够平滑的现象。
速度比置为1:-N/m
其中m为2的次幂,同样要保证N/m的结果不为整数,且要保证N/m结果大于2。
要注意,当N/m不大于2时,或者说所有速度比为1:k的时候,k不大于2时,会呈现花朵状。也很漂亮。此时花朵多为复瓣,瓣数为N。
高手公式:较为复杂的公式,但是可以更好地调整形状。不够万能,有一定缺陷。为观察归纳的结果,暂时没有试出例外。
速度比置为:Q:-K
Q:取一位小数,数字处于(0,1)的开区间内,且不为0.1。如0.3,0.2,0.7等等。
K:取一位小数,数字处于(1,10)的开区间内,且不为Q的整数倍(这也是为什么Q不能为0.1的原因。K取一位小数的话,必定是0.1的整数倍),否则绘制的将是边形,边数为K/Q(是几倍就画几边形)。
之所以取一位小数,是为了防止速度过大(比如99角星)造成的绘制结果不平滑,于是进行了10倍放缩。只归纳了100角以内的。
要画出N角星,则K取N/10,同时10倍的Q(就是去掉小数点)与10倍的K(也就是N)不可有除1外的公因数。
例如,要画出22角星,则K取2.2,Q不可以取0.2、0.4、0.6、0.8,因为2、4、6、8都与22有除1外的公因数。故Q只能取0.3、0.5、0.7和0.9。其中,Q越大,第二杆就可以适当地更长一点,角就越长,越尖细。
一旦10Q与10K有了公因数,那么就应当约分到最简。此时10K约分后的结果即为绘制图形的角数。若10Q被约分成了1,那么将绘制边形。
比如,绘制22角星,K取2.2,而Q取了0.6,那么结果将等同于K取1.1,Q取0.3(同时除以2),结果将是11角星。
此外,Q,也就是1级节点的速度对形状有一定影响。
现在已知:
当Q小于K/2时,第一杆长度大于第二杆才能画出尖锐的角尖,否则画出花瓣状。
当Q大于K/2时,第一杆长度则应当小于第二杆,才能画出尖锐角尖,否则为花瓣。
当第一杆长度大于第二杆时,从一个星尖点(或花瓣尖)向另一个星尖点(或花瓣尖),一笔连过去的那条线上,会夹有(10Q-1)个星尖或花瓣。
当第一杆长度小于第二杆时,相应位置则会夹有(10K-10Q-1)个星尖或花瓣。
如下图,10Q=2,那么①和②这两个一笔连过去的线上,存在有1个星尖。
而上图Q取0.3的11角星,相同位置存在3-1=2个星尖;Q取0.9的22角星,对应地存在9-1=8个星尖。
如下图,0.8大于1.3/2,要画出尖角则需要第二杆长于第一杆,且一笔连过去的线上,存在有13-8-1=4个星尖
5、绘制N芒星
只需绘制数个完全相同的边形即可,同时调整其初始位置。
K个边形则1级节点间夹角(360°/K)即可。
数个2级节点可以公用同一个1级节点,夹角即为数个2级节点间的夹角,度数同上。
6、中心放缩相似图形
在只使用两个层级节点时效果最佳。层级越多越混乱。
速度比设置为:A:B:-B:B。此时,速度为B的节点将会绘制相似图形。可以通过调整杆长来调整相似比和弯曲程度。
7、绘制两个相同图形,并修改位置
完整的表述应当是这样的:
以一个绝对静止的点,或者由本条定律作用下产生的从动的相对静止点为起点,向后延伸出3个层级的节点。当这3个层级的节点速度比a:b:c,满足a+b+c=0时,第3层级点跟随第2层级点运动,并与第2层级点保持世界视角下的相对静止,也就是第3层级点跟随第2层级点,绘制相同的图形。
例如上图,原点为绝对静止点,由此延伸出①、②、③三个节点,且速度比为1:-2:1,和为0。则②和③保持相对静止,绘制出两个完全一样的椭圆。
③为此法产生的从动的相对静止点,向后延伸出④、⑤、⑥三个节点,速度比为1:-2:1,和为0。则⑤和⑥也保持相对静止,绘出椭圆。
其余均不变,将④、⑤、⑥三个节点,速度比改为-2:1:1,和为0。则⑤和⑥仍然相对静止,绘出两个完全一致的图形。
该效果同步绘制出完全一致的图形,包括方向、大小、形状等都相同,可以用于平移、复制图形。
8、更普适的绘制两个相同图形,并修改位置的方法
完整的表述如下:
以一个绝对静止的点,或者由本条定律作用下产生的从动的相对静止点为起点,向后延伸出n个层级的节点。当这n个层级的节点速度比a:b:c:……,满足:
a+b+c+……=0
时,最末2个层级点保持世界视角下的相对静止,且最末层级点为从动点。
也就是最后两个节点同步地绘制相同的图形。
它具有包含性:在延伸出的n个层级节点中,若前k个层级节点速度比之和为0,则前k个层级点也满足该定律。即第k节点跟随第k-1节点从动,并相对静止。
比如,从原点延伸5个点,速度依次为:1,-2,3,-4,2,和为0。则第5点跟随第4点相对静止移动。
若延伸7个点,速度依次为:1,-2,3,-4,2,2,-2,和为0,前5点速度和也为0。则第5点跟随第4点相对静止移动,第7点跟随第6点相对静止移动。但第6点和第5点无相关关系。
这个技巧很有用。当你调试出一个非常棒的图形,想要它原样复制多份,连方向都不改变时,只需要再添加一个节点,保证这个节点追溯到原点,所经历的所有节点的速度和为0即可。