koch迭代分形

合集下载

计算机图形学实验报告(分形图)

计算机图形学实验报告(分形图)

实验六:分形图的生成班级11信计2班学号20110502078 姓名刘昱丞分数一、实验目的理解分形图生成的基本原理,掌握几种常见的分形图生成算法,利用TurboC实现Koch 曲线和可以无穷放大的Mandelbrot Set (曼德布洛特集)生成算法。

二、实验内容1.、利用Koch 曲线生成规则,在屏幕上生成一段Koch 曲线。

2/、利用Mandelbrot Set 生成规则,在屏幕上生成可以无穷放大的Mandelbrot Set (曼德布洛特集)三、实验步骤(1)预习教材关于Koch 曲线和可以无穷放大的Mandelbrot Set (曼德布洛特集)的生成原理。

(2)仿照教材关于Koch 曲线和可以无穷放大的Mandelbrot Set (曼德布洛特集)生成算法生成算法,使用TurboC实现该算法。

(3)调试、编译、运行程序。

四、实验要求在下次实验时提交本次试验的实验报告(实验报告包括实验目的、实验内容、实验实现过程、源程序、实验结果、实验体会)。

五、实验过程( 1 ) Koch 曲线的生成规则它的构造是:迭代初始把原线段去掉中间的三分之一,代之以底边在被去线段上的等边三角形的两腰;以后每一步的迭代都是这样的重复。

从以上过程可以清楚地看出,Koch曲线(其它分形集也是如此)可以由简单的图,称为生成元,迭代产生。

