kurse:ef05a-2021:kurven:xmastree

This is an old revision of the document!


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 (aktualisiert am 12.11., sollten jetzt ziemlich genau sein):

Positionen der LEDs

Positionen der LEDs

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]]

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

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.

  • Ergänzen Sie die Vektorklasse um eine Methode projectxz(self, a) die den projizierten Punkt als zwei-dimensionalen Vektor in der $x/z$-Ebene liefert.
  • Stellen Sie so den Baum einmal dar.

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

  • Ergänzen Sie die Vektorklasse um eine Methode rotatexy(self, alpha), die den um den Winkel $\alpha$ um die $z$-Achse gedrehten Vektor liefert.
  • Stellen Sie den rotierenden Baum dar.
  • kurse/ef05a-2021/kurven/xmastree.1636957458.txt.gz
  • Last modified: 2021/11/15 07:24
  • by Ivo Blöchliger