求用L系统方法,用Mathematica软件编写的Koch雪花曲线的程序

求用L系统方法,用Mathematica软件编写的Koch雪花曲线的程序,第1张

xuehua[x_List] :=

Module[{a = {}, n = Length[x], i},

For[i = 1, i <n, i++,

a = Join[

a, {x[[i]],

x[[i]] 2/3 + x[[i + 1]] 1/衫旁3, (x[[i]] 2/3 + x[[i + 1]] 1/3) +

RotationMatrix[2 \[Pi]/则悉3].(x[[i]] - x[[i + 1]]) 1/3,

x[[i + 1]] 2/3 + x[[i]] 1/3, x[[i + 1]]}]]a]

Manipulate[

Show[Graphics[

Line[Nest[xuehua[#] &, {{0, 0}, {1, 0}, {1/2, 3^(1/2)/或盯橡2}, {0, 0}},

k]]], AspectRatio ->Automatic], {k, 0, 4, 1},

SaveDefinitions ->True]

下面是一个某教程的实例

一、制作影片剪辑元件

1.设置宽600高450的工作舞台区;

2.将“图层1”的名称改“背景”,在背景图层的第1帧导入一幅背景图像并调整大小和位置;

3、插入-插入元件,腔前选择影片剪辑,取名叫雪花飘名称,回车,进入编辑状态并制作“雪花飘落”引导动画,在第一层用铅笔工具画一个从上到下的曲线,模拟雪花下降的轨迹,在第二层放一个雪花素材,或自己绘一个,并转成图片元件。在第一桢,选中这个雪花元件对准上一层的曲线上端,在第N桢插入关健桢,把雪花元件拖到下面曲线的另一端。然后选中第一层,右健,点引导层。再选中第二层,右健,属性,把补引导层勾上。

4、回到主场景。

二、制作动画:

1、在“背景”图层上面添加一个“雪花飘飘”的图层,选中该图层的第1帧,把库面伍棚清板中的“雪花飘落”影片剪辑元件拖曳到舞台左上角,并把实例命名为xhp

2、在“雪花飘飘”上添加一个“AS"的图层,选中该图层的第1帧,按F9调出“动作”面板,动作面板中输入如下程序;

xhshu=0

//定义雪花的数量初始值为0

xhp._visible=false

//场景中xh实例为不可见和裤

3、选中“Action"图层的第2帧,按F7插入一个关健桢,然后在“动作”面板中输入:

xhp.duplicateMovieClip("xhp"

xhshu,xhshu)//复制一个名称为“xhp"加序号的实例

newxh=_root["xhp"

xhshu]//将复制好的新实例xhp的名称用newxh替代

newxh._x=Math.random()*600//赋给newsxh实例X坐标一个0~600之间的随机数

newxh._y=Math.random()*10//赋给newxh实例Y坐标一个0~10之间的随机数

newxh._rotation=Math.random()*100-50//赋给newxh角度一个体-50~50度间的一个随机数

newxh._xscale=Math.random()*40

60//赋给newxh水平宽度比例60~100之间的随机数

newxh._yscale=Math.random()*40

60//赋给newxh垂直宽度比例60~100之间的随机数

newxh._alpha=Math.random()*50

50//赋给newxh透明度一个50~100之间的随机数

xhshu

//变量xhshu的值自动加1,即雪花数量加上1

4、选中脚本程序的第3帧,按F7,在“动作”面板中输入

gotoAndPlay(2)//跳转到第2帧。

5、关闭动作面板,在第二层的第三桢按F5顺延第二层的桢,第三层也同样 *** 作。

按Ctrl

Enter

测试,OK

如有不明,请留下邮箱信息,我发一个源文件给你参考。

分形几何 是几何数学中的一个分支,也称大自然几何学,由著名数学家本华曼德勃罗( 法语:BenoitB.Mandelbrot)在 1975 年构思和发展出来的一种新的几何学。

分形几何是对大自然中 微观与宏观 和谐统一之美的发现,分形几何最大的特点:

整体与局部的相似性:  一个完整的图形是由诸多相似的微图形组成,而整体图形又是微图形的放大。

局部是整体的缩影,整体是局部的放大。

具有自我叠加性:  整体图形是由卜伍困微图形不断重复叠加构成,且具有无限叠加能力。

什么是分形算法?

所谓 分形算法 就是使用计算机程序模拟出大自然界的分形几何图案,是 分形几何数学 与 计算机科学 相融合的艺术。

由于分形图形相似性的特点,分形算法多采用递归实现。

2. 分形算法

2.1 科赫雪花

科橘基赫雪花是由瑞典数学家科赫在 1904 年提出的一种不规则几何图形,也称为雪花曲线。

分形图形的特点是 整体几何图形 是由一个 微图形结构 自我复制、反复叠加形成,且最终形成的整体图案和微图形结构一样。在编写分形算法时,需要先理解微图案的生成过程。

科赫雪花的微图案生成过程:

先画一条直线。科赫雪花本质就由一条直线演化而成。

三等分画好的直线。

取中间线段,然后用夹角为 60° 的两条等长线段替代。

可在每一条线段上都采用如上方式进行迭代 *** 作,便会构造出多层次的科赫雪花。

科赫微图形算法实现:

使用  Python  自带小海龟模块绘制,科赫雪花递归算法的出口的是画直线。

importturtle'''

size:直线的长度

level: 科赫雪花的层次

'''defkoch(size, level):ifn ==1:        turtle.fd(size)else:foriin[0,60, -120,60]:            turtle.left(i)# 旋转后,再绘制koch(size //3, level -1)

参数说明:

size:  要绘制的直线长度。

level:  科赫雪花的层次。

0 阶和 1 阶 科赫雪花递归流程:

importturtleturtle.speed(100)defke_line(line_, n):ifn ==0:        turtle.fd(line_)else:        line_len = line_ //3foriin[0,60, -120,60]:            turtle.left(i)            ke_line(line_len, n -1)# 原始直线长度line =300# 移动小海龟到画布左下角turtle.penup()turtle.goto(-150, -150)turtle.pendown()# 1 阶科赫雪花di_gui_deep =1ke_line(line, di_gui_deep)turtle.done()

2 阶科赫雪花:

可以多画几个科赫雪花,布满整个圆周。

importturtleturtle.speed(100)defke_line(line_, n):ifn ==0:        turtle.fd(line_)else:        line_len = line_ //3foriin[0,60, -120,60]:            turtle.left(i)            ke_line(line_len, n -1)# 原始线长度line =300# 移动小海龟画布左下角turtle.penup()turtle.goto(-150, -150)turtle.pendown()# 几阶科赫雪花di_gui_deep =int(input("请输入科赫雪花的阶数:"))whileTrue:# 当多型念少科赫雪花围绕成一个圆周时,就构成一个完整的雪花造型count =int(input("需要几个科赫雪花:"))if360% count !=0:print("请输入 360 的倍数")else:breakforiinrange(count):    ke_line(line, di_gui_deep)    turtle.left(360// count)turtle.done()

4 个 3 阶科赫雪花:  每画完一个后旋转 90 度,然后再绘制另一个。

6 个 3 阶科赫雪花:  每画完一个后,旋转 60 度再画另一个。

科赫雪花的绘制并不难,本质就是画直线、旋转、再画直线……

2.2 康托三分集

由德国数学家 格奥尔格·康托尔 在1883年引入,是位于一条线段上的一些点的集合。最常见的构造是 康托尔三分点集 ,由去掉一条线段的中间三分之一得出。

构造过程:

绘制一条给定长度的直线段,将它三等分,去掉中间一段,留下两段。

再将剩下的两段再分别三等分,同样各去掉中间一段,剩下更短的四段……

将这样的 *** 作一直继续下去,直至无穷,由于在不断分割舍弃过程中,所形成的线段数目越来越多,长度越来越小,在极限的情况下,得到一个离散的点集,称为康托尔点集。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12476890.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存