在这里,Koch曲线的生成元是:六、实验代码1/、Koch曲线源程序:#include <stdio.h>#include <stdlib.h>#include <math.h>#include <conio.h>#include <graphics.h>#define rad 0.0174532925#define NUMBER 24koch(ax,ay,bx,by)int ax,ay,bx,by;{ float cx,cy,ex,ey,dx,dy,arf,le,c;c=1000; /*30000,20000,10000,5000,1000 tiao jie ci shu */if ((bx-ax)*(bx-ax)+(by-ay)*(by-ay)<c)line(ax,ay,bx,by);else{cx=ax+(bx-ax)/3;cy=ay+(by-ay)/3;ex=bx-(bx-ax)/3;ey=by-(by-ay)/3;koch((int)(ax),(int)(ay),(int)(cx),(int)(cy)); /* koch(ax,ay,cx,cy); */ koch((int)(ex),(int)(ey),(int)(bx),(int)(by));le=sqrt((ex-cx)*(ex-cx)+(ey-cy)*(ey-cy)); /* koch(ex,ey,bx,by); */ arf=atan((ey-cy)/(ex-cx));if((arf>=0 &&(ex-cx)<0)||(arf<=0 &&(ex-cx)<0))arf=arf+3.1415;dy=cy+sin(arf+3.1415/3)*le;dx=cx+cos(arf+3.1415/3)*le;koch((int)(cx),(int)(cy),(int)(dx),(int)(dy)); /*koch(cx,cy,dx,dy);*/ koch((int)(dx),(int)(dy),(int)(ex),(int)(ey)); /* koch(dx,dy,ex,ey); */ }}main(){float xa1,xb1,ya1,yb1;float xa,xb,ya,yb;float dex,dey,dx,dy;float x,y,s1,s2;int steps,k;int gdriver=DETECT,gmode;initgraph(&gdriver,&gmode,"C:\\JMSOFT\\DRV");cleardevice();setbkcolor(BLUE);/* line(400,400,600.4,540.6); */settextstyle(1,0,3);outtextxy(100,100,"Shijiazhuang University");/* koch(340,150,100,150) ; */koch(100,300,500,300) ;getch();closegraph();return 0;}输出结果为:2.、可以无穷放大的Mandelbrot Set (曼德布洛特集)源程序:#include <graphics.h>#include <conio.h>// 定义常量#define ITERATIONS 1000 // 迭代次数,越高,图像越精细#define MAXCOLOR 64 // 颜色数/////////////////////////////////////////////////// 定义复数及乘、加运算/////////////////////////////////////////////////// 定义复数struct COMPLEX{double re;double im;};// 定义复数“乘”运算COMPLEX operator * (COMPLEX a, COMPLEX b){COMPLEX c;c.re = a.re * b.re - a.im * b.im;c.im = a.im * b.re + a.re * b.im;return c;}// 定义复数“加”运算COMPLEX operator + (COMPLEX a, COMPLEX b){COMPLEX c;c.re = a.re + b.re;c.im = a.im + b.im;return c;}/////////////////////////////////////////////////// 定义颜色及初始化颜色/////////////////////////////////////////////////// 定义颜色int Color[MAXCOLOR];// 初始化颜色void InitColor(){// 使用HSL 颜色模式产生角度h1 到h2 的渐变色int h1 = 240, h2 = 30;for(int i=0; i<MAXCOLOR/2; i++){Color[i] = HSLtoRGB((float)h1, 1.0f, i * 2.0f / MAXCOLOR);Color[MAXCOLOR-1-i] = HSLtoRGB((float)h2, 1.0f, i * 2.0f / MAXCOLOR);}}/////////////////////////////////////////////////// 绘制Mandelbrot Set (曼德布洛特集)/////////////////////////////////////////////////void Draw(double fromx, double fromy, double tox, double toy){COMPLEX z, c;int x, y, k; // 定义循环变量for(x = 0; x < 640; x++){c.re = fromx + (tox - fromx) * (x / 640.0);for(y = 0; y < 480; y++){c.im = fromy + (toy - fromy) * (y / 480.0);z.re = z.im = 0;for(k = 0; k < ITERA TIONS; k++){if ( z.re * z.re + z.im * z.im > 4.0 ) break;z = z * z + c;}putpixel(x, y, (k >= ITERA TIONS) ? 0 : Color[k % MAXCOLOR]);}}}/////////////////////////////////////////////////// 主函数/////////////////////////////////////////////////void main(){// 初始化绘图窗口及颜色initgraph(640, 480);InitColor();// 初始化Mandelbrot Set(曼德布洛特集)坐标系double fromx, fromy, tox, toy;fromx = -2.1; tox = 1.1;fromy = -1.2; toy = 1.2;Draw(fromx, fromy, tox, toy);// 捕获鼠标操作,实现放大鼠标选中区域MOUSEMSG m;bool isLDown = false;int selfx, selfy, seltx, selty; // 定义选区while(!kbhit()){m = GetMouseMsg(); // 获取一条鼠标消息switch(m.uMsg){// 按鼠标中键恢复原图形坐标系case WM_MBUTTONUP:fromx = -2.1; tox = 1.1;fromy = -1.2; toy = 1.2;Draw(fromx, fromy, tox, toy);break;// 按鼠标左键并拖动,选择区域case WM_MOUSEMOVE:if (isLDown){rectangle(selfx, selfy, seltx, selty);seltx = m.x;selty = m.y;rectangle(selfx, selfy, seltx, selty);}break;// 按鼠标左键并拖动,选择区域case WM_LBUTTONDOWN:setcolor(WHITE);setwritemode(R2_XORPEN);isLDown = true;selfx = seltx = m.x;selfy = selty = m.y;rectangle(selfx, selfy, seltx, selty);// 按鼠标左键并拖动,选择区域case WM_LBUTTONUP:rectangle(selfx, selfy, seltx, selty);setwritemode(R2_COPYPEN);isLDown = false;seltx = m.x;selty = m.y;if (selfx == seltx || selfy == selty) break;// 修正选区为4:3int tmp;if (selfx > seltx) {tmp = selfx; selfx = seltx; seltx = tmp;} if (selfy > selty) {tmp = selfy; selfy = selty; selty = tmp;}if ( (seltx - selfx) * 0.75 < (selty - selfy) ){selty += (3 - (selty - selfy) % 3);selfx -= (selty - selfy) / 3 * 4 / 2 - (seltx - selfx) / 2;seltx = selfx + (selty - selfy) / 3 * 4;}else{seltx += (4 - (seltx - selfx) % 4);selfy -= (seltx - selfx) * 3 / 4 / 2 - (selty - selfy ) / 2;selty = selfy + (seltx - selfx ) * 3 / 4;}// 更新坐标系double f, t;f = fromx + (tox - fromx) * selfx / 640;t = fromx + (tox - fromx) * seltx / 640;fromx = f;tox = t;f = fromy + (toy - fromy) * selfy / 480;t = fromy + (toy - fromy) * selty / 480;fromy = f;toy = t;// 画图形Draw(fromx, fromy, tox, toy);}}getch();closegraph(); }输出结果为:。

分形曲线与面积计算-精品

