fraktal

October 25, 2008 on 7:14 pm | In algorithmen, allgemeines, studium | No Comments

Wisst ihr was Fraktale sind?

das ist zB ein Fraktal. Eine in sich selbst verschachtelte Geometrische Form, hier zB der Stern, der sich immer weiter fortsetzt.

Ich musst so etwas als Übung in der Programmiersprache Logo schreiben, und zwar einen sogenannten Pythagoras-Baum, bei dem man ein rechtwinkliges Dreick ins Zentrum stellt, und davon ausgehend auf jeder Seite ein Quadrat mit der Seitenlänge der Seite aufträgt. Das kann man dann natürlich ins unendliche verkleinern.

Diese sch… Übung hat mich heute ca. 3 Stunden gekostet, aber ich muss zugeben, dass die Herausforderung Spass gemacht hat.

Hier ein paar Fotos (wie ihr seht, hab ich gleichschenkelige Dreiecke gemacht, weil ich mich ernsthaft nicht weiter mit diesem Bsp. beschäftigen will. war genug arbeit), nach dem Sprung mehr Fotos und der Programmcode, den ihr selbst in Logo parsen könnt.

und noch der Quellcode dazu, stand heute, 2000:

to fraktal_backup :a :mind
;generiert wiederholungen eines gleichschenkeligen, rechtwinkeligen dreickes mit der grundlinie :a, auf dem jeweils 2 quadrate aufsetzen. :mind gibt an, welche mindestlänge die grundlinie haben muss.

if :a < :mind [stop] ;beende turtle, wenn grundlinie (:a) kleiner ist als die angegebene mindestlänge (:mind).

;zeichne grundlinie
lt 90 fd :a

;rechte ecken
rt 45 fd sqrt((:a*:a)/2) rt 90 fd sqrt((:a*:a)/2)
;rekursiver aufruf eingebaut
lt 90 fraktal_backup sqrt((:a*:a)/2) :mind rt 180
fd sqrt((:a*:a)/2) rt 90 fd sqrt((:a*:a)/2)

;zum nächsten ausgangspunkt gehen
rt 180 fd sqrt((:a*:a)/2) rt 90

;linke ecken
fd sqrt((:a*:a)/2) lt 90 fd sqrt((:a*:a)/2)
;rekursiver aufruf eingebaut
fraktal_backup sqrt((:a*:a)/2) :mind
lt 90 fd sqrt((:a*:a)/2) lt 90 fd sqrt((:a*:a)/2)

;turtle zum ausgangspunkt zurückschicken
lt 90 fd sqrt((:a*:a)/2) lt 135
end

No Comments yet »

RSS feed for comments on this post. TrackBack URI

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>