Koch-Kurven auf dem TI-83

Bild: Koch-Kurve

Ein kleines Programm, nur zum Spaß. Es zeichnet die Kochkurven auf das Display. Es ist zum größten Teil auf der Heimreise vom Jugendforum Informatik 2003 entstanden (natürlich inspiriert vom Jugendforum).

Wer so ein Kabel hat, um den TI-83 am Computer anzuschließen (und die passende Software), kann auf das abtippen des Programmcodes verzichten. Hier ist alles zum runterladen.

Quellcode

Es müssen zwei Programme eingegeben werden. Das eine mit Namen "KOCH" ist das Hauptprogramm und ruft das andere mit Namen "KOCHREK" auf. "KOCHREK" kann man auch als Funktion betrachten, die sich auch selbst wieder aufruft (rekursiv). Die Paramter, die dieser Funktion jeweils übergeben werden, werden in einer Liste gespeichert, die die Aufgabe eines Stacks übernimmt. Beim Zeichnen wird dann von hinten nach vorne gezeichnet, da der Stack ein LIFO ist (Last In, First Out), einfach ein Stapel.

Um die Kochkurve zeichnen zu lassen, muss einfach das Programm "KOCH" gestartet werden. Mit der Variable R steuert ihr die Rekursionstiefe, d.h. wie genau die Kurve berechnet wird. Da der Bildschirm des Taschenrechners allerdings nur eine sehr schlechte Auflösung besitzt, reicht ein Wert von 3 aus.

Also zuerst "KOCH":

01: 3->R
02: 100->L
03: {0,0,0,L,R}->L6
04: 
05: 0->Xmin
06: L->Xmax
07: -5->Ymin
08: 50->Ymax
09: AxesOff
10: ClrDraw
11: Degree
12: 
13: prgmKOCHREK

Und dann "KOCHREK":

01: L6(dim(L6)-4)->X
02: L6(dim(L6)-3)->Y
03: L6(dim(L6)-2)->A
04: L6(dim(L6)-1)->L
05: L6(dim(L6))->R
06:
07: If R<=0
08: Then
09: dim(L6)-5->dim(L6)
10: Line(X,Y,X+cos(A)*L,Y+sin(A)*L)
11: Return
12: End
13:
14: dim(L6)+5->dim(L6)
15: X->L6(dim(L6)-4)
16: Y->L6(dim(L6)-3)
17: A->L6(dim(L6)-2)
18: L/3->L6(dim(L6)-1)
19: R-1->L6(dim(L6))
20:
21: X+cos(A)->B
22: Y+sin(A)->E
23: dim(L6)+5->dim(L6)
24: B->L6(dim(L6)-4)
25: E->L6(dim(L6)-3)
26: A+60->L6(dim(L6)-2)
27: L/3->L6(dim(L6)-1)
28: R-1->L6(dim(L6))
29:
30: B+cos(A+60)->C
31: E+sin(A+60)->F
32: dim(L6)+5->dim(L6)
33: C->L6(dim(L6)-4)
34: F->L6(dim(L6)-3)
35: A-60->L6(dim(L6)-2)
36: L/3->L6(dim(L6)-1)
37: R-1>L6(dim(L6))
38:
39: C+cos(A-60)->G
40: F+sin(A-60)->H
41: dim(L6)+5->dim(L6)
42: G->L6(dim(L6)-4)
43: H->L6(dim(L6)-3)
44: A->L6(dim(L6)-2)
45: L/3->L6(dim(L6)-1)
46: R-1->L6(dim(L6))
47:
48: prgmKOCHREK
49: prgmKOCHREK
50: prgmKOCHREK
51: prgmKOCHREK
52:
53: dim(L6)-5->dim(L6)
54:
55: Return
© 2004 adabolo.de (2004/08/17)