Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| kurse:efcomputergrafik:kw48 [2019/11/26 13:23] – [Form der Polynome und deren Ableitungen] Ivo Blöchliger | kurse:efcomputergrafik:kw48 [2019/12/04 10:48] (current) – [Text-Analyse mit Python] Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Algebraische Form ====== | ||
| + | Bestimmen Sie die algebraische Form der Bezierkurven von Grad 1,2,3 (und $n$, wer möchte), und zwar | ||
| + | als konvexe Kombination der Kontrollpunkte mit den Koeffizienten als vollständig faktorisierte Polynome in $t$. | ||
| + | |||
| + | |||
| + | ===== Form der Polynome und deren Ableitungen ===== | ||
| + | Kontrollpunkte $\vec p_0$ bis $\vec p_n$: | ||
| + | $$ | ||
| + | \vec p(t) = \sum_{i=0}^n {n \choose i} (1-t)^{n-i} \cdot t^i \cdot \vec p_i | ||
| + | $$ | ||
| + | |||
| + | Für Grad 3: | ||
| + | $$ | ||
| + | \vec p(t) = (1-t)^3 \cdot \vec p_0 + 3(1-t)^2t \cdot \vec p_1 + 3 \cdot (1-t)t^2 \cdot \vec p_2 + t^3 \cdot \vec p_3 | ||
| + | $$ | ||
| + | ===== Ableitungen von $p(t)$ für $t \in [0,1]$ ===== | ||
| + | |||
| + | $$ | ||
| + | v(t) = -3(1-t)^2 \cdot \vec p_0 + | ||
| + | 3(1-t)(1-3t)\cdot \vec p_1 + | ||
| + | 3t(2-3t) \cdot \vec p_2 + | ||
| + | 3t^2 \cdot \vec p_3 | ||
| + | $$ | ||
| + | |||
| + | Man findet $\vec v(0) = 3(\vec p_1 - \vec p_0)$, also Tangente parallel zu $P_0P_1$. | ||
| + | Analog mit $\vec v(1) = 3(\vec p_3 - \vec p_2)$. | ||
| + | |||
| + | Mit Maxima: | ||
| + | <code maxima> | ||
| + | p(t, | ||
| + | define(v(t), | ||
| + | tex(v(t)); | ||
| + | define(a(t), | ||
| + | tex(a(t)); | ||
| + | </ | ||
| + | liefert | ||
| + | $$3\, | ||
| + | | ||
| + | und | ||
| + | $$-6\, | ||
| + | | ||
| + | |||
| + | Interessant sind auch hier die Werte von $a(0)$ und $a(1)$: | ||
| + | $$a(0) = 6\, | ||
| + | $$a(1) = 6\, | ||
| + | |||
| + | |||
| + | ===== Darstellung von Kurven vom Grad 1 und 2 mit Hilfe von einer Kurve vom Grad 3 ===== | ||
| + | ==== Grad 1 ==== | ||
| + | Damit die Geschwindigkeit für $t=0$ übereinstimmt, | ||
| + | <code maxima> | ||
| + | p(t, | ||
| + | factorout(expand(p(t, | ||
| + | tex(%); | ||
| + | </ | ||
| + | liefert: | ||
| + | $$b\, | ||
| + | ==== Grad 2 ==== | ||
| + | Für den Grad zwei, mit Kontrollpunkten $q_0, q_1, q_2$ ist $\vec v(0) = 2(\vec q_1-\vec q_0)$. Damit die Geschwindigkeiten für $t=0$ übereinstimmen muss $p_1 = \frac{1}{3}q_0 + \frac{2}{3}q_1$ sein. Analog für $p_2$. | ||
| + | Beweis wieder mit Maxima: | ||
| + | <code maxima> | ||
| + | p(t, | ||
| + | factorout(expand(p(t, | ||
| + | tex(%); | ||
| + | </ | ||
| + | liefert: | ||
| + | $$c\, | ||
| + | |||
| + | |||
| + | ====== Analyse von SVG-Pfaden ====== | ||
| + | Dokumentation: | ||
| + | * Intro: https:// | ||
| + | * Bisschen ausführlicher: | ||
| + | * Specs: https:// | ||
| + | |||
| + | |||
| + | ====== Vorgehen ====== | ||
| + | **Ziel**: | ||
| + | |||
| + | SVG-Datei mit Inkscape erstellen -> Python Programm das die Pfade ausliest -> Konvertieren in Polygonzug -> Umrechnen in Plotter-Koordinaten -> Plotter Befehle -> WhiteBoard verschönern. | ||
| + | |||
| + | Wäre cool: {{ : | ||
| + | |||
| + | * Umgang mit Inkscape (erstellen von Pfaden) | ||
| + | * Analyse der SVG-Datei | ||
| + | * Welche Pfad-Element müssen implementiert werden, wie funktionieren diese? | ||
| + | * Text-Analyse, | ||
| + | * Bezier-Klasse erstellen (für Kurven von Grad 1 bis 3). | ||
| + | * Initialisierung | ||
| + | * Zeichnen (Validierung) | ||
| + | * Interpolation | ||
| + | * Pfad-Klasse erstellen | ||
| + | * Als Sammlung von Bezier-Kurven | ||
| + | * Plotter Koordinatensystem analysieren | ||
| + | * Geometrische Definition | ||
| + | * Ausmessen im Tech-Lab | ||
| + | * Nullpunkt festlegen | ||
| + | * Plotter Sprache definieren | ||
| + | * Koordinaten | ||
| + | * Stift auf/ab | ||
| + | * Arduino-Code anpassen | ||
| + | |||
| + | ===== Umgang mit Inkscape ===== | ||
| + | |||
| + | Download für die Schulcomputer: | ||
| + | |||
| + | Nützliche Tastenkombinationen: | ||
| + | * F1: Auswahlmodus (zum kopieren, löschen, verschieben, | ||
| + | * F2: Edit-Modus (Manipulation der Pfadelemente). | ||
| + | |||
| + | Pfad-Manipulationen: | ||
| + | * Shift-Ctrl-C: | ||
| + | * Ctrl-K: Combine (mehrere Pfade in einen Pfad zusammenfassen). | ||
| + | |||