📄 random_center.m
字号:
%中点位移法生成分形曲面的步骤如下:
%(1)从初始的三角形出发,求出各边中点(M1,M2,M3);
%(2)在该中点处,沿铅垂方向向上产生一个位移W,该位移 ...
%量与边长成比例,比例因子可以随机产生,或由一些均
%匀分布的随机数组成的集中取出,三条边中点处产生位
%移,得到三个新的点(D,E,F,其中是AB线段得到的,E是
%BC线段得到的,F是AC线段得到的);
%(3)将三个新点和原三角形的三个顶点相联接,产生四个新
%的三角形,即ΔADF,ΔBDE,ΔCEF,ΔDEF;
%(4)对每个子三角形做同样的操作,如此不断迭代(递归)循
%环,直到满足终止条件为止。
%一般说来,中点位移量是一个随机变量,并且必须随三角形
%的子分而不断变小。
%在上述分形曲面的生成过程中,通过三角形的不断被子分
%而整个表面弄成皱折,产生类似于山脉的形状——分形山。
%matlab对应程序如下:
function random_center(Z,N);
% 三角形中点位移法分形曲面生成[均匀]
% Z is the position of three points.
% N is the times of recursion.
% Example:
% random_center([0,6,3+4i],4);
% Author's email:zjliu2001@163.com
% 2005.05.22
%
Z=random_center_C(Z,0,N);
Z(:,4)=Z(:,1);
hold on
for k=1:size(Z,1);
plot(Z(k,1:end))
end % 根据数据绘图
function [Z,T]=random_center_C(Z,n,N);
% 计算数据
if n<N;
zz=[];
R=rand;
for k=1:size(Z,1);
L=sum(abs(diff([Z(k,1:end),Z(k,1)])));;
ze=mean([Z(k,1),Z(k,2)])+abs(Z(k,1)-Z(k,2))*R*i/L;
zf=mean([Z(k,3),Z(k,2)])+abs(Z(k,3)-Z(k,2))*R*i/L;
zg=mean([Z(k,3),Z(k,1)])+abs(Z(k,3)-Z(k,1))*R*i/L;
zz=[zz;[ze,zf,zg]];
zz=[zz;[Z(k,1),ze,zg]];
zz=[zz;[Z(k,2),ze,zf]];
zz=[zz;[Z(k,3),zf,zg]];
end
Z=zz;
Z=random_center_C(Z,n+1,N);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -