Cantordamm.
the Cantor dust.

Till startsidan Föregående sida Innehåll

Cantordamm är en fraktal som i sin enklaste form har mindre än 1 dimension men samma idé kan användas på ett godtyckligt antal dimensioner.

Cantordammets definition.

Normalt defineras fraktalen cantordamm som en enkel algoritm som ser ut ungefär såhär :

1; Tag en linje av bestämd längd. (Vilket motsvaras av den översta raden på bilden ovan.)

2; Avlägsna den mellersta tredjedelen av linjen. (Nästa rad på bilden.)

3; Iteriera från steg 2; för dom kvarvarande bitarna av linjen.

Upprepar man detta ett stort antal gånger så kommer linjen att brytas ner i allt fler periodiskt återkommande kluster av allt mindre linjefragment. Till slut kommer det endast att kvarstå oändligt korta linjefragment som ligger spridda i kluster som dammkorn på tallinjen.

Liknande fraktala fenomen uppstår till exempel i telefonledningar där bruset på ledningen kommer i periodiska kluster. Om man sedan studerar dessa kluster närmare så ser man att dom i sin tur också består av periodiska kluster av brus som är kluster av brus o.s.v. med allt mindre upplösning.

Cantordammets matematik.

Om man nu vill rendera datorgrafik enligt metoden ovan så krävs det att man skapar en implementation av algoritmen som en dator kan utföra. 'Ta bort en tredjedel av linjen' är inte ett språk en dator begriper så här krävs det något annat :-) Vad en dator däremot förstår är matematik och som vanligt när det kommer till att skapa en fraktal med hjälp av matematik så tar vi till en transformation.

Formel :

x = x / 3 + p [i]

x : är punkten som transformeras och väljs i utgångsläget slumpvis någonstans inom den ursprungliga linjen.
p [i] : är en lista med konstanter som väljs slumpvis med heltalsparametern i. Konstanterna är i det här fallet två stycken nämligen p [0] = - 2 / 3 och p [1] = 2 / 3. Divisionen x / 3 ger transformationens
skalning och additionen med parametern p [i] är transformationens translation.

Formeldefinitionen ovan skapar i sig inte någon datorgrafik utan vad vi behöver är ett program som på något sätt utnyttjar den matematiska funktionen. För att skapa bilden bilden längst upp på sidan så kan man använda följande algoritm i pseudokod :

Sätt p [0] till - 2 / 3
Sätt p [1] till   2 / 3
Upprepa
  Sätt x till -1 + slumpen · 2
  Sätt rad till 0
  Upprepa
    Plot [x, rad]
    Sätt i till heltalsdelen av [slumpen · 2]
    Sätt x till x / 3 + p [i]
    Öka rad med 1
  Tills rad > 7
Tills bilden är klar :-) 

Den ursprungliga linjen ligger mellan punkterna x > -1 och x < 1 den översta linjen representerar utgångsläget och ligger på rad 0. Resultatet av den första iterationen representeras av den andra linjen på rad 1 o.s.v. Funktionen : slumpen¹ retunerar ett decimaltal större än 0 och mindre än 1, funktionen : heltalsdelen av [slumpen · 2] kommer sålunda alltid retunera 0 eller 1 och aldrig något annat och väljer på så sätt slumpvis mellan p [0] och p [1]. Det kan liknas vid att singla slant.

¹ Inte alla programeringsspråk erbjuder en funktion som retuerar ett dylikt slumptal (vilket är att föredra då det är lätt att göra operationer på det). C / C++ till exempel retunerar ett slumptal som motsvaras av siffran som finns lagrad i makrot "RAND_MAX". (<stdlib.h>) Jag brukar då definera följande makro för att alltid få ett tal mellan noll och ett :

#define Slumpen ((float)rand()/RAND_MAX)

Rekursion:

Ett annat sätt att visa cantordamm är att med en rekursiv algoritm skapa ett träd med en furkation i varje gren av varje furkation. På samma sätt har jag skapat trädet på gallerisidan för L-system fast då har jag använt en sierpinskytriangel i stället för cantordamm för att på så sätt få tre grenar i varje nod. Metoden att bygga upp fraktaler på det här sättet steg för steg brukar kallas för L-system.

Algoritm kommer ...

Komplexa cantordamm.

Man kan även tillämpa samma princip på flera dimensioner och då transformera varje koordinat separat på samma sätt som man gör med x koordinten vid 1 dimension. Alltså : ta bort en tredjedel från x och ta bort en tredjedel y o.s.v.

Dom 256 klustrena i bilden ovan är vad som blivit kvar efter det att algoritmen har tillämpats i fyra itreationer. Cantordamm och även sierpinskytrianglar är mycket enkla i sin uppbyggnad och är därför lätta att studera. Bilden visar tydligt hur transformationerna i det första steget skapar fyra kopior av bilden och i dom följande stegen skapar fyra kopior av var och en av dom tidigare kopiorna. Eller : (tranformatorer^dimensioner)^ itreationer kopior av den ursprungliga linjen, ytan, volymen eller vad man nu utgick i från. I det här fallet så blir det : (2^2)^4 = 256 kopior av ytan. (Man förstår varför datorer går på knäna när dom beräknar fraktaler :-)

Fortsättning följer ...

Till startsidan Föregående sida Innehåll

Har du synpunkter på innehållet? Vill du rätta fel? Göra tillägg? Ställa frågor? då kan du kontakta Fractalus.