Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lehrkraefte:blc:math:povray:lektion5 [2017/06/01 08:27] Ivo Blöchliger [Aufgabe 4] |
lehrkraefte:blc:math:povray:lektion5 [2017/06/02 11:07] (current) Ivo Blöchliger [Aufgabe 6: Kochschneeflocke] |
||
---|---|---|---|
Line 71: | Line 71: | ||
* $f(x) = |x|$ // Die Betragsfunktion in POV-Ray ist abs(...) (absolute value).// | * $f(x) = |x|$ // Die Betragsfunktion in POV-Ray ist abs(...) (absolute value).// | ||
* $f(x) = \sqrt{x}$ | * $f(x) = \sqrt{x}$ | ||
+ | * Gleichzeitig beide Funktionen $f(x)=\sqrt{1-(1-|x|)^2}$ und $g(x)=-3\sqrt{1-\sqrt{\frac{|x|}{2}}}$. | ||
==== Aufgabe 2: " | ==== Aufgabe 2: " | ||
Verbinden Sie jeweils zwei benachbarte Kugeln mit einem Zylinder mit gleichem Radius. So entsteht eine durchgehende Linie. | Verbinden Sie jeweils zwei benachbarte Kugeln mit einem Zylinder mit gleichem Radius. So entsteht eine durchgehende Linie. | ||
+ | Geben Sie die Datei auf SharePoint ab: https:// | ||
+ | |||
+ | |||
+ | Alternative mit weniger Rechenfehler: | ||
+ | <code povray> | ||
+ | #declare starty=-2; | ||
+ | #declare endy=2; | ||
+ | #declare n=50; | ||
+ | #declare dy=(endy-starty)/ | ||
+ | #declare i=0; | ||
+ | #while (i< | ||
+ | #declare yy=starty+i*dy; | ||
+ | sphere { <0,yy, meinf(yy)>, | ||
+ | pigment { color rgb x } | ||
+ | } | ||
+ | #declare i=i+1; | ||
+ | #end | ||
+ | </ | ||
==== Aufgabe 3: $z=f(x,y)$ ==== | ==== Aufgabe 3: $z=f(x,y)$ ==== | ||
Eine Funktion kann auch mehr als eine Eingabe haben. In dieser Aufgabe betrachten wir eine Art Landschaft, wobei die Höhe $z$ aus den $x$- und $y$-Koordinaten berechnet wird. Im folgenden Code wird die Funktion $f(x)=\frac{1}{2}\left(x^2+y^2\right)$ abgebildet: | Eine Funktion kann auch mehr als eine Eingabe haben. In dieser Aufgabe betrachten wir eine Art Landschaft, wobei die Höhe $z$ aus den $x$- und $y$-Koordinaten berechnet wird. Im folgenden Code wird die Funktion $f(x)=\frac{1}{2}\left(x^2+y^2\right)$ abgebildet: | ||
Line 129: | Line 148: | ||
==== Aufgabe 4 ==== | ==== Aufgabe 4 ==== | ||
- | Ändern Sie die Funktion hoehe ab, z.B. | + | Ändern Sie die Funktion hoehe ab (und passen Sie evtl. den Bereich und die Kamera an), z.B. |
- | * $f(x,y) = \sin(x)+\sin(y)$ | + | * $f(x,y) = \sin(x)+\sin(y)+2$ |
- | * $f(x,y) = \cos\left(\sqrt{x^2+y^2}\right)$ | + | * $f(x,y) = \cos\left(\sqrt{x^2+y^2}\right)+1$ |
- | * $f(x,y) = 2^{\sqrt{x^2+y^2}}\cos\left(\sqrt{x^2+y^2}\right)$ | + | * $f(x,y) = 2^{-\sqrt{x^2+y^2}}\cos\left(\sqrt{x^2+y^2}\right)+1$ // |
- | * $f(x,y) = \cos(x)\cdot \cos(y)$ | + | * $f(x,y) = \cos(x)\cdot \cos(y)+1$ |
==== Aufgabe 5 ==== | ==== Aufgabe 5 ==== | ||
Fügen Sie zwischen benachbarten Kugeln Zylinder mit dem selben Radius ein. | Fügen Sie zwischen benachbarten Kugeln Zylinder mit dem selben Radius ein. | ||
+ | ==== Aufgabe 6: Kochschneeflocke ==== | ||
+ | **Studieren** Sie folgenden Text: | ||
+ | Funktionen können beliebig viele Eingaben verarbeiten und beliebige Ausgaben produzieren. Funktionen können sich sogar selbst wieder zur Berechnung des Resultats gebrauchen. | ||
+ | |||
+ | Wir werden eine Funktion (#macro) **koch** definieren. Als Eingabe benötigt die Funktion 3 Dinge: Startpunkt $A$ und Endpunkt $B$ der Strecke und die Angabe, wieviel mal die Strecke noch unterteilt werden soll (d.h. die Anzahl Rekursionen (Selbstaufrufe)). | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Die Funktion ist wie folgt aufgebaut: | ||
+ | |||
+ | | ||
+ | wenn r=0: | ||
+ | | ||
+ | sonst | ||
+ | 3 Zwischenpunkte P1, P2, P3 aus A,B berechnen | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ende wenn | ||
+ | ende Funktion koch | ||
+ | |||
+ | Dazu definieren wir den Vektor $\vec v = \vec{AB}$ und den dazu rechtwinkligen Vektor $\vec u$. Kopieren Sie folgendes Code-Skelett: | ||
+ | <code povray> | ||
+ | #macro kochKurve(a, | ||
+ | #if (rekursionen=0) | ||
+ | // TODO: Hier die Strecke zeichen, z.B. mit einer Kugel mit Zentrum a und einem Zylinder von a nach b | ||
+ | // Nur die Objekte ohne Farbe definieren. | ||
+ | #else | ||
+ | #local vv = ??; // TODO: hier den Vektor ab berechnen | ||
+ | #local uu = <-vv.y, vv.x, 0>; | ||
+ | #local p1 = ??; // TODO: Aus a und vv den Punkt p1 berechnen. | ||
+ | #local p2 = ??; // TODO: p2 berechnen | ||
+ | #local p3 = ??; // TODO: p3 berechnen | ||
+ | kochKurve(a, | ||
+ | // Hier die weiteren Segmente zeichnen | ||
+ | #end | ||
+ | #end | ||
+ | |||
+ | // Zeichnen der Kurve: | ||
+ | // kochKurve liefert einzelne Objekte. Die werden in einer union zusammengefasst, | ||
+ | // alle eine gemeinsame Farbe und evtl. Transformationen erhalten können. | ||
+ | union { | ||
+ | kochKurve(< | ||
+ | pigment { color rgb x } | ||
+ | } | ||
+ | |||
+ | </ |