APP下载

算法练习

2021-06-28

电脑报 2021年10期
关键词:那契弧线边长

斐波那契数列又称黄金分割数列,而斐波那契螺旋线是在斐波那契数列为边长的一系列正方形中绘制一个90度的弧线,将这些弧线连接起来组成的一条漂亮的螺旋线,又称为“黄金螺旋”。自然界中存在许多“黄金螺旋”的图案,不得不感叹大自然的鬼斧神工(图1)。

先思考斐波那契螺旋线的绘制算法,需要产生符合斐波那契数列的数字(0,1,1,2,3,5,8,13……),这个数列可以用递归的方法定义F0=0,F1=1,Fn=F(n-1)+F(n-2)。接着按这个数列绘制出对应边长的正方形并拼接在一起,然后绘制出对应的弧度进行组合完成“黄金螺旋”。

接下来思考用Scratch完成这个算法需要将绘制过程分为几个步骤。对应分成三个步骤:1.绘制正方形;2.计算斐波那契数列;3.绘制弧线(图2)。

開始编程,删除小猫角色,新增铅笔角色用于绘制正方形,在绘制前先在造型中将笔尖的位置调整到中心。初始化画笔的粗细、角色大小、抬笔状态。接下来考虑需要使用的变量,变量有三个:“正方形的边长”,从图中观察到初始值是1;为了用递归产生斐波那契数列的数字,还需变量F1初始值0和F2初始值1。图中有六个正方形,所以可以定义循环重复执行6次(也可以手动输入其他循环次数)。增加两个自制积木:“绘制正方形”和“计算斐波那契数列”;正方形的绘制比较简单,就不细说了,用(“正方形的边长”×30)让正方形大小更好看。需要注意一个细节,画完一个正方形后下一个正方形的起点不是在上一个正方形的终点,图2中绿色箭头标注的就是前三个正方形的起点,仔细分析知道画完后还要移动两次。绘制完一个正方形后用自制积木“计算斐波那契数列”计算出下一个正方形的边长。到这一步结束后,我们已经完成了所有正方形框的绘制。接下来是对弧线进行绘制了(图3)。

正方形用蓝色绘制,螺旋用红色绘制,所以需要创建一个新的空白角色用于绘制螺旋线。初始化画笔粗细、起始位置、抬笔状态。弧线角度为90度,重复执行10次,每次右旋转9度。确定旋转时移动的步数要稍微难一些。直接告诉你答案,这里用(“正方形的边长”×30×0.154)。为什么是0.154倍呢?本来移动步长应该为以正方形边长为半径的弧线长的十分之一(πr/2÷10=0.157r),不过考虑到画笔还有3的粗细,所以经过调整为0.154倍边长。

“黄金螺旋”只是数学中的六大经典螺旋之一,还有“费马螺旋、阿基米德螺旋、双曲螺旋”都是非常有意思的图形,大家也可以去尝试挑战一下自己哦。

猜你喜欢

那契弧线边长
有趣的斐波那契数列
魔术存钱罐
不规则抽象
大楼在移动
冲 浪
从斐波那契数列的通项公式谈起
疑似斐波那契数列?
弧线人生
弧线人生
斐波那契数列之美