Table of Contents

Christbaumbeleuchtung

Zur Zeit befinden sich 200 500 LEDs auf dem Baum, die einzeln adressiert werden können (und theoretisch je 65k Farben darstellen können). Die LEDs befinden sich an folgenden Positionen (aktualisiert am 23.11.):

posdata.py

Der Nullpunkt des Koordinatensystems befindet sich am Boden mittig unter dem Stamm, die $z$-Achse nach oben).

Mehr zur Mathematik hinter dem Baum.

Darstellung der 3-dimensionalen Punkte

Aktueller Code: vector-class.zip

Die Punkte werden von einem Augpunkt $A$ auf die $x/z$-Ebene projiziert. Typischerweise ist $A=(0,300,160)$, d.h. man steht 3 m vor dem Baum.

img_20211111_085642596.jpg

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} $$

Farben

hsvtorgb.py
# from https://stackoverflow.com/questions/24852345/hsv-to-rgb-color-conversion
# Input: Dezimalzahlen zwischen 0.0 und 1.0
# Output: Dezimalzahlen zwischen 0.0 und 1.0
def hsv_to_rgb(h, s, v):
        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)); i%=6
        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

   setColor(r,g,b)  # Achtung, r,g,b müssen Ganzzahlen von 0-255 sein (z.B. setColor(int(r), int(g), int(b))

img_20211118_090128261.jpg

Animation

Programmieren Sie eine Funktion farbe(t,v), wobei $t$ die Zeit in Sekunden und $v$ die Position einer LED ist. Die Funktion berechnet dazu die Farbe, die dann auf dem Baum dargestellt werden soll.

Neuerungen im Code:

Aktueller Code: vector-class.zip

Aktueller C++ Code vom «echten» Christbaum: https://github.com/techlabksbg/xmastree