分形曲线与面积计算-精品

sinx1 cos x2
cos sin
Asin
cos

(1, 0)
1

0


cos sin


(0, 1)

0 sin

1

cos

5/11
MATLAB代码
function koch0(P,N)
end
plot(P(:,1),P(:,2)),axis off axis image
6/11
Kn的边数: Kn的周长:
Sn 4n
Ln

1 3n
4n
L0
Kn的维数: Dnln4/ln31.2618
Dn

lnN
/
ln
1

相邻两次的边数比和边长比
参考资料: 分形论——奇异 性探索,作者:林鸿溢
第 k 条边: x y((tt)) ((1 1 tt))x yk k ttyx kk 11,t(0,1)
1
L kyd 0 x [1 ( t)yk tk y 1](x k 1x k)dt
1 2(xk1xk)(ykyk1)
x L k
9/11
面积计算的数学实验报告(三选一,或题材自选)
一、 Koch分形雪花 1.算法描述Koch分形雪花
2.证明Koch分形雪花图 Kn 的边数为
Ln 34n1
3.求Koch分形雪花图 Kn 的面积
ln im Are(aKn)
10/11
二、竞赛题的实验设 (第一届全国大学生数学夏令营第6题 )
课外作业:完成面积计算的 数学实验报告(电子文档)

2017年-matlab实验内容

2017年-matlab实验内容

2017年文化素质课 MATLAB实验实验一、MATLAB基本操与运算基础【实验目的】〔1〕熟悉MATLAB基本环境,掌握MATLAB变量的使用〔2〕掌握MATLAB数组的创建〔3〕掌握MA TLAB数组和矩阵的运算【实验内容及步骤】熟悉建立数组的方法:逐个元素输入法、冒号法、特殊方法〔使用函数linspace建立〕1、有关向量、矩阵或数组的一些运算(1)设A=15;B=20;求C=A+B与c=a+b?(2)设A=[1 2 3;4 5 6;7 8 9],B=[9 8 7;6 5 4;3 2 1];求A*B与A.*B?(3)设a=10,b=20;求i=a/b=?与j=a\b= ?(4)设a=[1 -2 3;4 5 -4;5 -6 7](5)在MATLAB命令行窗口运行A=[1,2;3,4]+i*[5,6;7,8];看结果如何?如果改成运行A=[1,2;3,4]+i[5,6;7,8],结果又如何?(6)请写出完成以下计算的指令:a=[1 2 3;3 4 2;5 2 3],求a^2=?,a.^2=?(7)有一段指令如下,请思考并说明运行结果及其原因clearX=[1 2;8 9;3 6];X( : ) %转化为列向量(8)写出以下指令的运行结果>> A = [ 1 2 3 ]; B = [ 4 5 6 ];>> C = 3.^A>> D = A.^B2、设有矩阵A和B,A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 2223 24 25],B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11]1)求它们的乘积C2)将矩阵C的右下角3x2子矩阵赋给D3、完成以下操作1〕求[100,999]之间能被61整除的数及其个数〔提示:先利用冒号表达式,再利用find和length 函数。

迭代分形

迭代分形
G(i, j ) ij / L
• 一些实例 Cantor 树
w j ( Z ) ( Z 2Z j ) / 3, j 1,2,3
p1 p2 p3 1 / 3
龙曲线
w1 ( Z ) sZ 1, w2 ( Z ) sZ 1
p1 p2 1 / 2, s 0.5 0.5i
B. Mandelbrot 观察到英国海岸线与Van
Koch 曲线的关系,提出了一门描述大自 然的几何形态的学科---分形(Fractal)
英国的海岸线有多长?
• B. B. Mandelbrot
• 分形的特性 1、具有无限精细的结构 2、局部与整体的相似性 3、具有非拓扑维数,并且它大于对应的 拓扑维数
0
Z x i y, c p i q
则(2)变为
xn 1 xn 2 yn 2 p yn 1 2 xn yn q (3)
• Julia 集的绘制方法: 1、设定初值 p,q, 最大的迭代次数 N, 图 形的大小 a,b, 及使用的颜色数 K. 2、设定区域的界值
函数的迭代,不动点和有关的作图 介绍浑沌,用数值迭代、蛛网迭代和密度 分布等方法来研究浑沌

浑沌的倍周期分叉、遍历性和某些 普适结构 计算机与科学研究(即使是数学)

问题的提出

