Polyhedron Fractal

Tetrahedron Fractal (Sierpinski Pyramid)

MATLAB code

function tetrahedronFractal

vert=[+1 +1 +1

-1 -1 +1

-1 +1 -1

+1 -1 -1];

face=[1 2 3

2 3 4

1 3 4

1 2 4];

sca=1/2;%scale factor

level=5;%level of recursion

drawFractal(vert,face,sca,level)

axis equal

view(3)

end

function drawFractal(vert,face,sca,n)

if n>0

vnew=vert;

for k=1:length(vert)

vnew(:,1)=vert(:,1)+vert(k,1);

vnew(:,2)=vert(:,2)+vert(k,2);

vnew(:,3)=vert(:,3)+vert(k,3);

if n==1

patch('vertices',vnew,'faces',face,'facecolor','r');

end

drawFractal(vnew*sca,face,sca,n-1);

end

end

end

Octahedron Fractal

MATLAB code

function octahedronFractal

vert=[1 0 0

-1 0 0

0 1 0

0 -1 0

0 0 1

0 0 -1];

face=[3 5 2

5 3 1

6 3 2

3 6 1

4 5 1

5 4 2

4 6 2

6 4 1];

sca=1/2;%scale factor

level=3;%level of recursion

drawFractal(vert,face,sca,level)

axis equal

view(3)

end

function drawFractal(vert,face,sca,n)

if n>0

vnew=vert;

for k=1:length(vert)

vnew(:,1)=vert(:,1)+vert(k,1);

vnew(:,2)=vert(:,2)+vert(k,2);

vnew(:,3)=vert(:,3)+vert(k,3);

if n==1

patch('vertices',vnew,'faces',face,'facecolor',rand(1,3));

end

drawFractal(vnew*sca,face,sca,n-1);

end

end

end

Menger Sponge

MATLAB code

function mengerSponge

vert=[1 1 1

1 1 -1

1 -1 1

1 -1 -1

-1 1 1

-1 1 -1

-1 -1 1

-1 -1 -1];

face=[1 2 4 3

1 5 6 2

5 6 8 7

7 8 4 3

1 3 7 5

2 4 8 6];

%offset points

offPoints=[1 1 1;1 1 -1;1 -1 1;1 -1 -1

-1 1 1;-1 1 -1;-1 -1 1;-1 -1 -1

0 1 1;0 1 -1;0 -1 1;0 -1 -1

1 0 1;1 0 -1;-1 0 1;-1 0 -1

1 1 0;1 -1 0;-1 1 0;-1 -1 0];

sca=1/3;%scale factor

level=2;%level of recursion

drawFractal(vert,face,offPoints,sca,level)

axis equal

view(3)

end

function drawFractal(vert,face,offPoints,sca,n)

if n>0

off2=sca*offPoints*2;

v = sca*vert;

vnew=v;

for k=1:length(offPoints)

vnew(:,1)=v(:,1)+off2(k,1);

vnew(:,2)=v(:,2)+off2(k,2);

vnew(:,3)=v(:,3)+off2(k,3);

if n==1

patch('vertices',vnew,'faces',face,'facecolor','r');

end

drawFractal(vnew,face,offPoints,sca,n-1);

end

end

end