Serpinski's gasket fractal
a := [1,1];
b := [2,3];
a+b;
0.5*b;
PLOT( CURVES([[0,0],[0,1],[1,1],[1,0]],COLOR(RGB,1,0,0)), AXESSTYLE(NONE) );
PLOT( POLYGONS([[0,0],[0,1],[1,1],[1,0]],COLOR(RGB,0,1,0)), AXESSTYLE(NONE) );
PLOT( POINTS([[0,0],[0,1],[1,1],[1,0]],COLOR(RGB,0,0,1)), AXESSTYLE(NONE) );
?plot,structure
tri := proc(a,b,c) POLYGONS( [a,b,c], COLOR(RGB,1,0,0) ) end;
PLOT( tri([0,0],[0,1],[1,1]) );
mid := sqrt(3.0)/2;
EquilateralTriangle := [0,0],[0.5,0.866],[1,0];
serp := proc(a,b,c,n)
local m1,m2,m3;
if n=0 then return tri(a,b,c) fi;
m1 := 0.5*(a+b);
m2 := 0.5*(b+c);
m3 := 0.5*(a+c);
serp(a,m1,m3,n-1), serp(m1,b,m2,n-1), serp(m3,m2,c,n-1) ;
end:
PLOT( serp(EquilateralTriangle,4), AXESSTYLE(NONE) );
Karatsuba's fractal is composed of squares intead of triangles but it is still Serpinski's gasket.
square := proc(a,b,c,d) POLYGONS([a,b,c,d],COLOR(RGB,0,0,1)) end:
kara := proc(a,b,c,d,n)
local m1,m2,m3,m4,mid;
if n=0 then return square(a,b,c,d); fi;
m1 := 0.5*(a+b);
m2 := 0.5*(b+c);
m3 := 0.5*(c+d);
m4 := 0.5*(a+d);
mid := 0.5*(a+c);
kara(a,m1,mid,m4,n-1), kara(m1,b,m2,mid,n-1), kara(m4,mid,m3,d,n-1);
end;
PLOT( kara([0,0],[0,1],[1,1],[1,0],4), AXESSTYLE(NONE) );