?? liubian.m
字號:
function liubian(n);
% 六邊形分形;
% n 為遞歸次數,亦即分形的層數;
clc;close all;clear;
if nargin==0; % 設定遞歸次數n
n=5;
end
rand('state',3); % 將當前狀態重設到狀態3,
% 使每次程序運行時生成的各個分形六邊形的顏色不變
C=rand(n+5,3); % 生成一個(n+5)*3的隨機矩陣C,對各個分形填色
figure;
axis square equal; % 保持縱、橫坐標的刻度單位一致
% axis([1 11 -1 1]); % 設定標度范圍
grid;hold on;
a=-pi/6; % 設定六邊形的偏轉角度。a=-pi/6時,六邊形有一條邊平行于y軸
p=0; % 設定六邊形中心位置。p=j時,中心位置為(j,0)
r=1; % 設定六邊形的半徑,即中心到頂角的距離
[p,r,n,a]=liuliu(p,r,n,a,C);
function [p,r,n,a]=liuliu(p,r,n,a,C);
% 繪制六邊形,該函數通過遞歸實現對六邊形的分形;
% p 是六邊形的中心位置;
% r 是六邊形的半徑;
% n 是遞歸次數;
% a 是六邊形的偏轉角度;
% C 是顏色矩陣;
s=0; % 設定六邊形的中心偏移量,從而可得到分形的生成過程
z=p+r*exp(i*([0:6]*pi*1/3+a))+s; % z 是主六邊形的中心位置
z1=p+2*r*exp(i*([0:6]*pi*2/3+a))/4+s; % z1 是主六邊形內各個分形的中心位置
pf=fill(real(z),imag(z),C(n+2,:)); % 生成一個已填色的六邊形
set(pf,'EdgeColor',C(n+3,:)); % 設定六邊形邊緣的顏色
if n>0;
[z1(1),r,n,a]=liuliu(z1(1),r/2,n-1,a,C); % 繪制主六邊形的分形
n=n+1;r=r*2;
[z1(2),r,n,a]=liuliu(z1(2),r/2,n-1,a,C);
n=n+1;r=r*2;
[z1(3),r,n,a]=liuliu(z1(3),r/2,n-1,a,C);
n=n+1;r=r*2;
[z1(4),r,n,a]=liuliu(z1(4),r/2,n-1,a,C);
n=n+1;r=r*2;
[z1(5),r,n,a]=liuliu(z1(5),r/2,n-1,a,C);
n=n+1;r=r*2;
[z1(6),r,n,a]=liuliu(z1(6),r/2,n-1,a,C);
n=n+1;r=r*2;
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -