几何画板及分形.docx
《几何画板及分形.docx》由会员分享,可在线阅读,更多相关《几何画板及分形.docx(23页珍藏版)》请在冰豆网上搜索。
几何画板及分形
几何画板迭代与深度迭代
迭代是几何画板中一个很有趣的功能,它相当于程序设计的递归算法。
通俗的讲确实是用自身的结构来描述自身。
递归算法的特点是书写简单,容易明白得,可是运算消耗内存较大。
迭代:
按必然的迭代规那么,从原象到初象的反复映射进程。
原象:
产生迭代序列的初始对象,通常称为“种子”。
初象:
原象通过一系列变换操作而取得的象。
与原象是相对概念。
更具体一点,在代数学中,如计算数列1,3,5,7,9......的第n项。
咱们明白
,因此迭代的规那么确实是后一项等于前一项加2。
以1作为原像,3作为初像,迭代一次后取得5,再迭代一次取得7,以此类推。
在几何学中,迭代使一组对象产生一组新的对象。
上图中A、B、C、D、E、F,各点相距1.88cm,那么怎么由A点和B点取得其它各点呢?
咱们能够发觉其中的规律确实是从左到右,每一个点相当于前面一个点向右平移了1.88cm。
因此咱们以A点作为原像,B点作为初像,迭代一次取得B点,二次为C点,以此类推。
迭代像确实是迭代操作产生的象的序列,而迭代深度是指迭代的次数。
利用几何画板的深度迭代功能能够画出许多美好的分形图形,并以几何画板为基础来研究分刑图形面积,周长的转变。
一、谢尔宾斯基三角形
利用几何画板画法流程:
(1)先任意画好一个三角形ABC,接着构造线段AB,BC,CA的中点D,E,F,选择点D,E,F,再选择菜单“构造”、“三角形内部”。
(2)在“图表”中“新建参数”为n=3.依次选择点A,8,C和参数n,按住shift键不放后选择“变换”中的“深度迭代”。
(3)在初象中依次选A,D和F点,再添加新的映射(按Ctrl+A),映像2中依次选D,B和E点,再按Ctrl+A,依次选F,E和C点。
最后选“迭代”,取得谢尔宾斯基三角形。
选择n按“+”或“一”,三角形就进行了迭代转变。
n=1
n=2
n=3
n=4
n=5
随着有色三角形愈来愈多,空白三角形愈来愈少。
咱们假设用有色三角形表示去掉的部份,,那么剩下的面积可能趋向于0,而剩下部份的周长呢,,设分形级数为n,初始边长为1,
1新产生的小三角形数量为
②一个新小三角形边长为
1③谢尔宾斯基三角形周长为
④谢尔宾斯基三角形面积为
;
⑤当n→∞时,显然其周长趋向于无穷大,面积趋向于零。
闻名的埃菲尔铁塔正是以它作为平面图的.因为这种三角形结构能够节省材料而且强度大,尽管铁塔并无把分形进行到无穷,可是它已经能在这种条件下完成了重力的转移,充分表现了这项工程的出色,同时也显示了谢尔宾斯基三角形无尽的魅力.
二、分形树
分形树制作流程:
(1)画好线段AB,取中点C,双击B点,以B为旋转中心将C旋转120。
得E点,旋转一120。
得D点。
(2)新建参数n=3,依次选点A,B和n,用“深度迭代”将,B映射到B,E和B,D就
能够了.然后能够改变参数,观看分形树的生长。
n=2
n=3
n=10
1.在垂直方向上画线段AB,在AB左上区域任取一点C。
2.气宇CB,BA的长度,计算CB/BA;气宇CBA的大小。
3.双击C点作为旋转中心,旋转角度为CBA,旋转B取得点E;继续以CB/BA为缩放比例,E点缩为F点;双击线段CB作为标记镜面,取得F点关于线段CB的对称点G。
连接GC,FC。
4.双击线段AB作为标记镜面,取得C、F、G关于线段AB的对称点D、H、I,连接BD、HD、ID。
5.新建参数n=3。
按序选择A、B、C三点和参数n,作深度迭代,(A,B,C)(B,C,G),(B,C,F),(B,D,H),(B,D,I)。
n=2
n=3
n=4
n=5
毕达哥拉斯树
【步骤】
1.在屏幕上以任取两点A和B,作正方形ABCD,以CD为直径作圆O,取半圆弧OCD,在该弧上任取一点E,接CE,DE。
隐藏没必要要的对象。
2.填充四边形ABCD,气宇ABCD的面积。
选择四边形和气宇结果,单击【显示】【颜色】【参数】。
那么四边形的颜色会随它的面积转变而转变。
3.新建参数n=4,选择A、B和n,作深度迭代,(A,B)
(D,E),(E,C)。
n=3
n=4
n=5
n=10
n=20
L—分形树
一、构造初始元
作始元竖直线段AB,在AB上作两点A1,A4,以A1为中心别离按角度36度旋转B取得B1,按角度126度旋转A4取得B4,以B为中心别离按角度-171度旋转A1为B2,按角度144度旋转A1为B3,连接A1B1、BB二、BB3、A4B4、取得以下生成元
生成元
二、删除生成元中的四枝杈线段,显示出初始元AB,新建参数n=5,以n为深度,将生成元A—B别离在A1—B1,B—B2,B—B3,A4—B4上执行深度迭代,隐藏各点取得L—分形树。
n=6(L—分形树)
以上方式所作的分形树是线性(自相似)分形树,其变换是相似变换,属于确信型L—分形,不能取得生动传神的植物拟态图形。
要模拟出栩栩如生的植物形态,就要引入随机L—分形。
1、作始元
做初始元竖直线段AB和线段CD,在CD上作点P,气宇出点P在线段CD上的值,按以下图左侧公式计算气宇值。
标记m1,以A为缩放中心B得A1,以B为缩放中心A得A4。
标记m2,以A1为中心旋转B得B1。
标记m3,以B为中心旋转A4得B2。
标记m4,以B为旋转中心旋转A1得B3;标记m5,以A4为标记中心旋转A得B4,连接连接A1B一、BB二、BB3、A4B4、取得以下生成元
生成元:
二、删除生成元中的四枝杈线段,显示出初始元AB,新建参数n=5,以n为深度,将生成元A—B别离在A1—B1,B—B2,B—B3,A4—B4上执行深度迭代,隐藏各点取得随机分形树。
n=6(随机分形下的L分形树)
桧树分形小枝
绘制桧树分形小枝的生成元
同Koch曲线生成元的构造类似,桧树分形小枝生成元的构造也是通过必然的规那么对单位长线段F0进行修改变换而取得。
具体变换规那么如下:
如以下图所示,桧树分形小枝的生成元由五条长度相等的线段组成,设每条线段长度为r,第一条线段AC和最后一条线段EB与水平线的夹角相等,都是10°,AC左端点A与F0左端点重合,EB右端点B与F0右端点重合,CD与CE成60°角,EF与EB成60°角。
具体C++程序设计语言如下:
#include/*添加画图函数头文件*/
#include/*添加数学函数头文件*/
#include
#include
usingnamespacestd;
#definepi3.1415926
voidhuishu(doublex0,doubley0,doublex1,doubley1,intk);
intmain(void)
{
intn,gdriver=DETECT,gmode;/*概念迭代次数n*/
printf("Pleaseinputthevalueofthepositiveintegern(n<9):
");
cin>>n;
/*输入迭代次数n*/
initgraph(&gdriver,&gmode,"");/*图形系统初始化*/
setcolor(GREEN);
huishu(50,250,550,250,n);/*画桧树分形小枝*/
getch();
closegraph();
return0;
}
voidhuishu(doublex0,doubley0,doublex1,doubley1,intk)
{
doublex2,y2,x3,y3,x4,y4,x5,y5,x11,y11,x22,y22;
doubler,t;
t=pi/18;
r=(2*cos(t)-sqrt(4*cos(t)*cos(t)-3.0))/3.0;/*r的计算式*/
x11=r*x1+(1-r)*x0;
y11=r*y1+(1-r)*y0;
x22=r*x0+(1-r)*x1;
y22=r*y0+(1-r)*y1;
x2=(x11-x0)*cos(t)-(y11-y0)*sin(t)+x0;
y2=(x11-x0)*sin(t)+(y11-y0)*cos(t)+y0;
x4=(x22-x1)*cos(t)-(y22-y1)*sin(t)+x1;
y4=(x22-x1)*sin(t)+(y22-y1)*cos(t)+y1;
x3=(x4-x2)*cos(6*t)-(y4-y2)*sin(6*t)+x2;
y3=(x4-x2)*sin(6*t)+(y4-y2)*cos(6*t)+y2;
x5=(x1-x4)*cos(-6*t)-(y1-y4)*sin(-6*t)+x4;
y5=(x1-x4)*sin(-6*t)+(y1-y4)*cos(-6*t)+y4;
if(k>1){
huishu(x0,y0,x2,y2,k-1);huishu(x2,y2,x3,y3,k-1);
huishu(x2,y2,x4,y4,k-1);
huishu(x4,y4,x5,y5,k-1);
huishu(x4,y4,x1,y1,k-1);
}
else{
line(x0,y0,x2,y2);
line(x2,y2,x3,y3);
line(x2,y2,x4,y4);
line(x4,y4,x5,y5);
line(x4,y4,x1,y1);
}
}
n=5
n=10时,运算机运行时,能够动态模拟迭代的进程