什么是浑沌?
出现在各个领域的一种现象:数学、物理、
生物、金融、经济、管理等等: 宇宙的起源 龙卷风的产生、厄尔尼诺现象 东南亚金融危机爆发 “侏罗纪公园”中的恐龙重现
In[1]:= a=1.029; b=1.48654*10^(-11); f1[x_]:=a*x-bx^2;
For[n=1979; x[1979]=9.7542*10^8, n<=2002, n++, x[n+1]=f1[x[n]]; Print[n+1, “ ”,x[n+1]/10^8]]

分形与迭代

分形与迭代

实验三迭代与分形一、实验目的与要求1.了解分形几何的基本情况;2.了解通过迭代方式产生分形图的方法;3.了解matlab软件中简单的程序结构;4.掌握matlab软件中plot, fill等函数的基本用法;二、问题描述1.对一个等边三角形,每条边按照Koch曲线的方式进行迭代,产生的分形图称为Koch雪花。

编制程序绘制出它的图形,并计算Koch雪花的面积,以及它的分形维数。

2.自己构造生成元(要有创意),按照图形迭代的方式产生分形图,用计算机编制程序绘制出它的图形,并计算其分形维数。

三、问题分析1.第一题要求我们利用一个等边三角形然后在三角形的基础上利用理论课上的Koch曲线的画法,产生一朵Koch雪花,由于Koch雪花的产生相当于将三条等长的直线分别产生的Koch曲线按照等边三角形的坐标形式组合起来然后在同一个坐标系中表示出来,这就形成了Koch雪花图案。

四、背景知识介绍1.什么是迭代迭代法是常用的一种数学方法,就是将一种规则反复作用在某个对象上,它可以产生非常复杂的行为。

我们这里介绍图形迭代和函数迭代两种方式。

(1)图形迭代。

给定初始图形F0,以及一个替换规则R,将R反复作用在初始图形F0上,产生一个图形序列:R(F0)=F1,R(F1)=F2,R(F2)=F3,…(2)函数迭代。

给定初始值x0,以及一个函数f(x),将f(x)反复作用在初始值x0上,产生一个数列:f(x)=x1,f(x1)=x2,f(x2)=x3,…2.p lot函数介绍plot是最重要最基本的二维曲线绘图指令,基本功能是画折线和曲线。

基本调用格式如下:(1)plot(Y,LineSpec)。

其中,Y一般是数组;而LineSpec是用来指定线型、色彩等的选项字符串,可省略。

本功能是以数组Y作为竖坐标,以数组元素的下标为横坐标,画出一条折线。

当数组元素很多时,就出现连续曲线的效果。

(2) plot(X,Y)。

其中,X、Y一般是相同长度的数组。

Koch分形雪花图的面积计算

Koch分形雪花图的面积计算

Koch 分形雪花图的面积计算一、问题叙述分形几何图形最基本的特征是自相似性,这种自相似性是指局部与整体在形态、功能、信息、时间、空间等方面具有统计意义上的相似。

在具有自相似性的图形中,图形局部只是整体的缩影,而整体图形则是局部的放大。

而本文我们要分析的是Koch 分形雪花图,包含以下三个问题:1.描述Koch 分形雪花2.证明Koch 分形雪花图K n 的边数为n 1L 34n -=⨯3.求Koch 分形雪花图的面积(数据),求n n lim Area(K )→∞二、问题分析在分析Koch 分形雪花图之前,我们首先介绍Koch 分形曲线。

Koch 分形曲线的绘制原理是:从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的两边代替,形成四条线段的折线,如图2.1所示:图2.1 对一条线段进行第一次Koch 分形然后,对形成的四条直线段的每一条的中间的三分之一部分用等边三角形的两边代替,形成十六条线段的折线。

这种迭代继续进行下去可以形成Koch 分形曲线。

在迭代过程中,图形中的点数将越来越多,而曲线的最终显示细节的多少将取决于迭代次数和显示系统的分辨率。

设P1和P2分别是原始的两个端点,现在需要在直线段的中间依次插入点Q1,Q2,Q3以产生第一次迭代图形。

显然,Q1位于P1右端直线段的三分之一处,Q3位于P1点右端直线段的三分之二处,而Q2点的位置可以看作由Q3绕Q1逆时针旋转60度而得到的,故可以处理Q Q 13经过正交变换而得到Q Q 12。

