▷Scratch课堂丨雪花曲线【递归解说】

从一个正三角形开始,把每条边分成三等份,然后以各边的中间长度为底边。分别向外作正三角形,再把“底边”线段抹掉,这样就得到一个六角形,它共有12条边。再把每条边三等份,以各中间部分的长度为底边,向外作正三角形后,抹掉底边线段。反复进行这一过程,就会得到一个“雪花”样子的曲线。它由瑞典人科赫于1904年提出,这曲线叫做科赫曲线或雪花曲线。

01

—效果展示(1-4级)—

02

—代码展示—

03

—知识要点—

  1. 数据模块中变量创建与使用

  2. 控制模块中循环和条件表达式的使用

  3. 动作模块的使用

  4. 画笔模块的使用

  5. 角色在舞台上中心坐标的使用

04

—脚本解说—

在开始介绍雪花曲线的画法之前我们先来认识一个术语“递归”(递归概念比较简单,但是实际运用中理解起来还是有难度的)

什么是递归?

  一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法被称为递归,递归做为一种算法在程序设计语言中广泛应用。 那么这句话怎么理解呢?我们来scratch来做一个例子看一下。

图中我们自定义了一个模块(过程)倒计时,在定义这个过程中直接调用了自身倒计时,直到数字小于0.

我们再来看看其他人怎么理解这个递归的吧。

  递归就是包子馅的包子。它的极限是馒头。

  山上有座庙:

  从前有座山,山上有个庙,庙里有个老和尚,有一天,老和尚给小和尚讲故事。讲的故事是:山上有座庙

当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。也可以理解为自我复制的过程。

 由于雪花曲线是从三角行不断变换得到,因此我们绘制雪花曲线之需要关注一条边的变化规律即可,想办法画出来,另外两条边都是完全一样的。下面我们从0级开始,看看这个三角形底边是如何一级一级发生变化的。

0级(三角形):画直线

1级:0级(1/3长度)右转60度  0级(1/3长度)左转120度 0级(1/3长度)右转60度 0级(1/3长度)

2级:1级(1/3长度)右转60度 1级(1/3长度) 左转120度 1级(1/3长度) 右转60度 1级(1/3长度)

依次类推:

  4级:3级(1/3长度)右转60度 3级(1/3长度) 左转120度 3级(1/3长度) 右转60度 3级(1/3长度)

  ...

  n级:n-1级(1/3长度)右转60度 n-1级(1/3长度) 左转120度 n-1级(1/3长度) 右转60度 n-1级(1/3长度)

 我们发现了这样的规律那么在程序中该怎么写呢?这里就用到了我们开始所讲到的递归。

  打开scratch->更多积木->添加新的积木块:我们自定义一个模块“绘制边”这里需要两个参数,一个是变化的级数,另一个是长度,如果是0级就直接绘制一个线段停止,否则就按照上面的规律:级数-1级(1/3长度)右转60度 级数-1级(1/3长度)左转120度 级数-1级(1/3长度)右转60度 级数-1级(1/3长度)

这样这个程序的核心部分就完成了,代码很简洁,不过理解起来有点难,需要多去想想理解。

  画边的程序做好了,我们只需要像画三角形一样,拼接起来即可。接下来我们来完成这个程序,画出这个曲线吧。

05

—脚本获取—

获取脚本代码可以点击原文获取。最后,如果觉得不错,欢迎大家点个赞,如果还有不明白的地方可以评论留言哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青少儿编程课堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值