当前位置:文档之家› 分形曲线及matlable算法

分形曲线及matlable算法

0 koch 分形曲线在线演示 从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的两边代替,形成山丘形图形如下
在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的两条边代替,再次形成 新的图形如此迭代,形成 koch 分形曲线。
算法分析:由一条线段产生四条线段,故算法中由 n 条线段迭代一次后将产生 4n 条线段。算法针对每 一条线段逐步进行,将计算新的三个点。第一个点位于线段三分之一处,第三个点位于线段三分之二处, 第二个点以第一个点为轴心,将第一和第三个点形成的向量正向旋转 60 0 而得。正向旋转由正交矩阵
for(j=1;j<l;j++) {if(a[j]==a[j+1]&&b[j]==b[j+1]) { g=j; for(;j<l;j++) {a[j]=a[j+1]; b[j]=b[j+1]; } j=g+1;
}
} y=l; for(f=1;f<=y;f++) {c[f]=a[f]; d[f]=b[f]; } } n=4*n; }
2------------------------------------i=2; k=1; _root.fenxing.onEnterFrame=function() { with(_root.fenxing) {for(;i<=k*10&&i<=m;) { lineStyle(1,0x000000,100); moveTo(a[i-1],400-b[i-1]); lineTo(a[i],400-b[i]); trace(i); trace(a[i]); trace(b[i]); i++; }k++; if(i==m+1){
n=m;
end
plot(p(:,1),p(:,2))
flash 制作原代码 1---------------------------------------_root.createEmptyMovieClip("fenxing",1); a=new Array(1025); b=new Array(1025); c=new Array(1025); d=new Array(1025); e=new Array(1025); f=new Array(1025); a[1]=100; b[1]=100; a[2]=500; b[2]=100; n=2; for(k=1;k<=4;k++) {with(_root.fenxing) {for(w=1;w<n;w++) {c[w]=(a[w+1]-a[w])/3; d[w]=(b[w+1]-b[w])/3; }//微分 d m=5*n-4; for(z=1;z<=n;z++) { e[z]=a[z]; f[z]=b[z]; }//差距 q h=2; for(g=6;g<=m;g=g+5) {if(h<=n) a[g]=e[h]; b[g]=f[h]; h++ } z=1; w=1; for(g=2;g<=m;g=g+5) {a[g]=e[z]+c[w]; b[g]=f[z]+d[w]; z++;
2 矩形分形曲线 2 在线演示 顶部
p=[0 0;10 0];n=2; A=[0 -1;1 0]; for k=1:4 d=diff(p/3);m=5*n-4; q=p(1:n-1,:); p(6:5:m,:)=p(2:n,:); p(2:5:m,:)=q+d; p(3:5:m,:)=q+d+.7*d*A'; p(4:5:m,:)=q+2*d+.7*d*A'; p(5:5:m,:)=q+2*d; n=m;
} z=1; w=1; for(g=3;g<=m;g=g+5) {a[g]=e[z]+c[w]-0.7*d[w]; b[g]= f[z]+d[w]+0.7*c[w]; z++; w++; } z=1; w=1; for(g=4;g<=m;g=g+5) {a[g]=e[z]+2*c[w]-0.7*d[w]; b[g]= f[z]+2*d[w]+0.7*c[w]; z++; w++; } z=1; w=1; for(g=5;g<=m;g=g+5) {a[g]=e[z]+2*c[w]; b[g]=f[z]+2*d[w]; z++; w++; } } n=m; }
{ for(k=1;k<=n;k++) {x1=c[k]; y1=d[k]; x2=c[k+1]; y2=d[k+1]; j=j+1; a[j]=x1; b[j]=y1; j=j+1; a[j]=x1+(x2-x1)/3; b[j]=y1+(y2-y1)/3; j=j+1; a[j]=x1+(x2-x1)/3+((x2-x1)/3)*Math.cos(Math.PI/3)-((y2-y1)/3)*Math.sin(Math.PI/3); b[j]=y1+(y2-y1)/3+((x2-x1)/3)*Math.sin(Math.PI/3)+((y2-y1)/3)*Math.cos(Math.PI/3); j=j+1; a[j]=x1+2*(x2-x1)/3; b[j]=y1+2*(y2-y1)/3; j=j+1; a[j]=x2; b[j]=y2; l=j; }
end
plot(p(:,1),p(:,2))
flash 制作原代码 1-----------------------------_root.createEmptyMovieClip("fenxing",1); a=new Array(1025); b=new Array(1025); c=new Array(1025); d=new Array(1025); e=new Array(1025); f=new Array(1025); a[1]=100; b[1]=100; a[2]=500; b[2]=100; n=2; for(k=1;k<=4;k++) {with(_root.fenxing) {for(w=1;w<n;w++) {c[w]=(a[w+1]-a[w])/3; d[w]=(b[w+1]-b[w])/3; }//微分 d m=5*n-4; for(z=1;z<=n;z++) { e[z]=a[z]; f[z]=b[z]; }//差距 q h=2; for(g=6;g<=m;g=g+5) {if(h<=n) a[g]=e[h]; b[g]=f[h]; h++ } z=1; w=1; for(g=2;g<=m;g=g+5) {a[g]=e[z]+c[w]; b[g]=f[z]+d[w]; z++; w++;
j=j+1;r(j,:)=q1+d;
j=j+1;r(j,:)=q1+d+d*A';
j=j+1;r(j,:)=q1+2*d;
end
n=4*n;clear p
p=[r;q2];
end
plot(p(:,1),p(:,2)) koch 分形图片 flash 制作源代码 第一祯 die=4; bi=1 color=0x000000 alpha=100 stop(); 第二祯 _root.createEmptyMovieClip("koch",1); a=new Array(1025); b=new Array(1025); c=new Array(1025); d=new Array(1025); l=0; n=1; a[1]=100; b[1]=200; a[2]=500; b[2]=200; c[1]=100; d[1]=200; c[2]=500; d[2]=200; for(m=1;m<=die;m++) {j=0; with(_root.koch)
w++; } z=1; w=1; for(g=3;g<=m;g=g+5) {a[g]=e[z]+c[w]-1*d[w]; b[g]= f[z]+d[w]+1*c[w]; z++; w++; } z=1; w=1; for(g=4;g<=m;g=g+5) {a[g]=e[z]+2*c[w]-1*d[w]; b[g]= f[z]+2*d[w]+1*c[w]; z++; w++; } z=1; w=1; for(g=5;g<=m;g=g+5) {a[g]=e[z]+2*c[w]; b[g]=f[z]+2*d[w]; z++; w++; } } n=m; } 2----------------------------------------i=2; k=1; _root.fenxing.onEnterFrame=function() { with(_root.fenxing) {for(;i<=k*10&&i<=m;) {lineStyle(1,0x000000,100); moveTo(a[i-1],400-b[i-1]); lineTo(a[i],400-b[i]); trace(i); trace(a[i]); trace(b[i]); i++; } k++;
相关主题