Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
kurse:efcomputergrafik:kw34 [2019/08/20 08:54] Marcel Metzler [Apfelmännchen] |
kurse:efcomputergrafik:kw34 [2019/08/21 15:18] (current) Marcel Metzler [Was ist ein Fraktal und was ist eine gebrochene Dimension?] |
||
---|---|---|---|
Line 177: | Line 177: | ||
- Unterprogramme mit Parameterübergabe, | - Unterprogramme mit Parameterübergabe, | ||
- Unterprogramm mit Parameterübergabe und Rückgabewert, | - Unterprogramm mit Parameterübergabe und Rückgabewert, | ||
- | ==Zu 1.== | + | ===Zu 1. Unterprogramme ohne Parameterübergabe=== |
<code python> | <code python> | ||
from gturtle import * | from gturtle import * | ||
Line 192: | Line 192: | ||
Das Schlüsselwort ist **def**, gefolgt vom Namen() des Unterprogramms. Achtung den Doppelpunkt nicht vergessen. Das eigentliche Unterprogramm folgt dann **eingerückt**. Das Unterprogramm kann nun von einer beliebigen Stelle im Hauptprogramm aufgerufen werden. | Das Schlüsselwort ist **def**, gefolgt vom Namen() des Unterprogramms. Achtung den Doppelpunkt nicht vergessen. Das eigentliche Unterprogramm folgt dann **eingerückt**. Das Unterprogramm kann nun von einer beliebigen Stelle im Hauptprogramm aufgerufen werden. | ||
+ | ===Zu 2. Unterprogramme mit Parameterübergabe=== | ||
Schöner wäre es aber, wenn die Seitenlänge nicht fix, sondern als Parameter übergeben werden kann. Dies geschieht wie folgt: | Schöner wäre es aber, wenn die Seitenlänge nicht fix, sondern als Parameter übergeben werden kann. Dies geschieht wie folgt: | ||
<code python> | <code python> | ||
Line 205: | Line 206: | ||
dreieck(50) | dreieck(50) | ||
</ | </ | ||
+ | Bei der Definition def dreieck(l): seht eine Variable und beim Aufruf dreieck(50) steht der konkrete Wert. | ||
+ | |||
+ | Beim Aufruf dreieck(50) wird der Parameterwert 50 mit übergeben. Im Unterprogramm wird der Variablen l der Wert 50 zugewiesen und im Befehl forward steht keine Konstante, sondern l und l ist gleich 50. | ||
+ | |||
+ | Noch schöner wäre es, wenn nicht nur die Länge, sonder die Anzahl der Ecken übergeben werden kann. Es muss ja nicht immer ein Dreieck sein. Siehe dazu folgendes Programm. | ||
+ | <code python> | ||
+ | from gturtle import * | ||
+ | def nEck(n,l): | ||
+ | if n>2: | ||
+ | for i in range(n): | ||
+ | forward(l) | ||
+ | left(360/n) | ||
+ | | ||
+ | makeTurtle() | ||
+ | nEck(3,100) | ||
+ | setPos(100, | ||
+ | nEck(4,50) | ||
+ | setPos(25, | ||
+ | nEck(5,80) | ||
+ | </ | ||
+ | Was geschieht, wenn wir ein 0-Eck, ein 1-Eck oder ein 2-Eck zeichnen wollen. Nun n muss grösser als 2 sein, sonst wird nichts gezeichnet. Falls aber gekommen wir auch eine Rückmeldung vom Unterprogramm? | ||
+ | ===Zu 3. Unterprogramme mit Parameterübergabe und Rückgabewert=== | ||
+ | <code python Prog_8.py> | ||
+ | from gturtle import * | ||
+ | def nEck(n,l): | ||
+ | if n>2: | ||
+ | for i in range(n): | ||
+ | forward(l) | ||
+ | left(360/n) | ||
+ | return(1) | ||
+ | return(0) | ||
+ | makeTurtle() | ||
+ | ans=nEck(3, | ||
+ | if ans!=1: | ||
+ | print(" | ||
+ | setPos(100, | ||
+ | if nEck(1, | ||
+ | setPos(25, | ||
+ | ans=nEck(5, | ||
+ | </ | ||
+ | |||
+ | **Aufgabe 6** | ||
+ | - Arbeite die drei Fälle sorgfältig durch. Dann du die drei Fälle ohne nachzuschauen erklären? Falls nicht, schau sie nochmals an. | ||
+ | - Ändere das obige Programm nach belieben ab und schaue was dabe herauskommt. | ||
+ | - Füge eine Meldung hinzu, falls das n-Eck gezeichnet werden konnte. | ||
+ | - Füge eine Meldung hinzu, falls alle n-Ecke gezeichnet werden konnten. | ||
+ | |||
+ | ====Was ist ein Fraktal und was ist eine gebrochene Dimension? | ||
+ | Siehe dazu folgendes Video vom Kanal [[https:// | ||
+ | |||
+ | Als weitere Quelle hier noch ein altes Skript von der ETHZ{{ : | ||
+ | |||
+ | Wer Interesse hat, kann das Buch **SuperFractals**, | ||
+ | |||
+ | **Aufgabe 7** | ||
+ | |||
+ | * Was ist ein Fraktal? | ||
+ | < | ||
+ | Ein Objekt mit einer gebrochenen Dimension, d.h. $D\not\in \mathbb{N}$. | ||
+ | </ | ||
+ | * Kennst du die Dimension des Serpinski Dreiecks bestimmen? | ||
+ | < | ||
+ | Verkleinerung der Strecke um den Faktor 2, erzeugt eine Verkleinerung der Fläche um den Faktor 3. $2^D=3 \quad\rightarrow\quad D=log_2(3)=1.585$ | ||
+ | </ | ||
+ | * Kennst du eine allgemeine Formel zur Dimensionsbestimmung? | ||
+ | < | ||
+ | Du findest eine am Schluss des Skript Fraktale von der ETHZ. | ||
+ | </ |