1。算法分析
毕达哥拉斯树的三个正方形的侧面长度和角度图如下:
1。确定迭代函数:
以初始单位正方形的左下角为原点,让为左侧的角度。
(1)对于对应于左上角的正方形的函数,您需要首先按COS()进行缩放,然后逆时针旋转,然后向上翻译。它的数学表达是
这里,
下面相同。
(3)第三个函数是一个身份函数,即
它使绘制的正方形保持在当前位置不变,而前两个功能则用于添加新正方形。
2。设置概率
通常,前两个函数分别分别与小正方形的面积相同,并且可以将身份的概率设置为0,因为它不会产生新的图形更改。
3。选择初始点和迭代次数
您可以选择一个正方形的顶点,例如原点(0,0)作为初始点。迭代的数量决定了分形图的细度。一般而言,迭代越近,数字越接近真正的毕达哥拉斯树,但是计算量也将相应增加。
4。迭代
从初始点开始,根据设定概率选择迭代函数,将当前点替换为所选函数进行计算,然后获得新点。重复此过程,直到达到设定的迭代次数为止。
5。绘制图形
2。编程实施
在先前使用IFS绘制分形的想法的帮助下,给出了实现旋转和翻译的自定义构建块。
2。给出一个自定义构建块,根据概率选择转换模式:
请注意,这里相应的F1(x)为r=cos,=,e=0,f=1,示意图如下:
F1(x)的参数图
相应的F2(x)为r=sin,= – (90-)=-90,e=coscos,f=1+cossin。示意图如下:
F2(x)的参数图
3。假设参考方形的边缘长度为l,并且起点坐标是适当选择的。主要程序:
操作效果如下:
选择L=50和=62度的结果
选择L=75和=45度的结果
选择L=75和=30度的结果
与上面绘制的毕达哥拉斯树相比,相似之处和差异是什么?
用户评论
小清晰的声音
哇,这棵毕达哥拉斯树分形太漂亮了!我一直想试试Scratch画分形图,但感觉有点复杂。这个教程看起来很详细易懂,希望能跟着你一步一步学起来!
有7位网友表示赞同!
桃洛憬
IFS迭代系统真是神奇啊!以前看过这种分形图像,觉得太不可思议了。没想到可以用Scratch实现,这让我对编程的可能性有了更深的认识。
有11位网友表示赞同!
苏樱凉
我一直在折腾各种绘图软件,却始终没能画出这么美观的毕达哥拉斯树。这个教程真是宝藏!我已经迫不及待想试试用Scratch来生成分形图了。
有15位网友表示赞同!
雪花ミ飞舞
我一直觉得学编程太复杂,特别是像IFS迭代系统这种高级算法。没想到你可以用Scratch把它解释得如此简单易懂,这让我对编程更有信心了!感谢你的分享!
有15位网友表示赞同!
羁绊你
我有点疑问:为什么毕达哥拉斯树会被选作这个系列的第100篇文章?难道它的构造特别难吗?还是它有什么特别的意义?希望可以详细解释一下。
有10位网友表示赞同!
孤者何惧
终于有人科普IFS迭代系统了,以前只知道这是一种算法,却没真正了解过它的原理和应用。这篇教程正好填补了我的知识空白!
有8位网友表示赞同!
水波映月
这个教程太棒了!我已经成功画出了毕达哥拉斯树,感觉自己好像解锁了一项神奇的技能!以后我要用Scratch创建更多漂亮的分形图。
有14位网友表示赞同!
你很爱吃凉皮
我试着跟着教程操作了一下,却发现有些步骤不太清楚。希望你能添加更多的解释或截图讲解,这样更容易上手!
有20位网友表示赞同!
关于道别
Scratch的绘图功能还是比较有限的,用它来画分形图的效果可能不如专业的软件来得细腻。不过,能用Scratch学习IFS迭代系统也是一个很好的途径。
有19位网友表示赞同!
无望的后半生
我虽然不是很懂编程,但是看着这些动态生成的图形还是觉得很震撼!真希望有时间可以深入了解一下Scratch的功能以及这些算法的原理。
有15位网友表示赞同!
留我一人
这个教程的文字描述太简略了,缺少一些关键步骤说明,而且画面也比较模糊。总体来说还需要改进,这样教学效果会更好。
有6位网友表示赞同!
别在我面前犯贱
我发现使用IFS迭代系统画出的毕达哥拉斯树和其他生成分形图的方式相比,细节不够清晰。可能需要探索更复杂的算法或调整参数才能达到更好的效果。
有20位网友表示赞同!
浅笑√倾城
其实 Scratch本身虽然功能有限,但对于入门级使用者来说还是很好上手的。这篇教程用Scratch来讲解IFS迭代系统是非常有创意的!
有13位网友表示赞同!
淡抹烟熏妆丶
这个系列博文看起来很有趣!希望以后还能看到更多使用Scratch生成的各种分形图,比如曼德博集、 Sierpinski三角形等等。
有17位网友表示赞同!
有恃无恐
我对编程一点了解都没有,但看了这篇教程,竟然对IFS算法产生了好奇心。看来我需要好好学习一下编程的知识才行!
有6位网友表示赞同!
米兰
这篇文章让我意识到,分形图这种看似天方夜谭的东西,竟然可以用Scratch这个简单的编程语言实现!真让人感叹科技的力量!
有6位网友表示赞同!
不相忘
虽然我已经有一定的编程基础,但 IFS迭代系统还是让我感到比较困难。希望你能提供一些更深入的讲解或者代码示例,帮助理解其中的原理。
有10位网友表示赞同!