Sierpinskyn tetraedri
Perustetraedri
Pakkauksen plottools funktoilla voidaan helposti luoda geometrisia olioita. Tetraedri saadaan komennolla
tetrahedron
Aloitetaan lataamalla grafiikkapakkaukset.
> with(plottools):with(plots):
> perustetra:=tetrahedron([0,0,0],1):
> display(perustetra,scaling=constrained);
Perustetran pohjakolmion kärjet:
> kolmionkarjet:=[0,2*sqrt(2)/sqrt(3)],[-sqrt(2),-sqrt(2)/sqrt(3)],[sqrt(2),-sqrt(2)/sqrt(3)],[0,2*sqrt(2)/sqrt(3)];
> display(curve([[0,2*sqrt(2)/sqrt(3)],[-sqrt(2),-sqrt(2)/sqrt(3)],[sqrt(2),-sqrt(2)/sqrt(3)],[0,2*sqrt(2)/sqrt(3)]],color=red,thickness=5));
Origo on pohjatahkon projektion mediaanien leikkauspistessä. Itse asiassa tetraedri sijaitsee siten, että avaruuskoordinaatiston origo on tetraedrin "keskipisteessä".
Tetraedrin kärjet ovat:
> karjet:={[0,0,sqrt(3)],[0,2*sqrt(2)/sqrt(3),-1/sqrt(3)],[-sqrt(2),-sqrt(2)/sqrt(3),-1/sqrt(3)],[sqrt(2),-sqrt(2)/sqrt(3),-1/sqrt(3)]};
>
Tetraedin kutistus ja siirto kärkiin (iteraatioaskel)
> siirrot:=map(x->1/2*x,karjet);
Skaalataan perustetra kertoimella 1/2 kunkin sivun suunnassa ja siirretään tämä tetraedrin puolikas vuorollaan
kuhunkin perustetran kärkeen. Siirtovektoreina on (1/2)*(O,K), missä K on kärki.
map on tehokas operaattori, jonka avulla sama asia voidaan tehdä yhtäaikaa monelle kohteelle.
> pikkutetrat:={seq(translate(scale(perustetra,1/2,1/2,1/2),op(t)),t=siirrot)}:
> display(pikkutetrat,thickness=2,scaling=constrained);
Kun tartutaan hiirellä kuvaan ja pyöritetään sitä, nähdään havainnollisesti kärkiin siirretyt pikkutetrat ja keskelle jäävä aukko.
Jatketaan samaalla tavoin, iteroidaan
Toistetaan edellä tehty operaatio kuhunkin pikkutetraan.
> siirrot:=map(x->1/2*x,karjet):
> N:=3: # Iteraatioiden lukumäärä
>
for k from 2 to N do
uudetsiirrot:=map(x->x/2^k, karjet):
siirrot:={seq(seq(t+tuusi,t=siirrot),tuusi=uudetsiirrot)}:
od:
> tetrat:={seq(translate(scale(perustetra,1/2^N,1/2^N,1/2^N),op(t)),t=siirrot)}:
> display(tetrat);
Tätä voidaan taas pyöritellä, suurennella ym. (html-versiossa ei tietenkään voida).
Siinäpä se kansikuva on.
Mikään ei estä iteroimasta pitemmälle. Tarvitsee vain mennä edellä riville siirrot:= ... ja painaa ENTER:iä,
sen jälkeen vaihdetaan N:n tilalle vaikkapa 4 ja painellaan ENTER:iä.
Lähde: Heck: Introduction to Maple