kurse:ef05a-2021:kurven:xmastree

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
kurse:ef05a-2021:kurven:xmastree [2021/11/15 07:23]
Ivo Blöchliger [Christbaumbeleuchtung]
kurse:ef05a-2021:kurven:xmastree [2021/11/29 07:48] (current)
Ivo Blöchliger
Line 1: Line 1:
 ====== Christbaumbeleuchtung ====== ====== Christbaumbeleuchtung ======
-Zur Zeit befinden sich 200 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+Zur Zeit befinden sich <del>200</del> 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.): 
-<hidden Positionen der LEDs> + 
-<code python> +{{kurse:ef05a-2021:kurven:posdata.py}}
-leds = [[-32.3, 29.4, 46.5], [-36.9, 21.1, 55.7], [-36.9, 21.7, 56.6], [-35.3, 26.0, 63.3], [-34.0, 13.6, 68.4], [-31.9, 23.2, 74.5], [-34.1, 16.6, 81.1], [-28.9, 20.7, 92.4], [-30.6, 2.4, 84.3], [-31.9, 22.2, 87.8], [-31.9, 23.2, 94.9], [-32.3, 11.3, 96.6], [-31.9, 21.7, 106.0], [-27.6, 13.6, 109.6], [-31.2, 16.9, 119.7], [-25.3, 13.9, 123.0], [-27.3, 11.9, 131.7], [-19.8, 12.0, 135.5], [-22.9, 20.2, 141.7], [-16.5, 10.3, 146.0], [-18.6, 9.6, 156.1], [-12.3, 4.2, 158.4], [-11.4, 7.5, 166.9], [-12.4, 1.7, 173.6], [-3.0, 0.4, 177.3], [1.9, 0.4, 172.9], [7.4, 2.2, 175.4], [7.1, 6.2, 170.8], [8.5, 1.4, 159.8], [11.6, 6.9, 157.2], [15.0, -3.0, 150.2], [13.4, 5.2, 143.9], [22.7, 2.2, 137.9], [14.7, 3.5, 133.2], [18.7, 1.6, 127.3], [19.9, -0.6, 117.6], [28.0, 4.2, 115.7], [22.9, -2.5, 107.1], [26.3, 2.6, 102.0], [28.8, -0.2, 93.7], [39.7, 1.2, 88.4], [32.9, -2.5, 83.3], [42.9, 2.2, 78.7], [38.3, -5.2, 74.8], [32.7, -0.5, 66.6], [40.1, -6.4, 61.1], [40.9, -5.9, 52.7], [38.2, -6.4, 44.9], [36.0, -8.7, 42.7], [29.8, -9.5, 35.2], [28.0, -18.2, 37.9], [28.1, -21.9, 37.9], [19.2, -27.6, 43.0], [17.6, -25.6, 51.7], [25.4, -30.9, 58.7], [20.2, -26.0, 65.8], [19.5, -26.3, 66.6], [23.2, -31.1, 76.2], [22.0, -34.1, 84.2], [20.0, -33.4, 90.6], [14.0, -26.6, 95.1], [11.1, -22.6, 102.1], [8.6, -23.2, 107.4], [10.4, -27.8, 112.7], [7.4, -18.6, 121.8], [4.4, -20.9, 129.3], [4.4, -21.9, 132.1], [-0.7, -13.7, 142.6], [3.7, -13.7, 145.7], [-2.5, -10.7, 153.0], [3.0, -14.5, 159.5], [3.3, -5.4, 164.7], [-1.6, -5.2, 170.8], [-2.0, -6.7, 180.3], [2.1, 2.9, 177.5], [-6.4, 5.3, 173.0], [-12.6, 10.2, 166.2], [-12.0, 10.0, 167.3], [-8.9, 14.5, 161.1], [-16.2, 13.6, 153.2], [-13.3, 13.9, 146.8], [-12.9, 21.2, 141.1], [-18.5, 18.5, 132.3], [-16.9, 19.7, 128.5], [-21.7, 21.8, 122.1], [-18.6, 24.9, 115.3], [-25.1, 29.9, 111.4], [-20.2, 35.7, 103.1], [-19.0, 32.9, 97.7], [-25.1, 31.7, 90.6], [-23.3, 30.4, 83.7], [-19.4, 38.1, 80.6], [-21.6, 30.9, 71.3], [-17.1, 38.4, 66.3], [-14.0, 29.8, 58.7], [-19.5, 36.0, 55.9], [-10.7, 32.6, 48.2], [-19.5, 30.9, 43.1], [-14.0, 38.0, 38.1], [-10.0, 30.5, 33.3], [4.1, 35.9, 39.9], [-2.7, 42.1, 42.9], [4.6, 48.4, 49.7], [3.0, 47.6, 51.3], [1.5, 43.6, 60.9], [5.2, 48.6, 66.7], [2.6, 39.7, 71.2], [-3.2, 41.9, 72.9], [3.7, 36.4, 79.7], [-1.2, 39.8, 84.7], [4.5, 35.9, 91.2], [0.0, 38.5, 100.5], [-1.6, 29.6, 105.4], [5.5, 32.8, 110.5], [5.0, 28.5, 115.5], [2.4, 23.5, 122.3], [-4.5, 23.9, 129.5], [-0.1, 19.9, 132.9], [-6.1, 22.2, 139.8], [-0.9, 20.1, 142.6], [-6.7, 18.3, 151.5], [2.1, 15.5, 156.3], [-4.7, 16.4, 165.6], [-6.6, 12.4, 168.4], [1.6, 7.9, 170.2], [0.7, 8.0, 179.8], [4.6, 2.0, 176.1], [4.7, -11.2, 176.5], [4.3, -9.3, 166.2], [11.1, -5.0, 162.3], [11.1, -5.7, 154.7], [15.2, -14.2, 151.6], [12.4, -10.8, 144.4], [21.4, -9.0, 145.9], [19.8, -14.4, 134.1], [24.1, -14.2, 126.9], [26.4, -14.2, 117.4], [28.4, -14.8, 115.0], [30.4, -14.7, 109.9], [31.0, -10.0, 100.1], [28.7, -15.6, 92.6], [35.3, -12.6, 90.7], [35.4, -11.5, 84.2], [28.4, -16.5, 77.4], [29.0, -17.0, 71.3], [31.7, -18.2, 60.4], [30.4, -16.3, 60.4], [33.4, -12.3, 50.1], [32.9, -4.2, 46.3], [27.4, -1.8, 43.9], [27.7, 8.4, 45.8], [25.3, 5.7, 44.7], [27.8, 10.2, 43.7], [32.1, 20.7, 49.0], [34.4, 21.8, 54.4], [29.6, 21.7, 58.5], [33.9, 19.0, 66.1], [28.5, 17.8, 75.3], [26.9, 24.7, 86.2], [25.3, 17.7, 84.8], [23.8, 16.6, 91.5], [27.5, 18.3, 96.6], [16.8, 16.5, 107.6], [21.4, 12.4, 110.4], [16.9, 17.5, 120.0], [16.7, 12.2, 122.8], [16.3, 9.9, 129.4], [10.2, 8.3, 137.6], [9.4, 13.7, 143.4], [12.5, 9.0, 147.1], [7.7, 7.3, 154.6], [4.7, 8.3, 164.9], [4.1, 8.7, 166.4], [-4.1, 2.3, 176.0], [1.4, -2.5, 181.0], [-6.7, -0.3, 184.2], [-2.5, 5.2, 181.5], [1.0, 11.0, 175.0], [4.7, 9.7, 171.2], [0.6, 15.6, 159.2], [2.6, 15.4, 154.8], [8.8, 21.0, 150.9], [5.2, 18.1, 140.2], [6.7, 26.1, 137.8], [11.0, 24.2, 130.8], [6.4, 21.2, 123.2], [9.7, 20.2, 114.4], [9.4, 21.7, 110.5], [10.3, 22.6, 103.9], [11.9, 31.6, 96.5], [11.3, 27.2, 88.9], [15.3, 26.6, 85.8], [10.5, 29.7, 80.6], [15.3, 29.3, 73.1], [14.1, 35.2, 64.0], [15.4, 30.7, 61.6], [14.6, 29.9, 54.2], [7.4, 36.1, 49.1], [13.3, 31.6, 41.4], [11.2, 33.7, 37.8]] +
-</code> +
-</hidden>+
  
 Der Nullpunkt des Koordinatensystems befindet sich am Boden mittig unter dem Stamm, die $z$-Achse nach oben). Der Nullpunkt des Koordinatensystems befindet sich am Boden mittig unter dem Stamm, die $z$-Achse nach oben).
 +
 +[[kurse:ef05a-2021:kurven:xmastree-math|Mehr zur Mathematik hinter dem Baum]].
  
 ===== Darstellung der 3-dimensionalen Punkte ===== ===== Darstellung der 3-dimensionalen Punkte =====
Line 33: Line 32:
  
  
 +
 +===== Farben =====
 +
 +<code python 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)
 +</code>
 +
 +In TigerJython
 +<code python>
 +   setColor(r,g,b)  # Achtung, r,g,b müssen Ganzzahlen von 0-255 sein (z.B. setColor(int(r), int(g), int(b))
 +</code>
 +
 +{{kurse:ef05a-2021:kurven: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:
 +  * 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:ef05a-2021:kurven:vector-class.zip}}
 +
 +Aktueller C++ Code vom «echten» Christbaum: https://github.com/techlabksbg/xmastree
  • kurse/ef05a-2021/kurven/xmastree.1636957408.txt.gz
  • Last modified: 2021/11/15 07:23
  • by Ivo Blöchliger