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 21:24] Ivo Blöchliger [G-Code für den Plotter] |
kurse:efcomputergrafik:kw48 [2019/12/04 11:48] (current) Ivo Blöchliger [Text-Analyse mit Python] |
||
---|---|---|---|
Line 24: | Line 24: | ||
Man findet $\vec v(0) = 3(\vec p_1 - \vec p_0)$, also Tangente parallel zu $P_0P_1$. | Man findet $\vec v(0) = 3(\vec p_1 - \vec p_0)$, also Tangente parallel zu $P_0P_1$. | ||
- | Analog mit $\vec v(1)$. | + | Analog mit $\vec v(1) = 3(\vec p_3 - \vec p_2)$. |
- | ====== Interpolation mit kubischen Funktionen ====== | + | Mit Maxima: |
- | Gesucht ist eine kubische Funktion durch 2 gegebene Punkte $P=(0,y_P)$ und $Q=(1,y_Q)$ mit gegebenen Tangentensteigungen $m_P$ und $m_Q$ in diesen Punkten. | + | <code maxima> |
+ | p(t, | ||
+ | define(v(t), factorout(diff(p(t, | ||
+ | tex(v(t)); | ||
+ | define(a(t), | ||
+ | tex(a(t)); | ||
+ | </ | ||
+ | liefert | ||
+ | $$3\, | ||
+ | | ||
+ | und | ||
+ | $$-6\, | ||
+ | | ||
- | Variante | + | 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\,t+a\,\left(1-t\right)$$ | ||
+ | ==== 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\, | ||
- | Variante 2: Anstatt die kanonische Basis $1, | ||
====== Analyse von SVG-Pfaden ====== | ====== Analyse von SVG-Pfaden ====== | ||
Line 67: | Line 102: | ||
===== Umgang mit Inkscape ===== | ===== Umgang mit Inkscape ===== | ||
+ | |||
+ | Download für die Schulcomputer: | ||
+ | |||
Nützliche Tastenkombinationen: | Nützliche Tastenkombinationen: | ||
* F1: Auswahlmodus (zum kopieren, löschen, verschieben, | * F1: Auswahlmodus (zum kopieren, löschen, verschieben, | ||
- | * F2: Edit-Modus (Manipulation der Pfadelemente. | + | * F2: Edit-Modus (Manipulation der Pfadelemente). |
Pfad-Manipulationen: | Pfad-Manipulationen: | ||
* Shift-Ctrl-C: | * Shift-Ctrl-C: | ||
* Ctrl-K: Combine (mehrere Pfade in einen Pfad zusammenfassen). | * Ctrl-K: Combine (mehrere Pfade in einen Pfad zusammenfassen). | ||
- | |||
- | ===== G-Code für den Plotter ===== | ||
- | Der Nullpunkt befindet sich bei den Radien $r_1=r_2=1445$ (in mm). Pro Motorschritt verändern sich die Radien um $\approx 0.0157029$ (mm). Die Motoren haben einen Abstand von 1930 mm. | ||
- | |||
- | Der G-Code bezieht sich direkt auf die Motorenschritte (was eigentlich gerade nicht der Sinn von G-Code ist). | ||
- | |||
- | Nur G1 (lineare Interpolation) ist implementiert: | ||
- | * G1 X-400 Y800 (Gehe zur absoluten Position -400 Schritte (Motor links) und +800 Schritte (Motor rechts). | ||
- | * G1 Z0 (Stift hoch, nicht zeichnen) | ||
- | * G1 Z1 (Stift runter, zeichnen) | ||
- | Nach jedem Kommando muss auf ein ' | ||