粉丝159获赞1063

同学们,今天呢,我们来学习这个函数吊用的一种新的方法叫地归, 这个呢难度有一点大啊,你要好好学,注意听啊。在我们这个海归编辑器里边模板作品里面啊,有一个叫可可雪花啊,这个难度稍微大了一点,我们点击把它打开, 哎,这就是函数啊,他的程序,那么这个程序运行以后是什么样子呢?我们点击运行,看他在画一个 啊,雪花,这个雪花还六角形,可是呢,他每一个小的雪花呢,也是 一个六角形,它是相互叠加而形成的这种自相似图形,在数学上呢,这叫分型啊,这是这个运行的结果,那么这个程序是怎么做出来的?我们看这个雪花这么复杂呢,程序是不是也很复杂呢? 我们看一看这个程序,好像也不是很复杂,我看程序只有这么多啊,但是这个程序运行起来呢就比较麻烦了。 好,我把这个呃程序也给他稍微修改了一下,把其他的其中的一些变量名改成中文名字,这样呢便于大家理解。来,咱们看看这个程序,这程序呢首先,嗯,咱们 看看这个程序啊,他是怎么运行的,首先注视分享雪花,设置变量梯,为新画笔,设置一个新画笔,然后定一个函数是 no, 它的参数是赛子和 n 两个参数, 然后又定一个函数,照照画画,哎,这个函数呢是这么长,然后开始进入拍摄的世界,就是运营这个,呃,就调用这个函数,照这就使用这个照这个函数,而这个呢他比较复杂啊,我们首先呢 看,我们把这个层次这个变量设为一,我们运行一下这个程序,我们看这时候画了一个六角 的雪花,这个相对比较简单,哎,如果呢,我们把这个层次改为二,这个变量改为二,那么运行以后这个雪花就变得复杂了一点了,是不是啊?哎,刚才咱们运行的那个层次为三, 那么这个程程序他的运行方式是怎么运运行的呢?啊?咱们就先以呃这个层次为一, 这样这个例子,我们来看一看他程序的运行在这里呢, 我画了一个这个程序的呃运行的这个示意图,咱们可以看看,对着这个示意图,看 看这个程序是怎么运行的啊?咱们看,首先呢,这程序开始设置电量,题为新画笔,然后呢 就是开始进入拍摄世界,就是使用函数照,这是函数照,照呢设置梯的速度 为零 t 台笔一到 x 负二百外一百这个位置,然后握笔设置 t 的粗细,设置一个变量,层次为一,咱们看这个变量的这一个梯,一个角度数一个层次,这几个梯是画笔,这个层次呢就这里设置的, 然后呢他要调用斯 no 这个函数,斯诺这个函数他有两个参数,一个是塞子,一个是 n, 然后呢咱们看一看我们画的这个图,首先 呢这开始新画笔,他就开始调用照这个函数,这个函数,台笔移到这个位置,然后呢层次 n 等于一,然后就要用斯 nosno, 这时候塞子等于二百 n 呢,就是层次,是不是啊?那咱们回到程序里边看这个 snow 这个函数, 那思路的函数开始呢,就是一个是塞子,一个是 n, 如果 n 等于零,那么它向前移动,现在 n 显然不等于零,那就移动就执行,否则这里的依据那就是用变角度数来辨离列表零六十负一百二十六十,是吧? 啊,这时候呢,他要开始执行这个 snow 这个函数,哎,这个 snow 这个函数呢,他要便利 零六十负一百二十六十啊,这个在执行的时候呢,咱们看啊,要左转这个角度数,这个角度数,最后开始列便利这个列表字开始零,那就左转零度,然后呢咱们按下面个注视函数调用自身,这种调用方式叫做地归, 都是地硅石,参数变小,化的是更小的雪花。咱们看这个斯诺函数里边又调用了这个函数斯诺, 而且这回这个塞子呢,变成原来的塞子除以三, a 呢,变成 n 减一,就是说这个尺寸呢,变成参数变小了,那么这时候怎么运行呢?你们看 啊,这个斯诺这个函数,他又调用了这个斯诺函数,这个时候呢,他的参数原来我们看是四百,是不是啊?塞子等于四百除以三等于一百三十三, 哎,原来是一,那一减一变变成零了,这时候又这时候运行这个思路的函数是一一百三十三点三零,这时候呢,我们根据这个思路的函数,这时候参数 n 等于零,那就直行 t 向前移动塞子步塞子了,就是刚才设置的这个, 他就向前移动了一百三十三点三步,然后呢返回,返回继续执行这个便利,刚才便利了领,那么下面开始便利六十,便利六十的时候,那么这时候呢 啊,他们他要怎么做呢?这里六十就是左转六十度,然后再调用这个函数 snow, 是吧?转来六十度,然后再直行这个 snow 啊,咱们看这个 snow 呢,呃,是还是这个变 量,原来是四百,那么除以三点到一百三十三点三,这个 n 是一一减一等于零啊。注意哈,咱们这个函数在调用这函数的时候,如果呢,他调用函数是这一次调用,那么他使用的参数呢?就是啊,原来函数的参数, 而,呃下一次就要用呢啊,那么函数呢?就是这个函数内部的参数呢?和这个是不一样的,是不是啊?咱们以前讲过,这叫局部变量,函数的参数在函数内发生变化,那么只能作用到这个函数内部 啊,还对函数之外那是没有作用的,是吧?这叫局部变量啊,咱们知道啊,这里定义的这些变量都是局部变量,所以呢,他只在这个函数内部起作用,原来这个变成零了,可是在这呢,他还是使用原来的 参数一,哎,这时候左转六十度以后,他再用定调,用这个四六函数,就是一一百三十三点三零,那么还要再前一一百三点三十三点三,然后再返回,返回再执行,这个便利,便利了,左转一百二十度, 左转一百二十度呢,他要再便利,哎,他要再这个调用这个函数, 哎,电话函数,他又变成了这个,再前前移动一百三十三点三,然后再返回,返回以后呢,再便利这个六十度,左转六十度,然后再执行。 那么在这个过程中,咱们看看这个,呃,函数运行过程中,他啊,他画图是怎么画出来的。首先做台笔,落笔到一, 移动到这个位置,负二百一百,然后呢这个变量都不说了,然后调用函数 sno, 那么左转零度没有作用,然后前移一百三十三点三,这就是第一步,移动了这么多, 然后返回左转六十度,那就这左转六十度,是吧?然后呢再调用四 no, 再前移, 那就是第二,是吧?这个第二段,然后左转一百二,负一百二十度,那么一负一百二十度,就是呃,和左转的方向相反,那就是向右转一百二十度, 那就是这个在这个肩肩上转动,然后再向前移动一百三十三点三,那就是这三第三步,然后再返回,再左转六十度,然后再前移一百三十三点三,这第四步啊, 这个第四步啊,完成以后他就返回,返回呢便利完了,这函数就返回,返回到这个照这个函数,然后呢开始直行踢右转一百二十度,右转一百二十度呢,那就是这个 这个到这个肩的位置,这个脚的位置就是这是第五步。第五步执行以后呢,又是这个 snow 啊,塞子四百 n 等于一,那么他就再执行刚才这个便利,就是又是一二三四这样执行,执行完以后,他又变成了 到了这一步,那就变成了踢右转一百二十度,哎,就是变成了这个角到这个位置,他再右转一百二十度,一百二十度,那么然后再执行这个思路这个函数,再执行这个思路这个函数的话,他又是 像刚才这样要不断的进行地归吊用啊,这个函数呢,咱们看斯诺这个函数,在使用的时候,他又调用了这个斯诺这个函数,这就叫地归吊用 低微调用的时候,咱们看哈这个参数在不断发生变化,然后再返回,返回以后呢,哎,这个又执行了一二三四,最后又返回到起点了,画了一个,嗯,这个六角形的雪花, 这是 n 等于一的时候,我们设置了层次等于一,这样他啊,调用的结果啊,那么 如果呢,我们把这个层次设为二,设为二的时候,我们运行一下,这时候这个小孩形状就更复杂了, 是吧?那么这时候他程序是怎么运行的呢?咱们还是呃,看 看一看我们这个画的这个程序流程呢,是一图, 这程序变得更加复杂了啊,咱们看这是画出来的图形,当然画的不太像,意思你就知道了。首先呢,这个做画笔替代人性画笔,然后做画,然后抬笔,然后移动到这个位置,负二百一百, 然后落笔,这时候层次等于二,然后调用函数斯诺,这个斯诺斯诺呢?呃,参数是四百二,然后呢他要便利零六十,负一百二十六十,然后开始执行啊,执行的是首先呢左转领,然后再次调用斯诺,斯诺,这个参数要除以三, 是吧?除以三变成了一百三十三点三,这个 n 呢,变成了二减一,等于一,然后再调用斯诺函数,调用这个斯诺,这个函数和刚才那个一样哎,他是向前移动了四十四点四,然后返回,返回呢,再遍地六十, 然后在便利付一百二十,然后再便利六十,然后再返回,返回以后呢,他是返回到这一集了,这一集这个斯诺的吊用,在这一集,这个斯诺吊用这个 n 等于二啊, n 等于二的时候呢 啊,这个函数呢啊,他要因为恩不对零,根据这个函数的调养规则,他还是要使用这个恩不对恩,恩不对零的话,执行者,否则这个语句,是吧?所以呢,他就要右手左转六, 然后再执行斯诺,这个斯诺这个函数和那个一样,哎,又执行了一遍,哎,执行了一遍以后呢,哎,他要再执行向前移动一二三四,然后再返回, 然后再左转负一百二十度,然后再调用 snow, 再执行这个 snow 一百三乘零三一,然后再执行着一,再要啊,画着一二三四个四五,然后再返回, 然后好了再左转六十度,然后再直行 snow 一百三十三点三一,再直行,然后再返回。 啊,这个这个函数的,他的这个斯诺这个函数,你看他调用了一次这个斯诺函数,再调研一次啊,斯诺函数,然后里边又调用了这个斯诺这个函数,调了三次,是吧? 然后再返回,返回到这啊,咱们这个过程中呢,咱们看画的这个雪花呢,就更复杂了,首先呢,咱们说他第一步是一二三四啊,不过刚才咱们看,由于这个函数多次吊用,这个 snow 呢,除以三的次数多了,这时候他 这个赛字的这个数值呢,原来是四百,最后出一三,再出一三,就变成了四十四点四,所以移动的距离变短了,是吧?这移动的方向呢,那咱们还是和以前一样要一二三四, 等到返回以后,这个呢要左转六十度,哎,这时候呢,就是第五步啊,在这第五步,然后再来个一二三四,哎,到了这呢就是再做左转负一百二十度,那就是第六,在 这个脚这个位置,他就是第六步,就是直行到这,然后呢右个一二三四,然后呢再左转六十度, 左转六十度,这是第七步,是吧?哎,然后呢再执行一二三四,哎,这是执行到了这一步,然后呢返回,返回以后呢,咱们看他就开始执行右转一百二十度,那这就是第八步, 第八步执行完了,这个图形已经花了这么多了,然后呢他要再执行这个 so cs 四百 n 等于二, 就是把这个过程再执行一遍,那么画出来图形和他是一样的,那就是重复一遍,跑到这,是吧,然后踢,再右转一百二十度啊,到这再右转一百二十度,再执行这个死闹这个函数, 哎,再执行一遍,最后有回答的起点啊,这个函数的运行过程呢啊,这个啊,咱们看他,是啊非常的复杂,这个函数调用了自身, 哎,画出来图形了,越来越复杂,但是电量自身的过程中,我们一定要设置这个函数呢,他是呃最后能够退出循环的,否则他就无限循环了。我们看在这里呢,他因为使用的这个 n, 这个 n 呢是不断减一的,最后呢 n 等于零的话, 他就是向前移动,哎,他就程序呢就可以返回,而且这个呃 n 不等于零的话,我们用的是便利的方法,他是有限次数,所以他不会出现无线循环啊,等到最后呢,这车停这个图形就花完了啊,所以呢可以看 看到这个程序呢,虽然不是很复杂,但是运行起来他是怎么运行的?这个呃,道理呢,理解起来就是比较难。好,这里呢我们使用的 n 等于二,当然了这个层次等于二,如果你把层次换的更复杂,换成三, 还就是把层次这个变量稍微三,我们再运行一下,我们看,哎,这时候画出来的雪花是不是比以前的更加复杂,这等于三,这画出来的雪花如果呢,我们再增加,把这个层次改为四, 我们看这时候他画出来的雪花是这样, 我们看这个雪花呢,它变得更加复杂, 但是他总的外形呢,都是六角形的,这和自然界的雪花是一样的,这个自然界的雪花也是从整体上看都是六角形的,但是他的细微的结构呢,是非常复杂的。啊。 好,今天呢,我们就学了这么多,希望你把程序的道理好好搞明白,自己也试一试。