算法如下:(1)Q1P1+P P Q P1+P P /3;←←(2-1)/3;32(2-1)(2)T Q2Q1+Q3-Q A ←⨯(1); (3)P5P2P2Q1P3Q P Q3←←←←;;2;4。

在算法中,用正交矩阵A 构造正交变换,其功能作用是对向量作旋转,使之成为长度不变的另一向量。

在绘制Koch 曲线的过程中,取旋转的角度为3π,则正交矩阵A 应取为:cos()sin()33A=sin()cos()33ππππ⎛⎫- ⎪⎪ ⎪ ⎪⎝⎭ 1.Koch 分形雪花的描述Koch 分形雪花的原始图形是等边三角形,它是由三条相等的线段围成的三角形。

koch曲线 迭代函数

koch曲线 迭代函数

Koch曲线是一种经典的分形图形,由瑞典数学家Helge von Koch于1904年提出。

科赫曲线的生成过程是一个递归的过程,可以由以下步骤描述:首先取一条长度为1的线段,然后将其等分为三段,中间那段用等边三角形替换,之后对每个小线段进行同样的操作。

具体来说,迭代步骤如下:
1. 取一条长度为1的线段;
2. 将线段等分为三等分,中间的那一段不变,其余两段分别替换为两个等边三角形;
3. 对新得到的每一段(包括两个等边三角形和中间的线段)进行相同的操作。

这个过程会一直重复进行,直到线段的长度变为0为止。

这样,我们就可以得到一条科赫曲线。

初始线的起点和终点可以是任意的,例如[0,0]和[1,0]。

此外,我们也可以通过编程来绘制科赫曲线。

例如在Python中,我们可以使用turtle库来实现;在MATLAB中,也有专门的函数用于绘制科赫曲线。

Koch曲线

Koch曲线

Koch 分形曲线1.1 分形原理这是一类复杂的平面曲线,可用算法描述。

从一条直线段开始,将线段中间三分之一部分用等边三角形的两条边代替,形成具有5个结点的图形(图1);在新的图形中,又将图中每一直线段中间的三分之一部分都用一等边三角形的两条边代替,再次形成新的图形(图2),这时,图形中共有17个结点。

这种迭代继续进行下去可以形成Koch 分形曲线。

在迭代过程中,图形中的点将越来越多,而曲线最终显示细节的多少将取决于迭代次数和显示系统的分辩率。

1.2 算法分析算法分析:考虑由直线段(2个点)产生第一个图形(5个点)的过程。

设1P 和5P 分别为原始直线段的两个端点。

现在需要在直线段的中间依次插入三个点234,,P P P 产生第一次迭代的图形(图1)。

显然,2P位于1P 点右端直线段的三分之一处, 4P 位于1P 点右端直线段的三分之二处;而3P 点的位置可以看成是由4P 点绕2P 旋转60度(逆时针方向)而得到的,故可以处理为向量24P P 经正交变换而得到向量23P P 。

算法如下:(1) 2151()/3P P P P =+-;(2) 41512()/3P P P P =+-;(3) 3242()T P P P P A =+-⨯;图2 第二次迭代图1 第一次迭代在(3)中, A 为正交矩阵:c o s s i n 33sin cos 33A ππππ⎡⎤-⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦算法根据初始数据(1P 和5P 点的坐标),产生图1中5个结点的坐标。

结点的坐标数组形成一个5×2矩阵,矩阵的第一行为1P 的坐标,第二行为2P 的坐标,……,第五行为5P 的坐标。

矩阵的第一列元素分别为5个结点的X 坐标,第二列元素分别为5个结点的Y 坐标。

进一步考虑Koch 曲线形成过程中结点数目的变化规律。

设第k 次迭代产生结点数为k n ,第k+1次迭代产生结点数为1k n +,则k n 和1k n +之间的递推关系式为143k k n n +=-。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数学实验》报告
学院:电子与信息学院
专业班级:
学号:
姓名:
实验名称:迭代与分形
实验日期
一、实验目的与要求
1.了解分形几何的基本情况;
2.了解通过迭代方式产生分形图的方法;
3.了解matlab软件中简单的程序结构;
4.掌握matlab软件中plot, fill等函数的基本用法;
二、练习
1.对一个等边三角形,每条边按照Koch曲线的方式进行迭代,产生的分形图称为Koch雪花。

编制程序绘制出它的图形,并计算Koch雪花的面积,以及它的分形维数。

