Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| kurse:ef05a-2021:kurven:xmastree [2021/11/08 06:29] – created Ivo Blöchliger | kurse:ef05a-2021:kurven:xmastree [2021/11/29 06:48] (current) – Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Christbaumbeleuchtung ====== | ||
| + | Zur Zeit befinden sich < | ||
| + | {{kurse: | ||
| + | |||
| + | Der Nullpunkt des Koordinatensystems befindet sich am Boden mittig unter dem Stamm, die $z$-Achse nach oben). | ||
| + | |||
| + | [[kurse: | ||
| + | |||
| + | ===== Darstellung der 3-dimensionalen Punkte ===== | ||
| + | |||
| + | Aktueller Code: {{kurse: | ||
| + | |||
| + | |||
| + | Die Punkte werden von einem Augpunkt $A$ auf die $x/z$-Ebene projiziert. Typischerweise ist $A=(0, | ||
| + | * Ergänzen Sie die Vektorklasse um eine Methode '' | ||
| + | * Stellen Sie so den Baum einmal dar. | ||
| + | |||
| + | {{kurse: | ||
| + | |||
| + | |||
| + | Damit wir uns um den Baum bewegen können, müssten wir auf andere Ebenen projizieren. Es ist aber einfacher einfach den Baum zu drehen. | ||
| + | Ein Punkt $(x,y)$ wird wie folgt mit dem Winkel $\alpha$ um den Ursprung gedreht: | ||
| + | $$ | ||
| + | \begin{array}{rcl} | ||
| + | x' & = & \cos(\alpha)x - \sin(\alpha)y \\ | ||
| + | y' & = & \sin(\alpha)x + \cos(\alpha)y \\ | ||
| + | \end{array} | ||
| + | $$ | ||
| + | * Ergänzen Sie die Vektorklasse um eine Methode '' | ||
| + | * Stellen Sie den rotierenden Baum dar. | ||
| + | |||
| + | |||
| + | |||
| + | ===== Farben ===== | ||
| + | |||
| + | <code python hsvtorgb.py> | ||
| + | # from https:// | ||
| + | # Input: Dezimalzahlen zwischen 0.0 und 1.0 | ||
| + | # Output: Dezimalzahlen zwischen 0.0 und 1.0 | ||
| + | def hsv_to_rgb(h, | ||
| + | if s == 0.0: return (v, v, v) | ||
| + | i = int(h*6.) # XXX assume int() truncates! | ||
| + | f = (h*6.)-i; p,q,t = v*(1.-s), v*(1.-s*f), v*(1.-s*(1.-f)); | ||
| + | if i == 0: return (v, t, p) | ||
| + | if i == 1: return (q, v, p) | ||
| + | if i == 2: return (p, v, t) | ||
| + | if i == 3: return (p, q, v) | ||
| + | if i == 4: return (t, p, v) | ||
| + | if i == 5: return (v, p, q) | ||
| + | </ | ||
| + | |||
| + | In TigerJython | ||
| + | <code python> | ||
| + | | ||
| + | </ | ||
| + | |||
| + | {{kurse: | ||
| + | ===== Animation ===== | ||
| + | Programmieren Sie eine Funktion '' | ||
| + | |||
| + | Neuerungen im Code: | ||
| + | * Positionen sind in der Datei posdata.py gespeichert und werden mit import in den Code eingebunden. | ||
| + | * Code zur Umwandlung hsv->rgb eingebunden | ||
| + | * Zeitmessung (import time) | ||
| + | * Funktion, die die Farbe setzt | ||
| + | |||
| + | Aktueller Code: {{kurse: | ||
| + | |||
| + | Aktueller C++ Code vom «echten» Christbaum: https:// | ||