科赫曲线模型科赫曲线是一种分型,其形态似雪花,所以又称科赫雪花或雪花曲线。科赫曲线可以由以下步骤生成,先绘制一个等边三角形,将每条边分成三等份, 以此作为边长,在每条边的中间再绘制一个向外的等边三角形,移除中间线段。第一次分型就完成了。 将过程做成动画,我们看到原来的三条边就变成了现在的十二条边。继续对这十二条边重复以上的步骤,理论上可以一直重复,这样绘制出来的图形就是苛刻曲线,参考代码如下, 每天一分钟跟我学拍摄,我是凯哥,关注我。


大家好,今天接着跟大家来分享麦特 pot level 里面的单某啊,今天我们要实现这个效果,画三张图啊,然后第一张图是蓝色的, 第二张图是一个浅肉色的啊,然后外面是一个橘色的一个边框啊,第三幅图啊,他没有填充任何颜色啊,只有一个紫色的边框啊,我们把代码考到我们的 pyx 里面去 啊,代码我已经考好了啊,他仍然是调用了一个科赫的那个圣斗夫雷克就血片的那个图形 啊,就这个方法他就会返回一个列表啊,这个列表就是 在描述这个坐标轴里面啊,这个形状的相关点啊,这个算法我们在上一次课里面啊,已经分享过了啊,这一次就不再分享这个方法了 啊,我们唯一要分享的一个东西就是啊,这几行代码啊,他首先把 pe 啊,做了一个空的拉派数组啊,用 p 点 mt, 然后用这个 pe 的四倍的长度 啊,这个 nupoints 是这个 pe 的四倍长度,然后我们看这个低太啊,低太不等于 n p complex 幺二八啊,就是他是一个 复数的形式,关于复数的定定义就是复数由这个时部和虚部组成啊, 十步其实就是一个数啊,然后虚步它是一个旋转角度啊,这就是那个复数的意义。 然后我们给这个妞 point 词进行复职啊,他这个切片这种写法就是从第零个元素开始啊,到最后结尾啊,每隔四个元素啊,把这个 pe 付给这个妞 points 啊,这,这是这行代码的意义。然后这个代码是妞 points 啊,从第一个元素开始啊,每隔四个元素也给他付一个数组啊,这个就是 p 一加上 dp 斜杠三啊, 在拿派里面这种速度的加法,其实就是在每个元素上进行一个加值啊,然后我们接着给妞 point 是进行第二次复制 啊,也是从第二个元素开始,然后负啊,每隔四个元素就负一次值啊。还有这个 nupon 是也是这样的,就是从第三个元素开始啊,每隔四个元素啊负一个值啊,然后把这个数组就广播到这个新的数组里面去 啊,这就这几行代码的意思。然后这个方法啊,苛刻斯诺弗雷克啊,他就会返回一个, 返回一个坐标系啊,就是这个 xy 啊,他就是把十步啊作为 x, 然后虚步啊,鹰麦子啊,就是 y, 然后把 x y 返回我们这边,再看一下这个图啊,这个图他这个传的这个 调用这个苛刻的雪花片的这个方法,他传到 odos 啊,就是有两次这种这个三角的生长过程,然后每次就是啊在原前的原弦的每条线段上啊,就生成一个 啊,他是一个地位的形,形式啊,就会一直地位下去,我们可以看一下零啊,这个这个之前也演示过,我们可以看一下零啊,他就是三角,然后当时一的时候啊,他就在这个三条边上,每条边都长出一个角,我们可以给个一 啊,当我们这个凹造等于一的时候啊,他就在以前这个边上生长出一个三角啊,我们可以给等于二的时候啊,他又会在这个每条边上再次伸出一个角啊,这边又多了一个角啊,每条这种 啊,直线边上啊,多了个角,等于三的时候,他在这个小边上又生成一个角啊,他这个就是用了一个地规的算法啊,就这个 科赫圣奴弗雷克啊,这个方法里面是地规啊,我们可以看到啊,他地规的点就在这里啊,就调用这个方,自己调用的方法 啊,就二大减一啊,当我们给他四的时候,他会调动这个方法啊,啊四减一,三啊三传进来以后,他会直 二点一,就这样一直进行地规,把这个形状给画出来啊,这个 苛刻的这个图形。其实这个算法啊,是理解起来是比较难的,但是我们做这个填充是很容易的啊,我们可以看一下我们这个麦特 pos leg 里面啊,这些关键代码 啊,他这边拿到了这个 x y 啊,这个 x y, 就是啊这个坐标系里面啊,每个点的一个位置, 然后我们要画这三画这三幅图啊,就这三幅图,然后 我们调用这个 plt 的三步 pos 方法啊,我们一和三,就是一行三列啊,这三一行三列,这个三个坐标系啊,然后飞高赛日啊,传一个九比三 三啊,就是九百到九百和三百这一个那个宽高比, 然后这边有个三步炮的 k 位特,就是一些比较重要的权重啊,这边调调用 spac 一扣啊,就让这个这个,每个这个图都是一个正方形啊, 然后我们调用 x 一的方法啊,就画这个蓝色的图啊,就 x 一 x 这个废物,废物。方法啊,就是填充的方法,他是 xs 的一个方法,我们把这个坐标传进去,就是这上面所有点的坐标 xy 传进去啊,他就会沿着这个所有坐标把这个图给填充出来啊,这是最普通的啊,默认是蓝色且没有边框 啊,我们调用 x 二角 fu xy 啊,就这个图,这个图就多了一个边框,我们可以看一下传入 x 坐标周的一个数组啊,这是 y 坐标周的一个数组, 然后调用这个菲斯卡罗就浅景色啊, lets 三亩啊,就是浅肉色啊, 就这个里面这个颜色是浅肉色的颜色,然后我们设设置他这个边的颜色,爱是卡了啊,奥润这个橘色的,橘红色的一个边框, 然后我们可以设这个莱外的死啊,就这个边框的的宽度是三,我们可以给他一个大一点的死治愈冲击力 可以看一下啊,这个就是这个边框是特别大的,这个冲击力太大,我们把冲击力改小一点 啊,这个就是啊,这个我们把这个字改小了啊,他们还能保持基本的形状啊, 我们看一下这个紫色这个图啊,这个紫色的图他没有前景色啊,就是调用这个废物方法啊,传入 x 轴的一个速度啊, y 轴这个速度,然后菲斯卡拉纳就是没有前景色,直接就是白色的, 然后调用这个 is carlo, 就是这个啊,边框的颜色就是 poppo, 就是紫色, 然后调用这个来外的,是等于三啊,就是这个边,就这个边啊,是三,这个这个图形还是挺好看的, 最后调用 plt 的瘦啊,就把这个三个图画出来了啊。其实我们最重要的方法就是这个废物方法啊,至于苛刻的这个雪花片的这个算法,就是算出这个 坐标系里面所有点啊,这个需要依赖几个重要的知识点啊,第一就是复数啊,我们需要对复数的十步和虚步啊,这个进行进行这个理解啊,我们才能把这个点给画出来 啊。第二个啊,另外个知识点就是啊,一般我们在这个里面都是用 角度啊,其实为了画图方便啊,一般人家都是把角度就是这个所谓的角度,就是说九十度啊,八十度,就这种这种描述的形式,需要换成这种弧度,我们需要习惯这种弧度的描那个描述, 如果大家想画这种图,需要把这两个知识点都要搞清楚,才能画出这样的图啊,可能还需要不停的尝试,大家学会了吗?如果学会了就给我点个赞吧,谢谢。