2.自己构造生成元(要有创意),按照图形迭代的方式产生分形图,用计算机编制程序绘制出它的图形,并计算其分形维数。

三、过程
1.
图一:1次迭代图二:2次迭代图三:6次迭代
原始三角形的边长d=10cm
面积S=
S0=√3/4d^2 S1=S0+3*√3/4(d/3)^2 S2=S1+12*√3/4(d/9)^2
Sn=Sn-1+3*4^(n-1)*√3/4*(d/3^n)^2
根据等比数列求和可得,n—>∞,Sn=2√3/5d^2
边长放大倍数c=3,相似形个数m=12
所以分维数d=lnm/lnc=ln12/ln3=2.26介于2和3之间
代码如下:
function plotkocht(k) %显示迭代k次后的Koch曲线图
p=[0,0;10,0]; %存放结点坐标,每行一个点,初始值为两结点的坐标
n=3; %存放线段的数量,初始值为3
A=[cos(pi/3),-sin(pi/3);sin(pi/3),cos(pi/3)]; %用于计算新的结点
r=[];
r(1,:)=(p(2,:)-p(1,:))*A';
p=[0,0;r;10,0;0,0]; %存放首次迭代的坐标
for s=1:k %实现迭代过程,计算所有的结点的坐标
j=0; % 思考:可否取为1
for i=1:n %每条边计算一次
q1=p(i,:); %目前线段的起点坐标
q2=p(i+1,:); %目前线段的终点坐标
d=(q2-q1)/3; %取中点坐标
j=j+1;
r(j,:)=q1; %原起点存入r
j=j+1;
r(j,:)=q1+d; %新1点存入r
j=j+1;
r(j,:)=q1+d+d*A'; %新2点存入r
j=j+1;
r(j,:)=q1+2*d; %新3点存入r
end %原终点作为下条线段的起点,在迭代下条线段时存入r
n=4*n; %全部线段迭代一次后,线段数量乘4
clear p %清空p ,注意:最后一个终点q2不在r中
p=[r;q2]; %重新装载本次迭代后的全部结点
end
figure
plot(p(:,1),p(:,2)) %显示各结点的连线图
axis equal %各坐标轴同比例
2.
迭代规则:对一个正三角形,首先将它分成4个小正方形,然后挖掉中间的一个。

无限次迭代下去,最终形成的图形就是了。

具体的实现如下:
迭代一次迭代两次
迭代三次迭代六次
1、图形每次减少1/4,无限次迭代后,图形的面积为零
2、相似图形个数m=4 边长放大倍数c=2图形分维数d=ln4/ln2=2
3、程序代码如下:
function plotkocht2(k) %显示迭代k次后的Koch曲线图
p=[0,0;10,0];
A=[cos(pi/3),-sin(pi/3);sin(pi/3),cos(pi/3)];
r=[];
d=[];
r(1,:)=(p(2,:)-p(1,:))*A';
p=[0,0;r;10,0;0,0]; %存放首次迭代的坐标
figure
hold on %在同一个图形窗口显示
fill(p(:,1),p(:,2),'b');
clear r
q=[];
q=p;
for s=1:k
j=0;
for i=1:3^(s-1)
p=[];
p=[p;q(3*(i-1)+1,:)];
p=[p;q(3*(i-1)+2,:)];
p=[p;q(3*(i-1)+3,:)];
q1=p(1,:);
q2=p(2,:);
q3=p(3,:);
d1=(q2-q1)/2;
d2=(q3-q1)/2;
d3=(q3-q2)/2;
j=j+1;
r(j,:)=q1+d2;
j=j+1;
r(j,:)=q1;
j=j+1;
r(j,:)=q1+d1;
d=[d;r(j,:)];
j=j+1;
r(j,:)=q2+d3;
d=[d;r(j,:)];
j=j+1;
r(j,:)=q1+d1;
j=j+1;
r(j,:)=q2;
j=j+1;
r(j,:)=q3;
j=j+1;
r(j,:)=q1+d2;
d=[d;r(j,:)];
j=j+1;
r(j,:)=q2+d3;
hold on %在同一个图形窗口显示
fill(d(:,1),d(:,2),'r');
d=[];
end
clear q
q=r;
clear r
end
hold off
axis off
axis equal %各坐标轴同比例
set(findobj(gcf,'type','patch'),'edgecolor','none')。

相关文档
最新文档