**Dies ist eine alte Version des Dokuments!**
Vektoren, Kinematik & Python
1. Theorie I: Uniforme Bewegung, Vektoren & Kollisionen
1.1 Uniforme Bewegung
Uniforme Bewegung bedeutet, dass man sich mit konstanter Geschwindigkeit fortbewegt.
Bewegt man sich während der Zeit $t$ mit der konstanten Geschwindigkeit $v$, so legt man folgende Distanz zurück: $$s = v t$$
1.1.1 Uniforme Bewegung in 2 Dimensionen
Betrachtet man die Bewegung in 2 Dimensionen, so ist es am einfachsten, wenn man die Position und die Geschwindigkeiten als Vektor betrachtet:
$$\vec{s} = \begin{pmatrix}s_x \\ s_y \end{pmatrix}$$ $$\vec{v} = \begin{pmatrix}v_x \\ v_y \end{pmatrix}$$
Dabei nennt man …:
- $v_x$ die $x-$Komponente des Geschwindigkeitsvektors $\vec{v}$.
- $v_y$ die $y-$Komponente des Geschwindigkeitsvektors $\vec{v}$.
Ein Vektor hat immer sowohl eine Richtung als auch eine Länge. Die Länge berechnet man mit dem Satz von Pythagoras: $$v = |\vec{v}| = \sqrt{v_x^2 + v_y^2}$$
Wie beschreibt man nun die Bewegung eines Objekts in 2 Dimensionen? Dieses Objekt befinde sich zum Zeitpunkt $t=0$ am Ort $\vec{s_0} = \begin{pmatrix}s_x^0 \\ s_y^0 \end{pmatrix}$ und es bewege sich mit der Geschwindigkeit $\vec{v_0} = \begin{pmatrix}v_x^0 \\ v_y^0 \end{pmatrix}$. Die Position des Objekts ist dann gegeben durch:
$$\vec{s}(t) = \vec{s_0} + \vec{v_0}t$$
Beachte, dass die Position eine Funktion der Zeit ist: Je länger sich das bewegt, desto weiter ist es von seiner ursprünglichen Position $\vec{s}_0$ entfernt.
1.1.2 Beispiel
Machen wir ein Beispiel.
- Ein Ball befinde sich anfangs (zum Zeitpunkt $t=0$) am Ort $\vec{s}_0 = \begin{pmatrix}5 \\ 2 \end{pmatrix}$. Dies bedeutet, dass sich der Ball an der Position $(5|2)$ im Koordinatensystem befindet.
- Der Ball bewege er sich mit dem Geschwindigkeitsvektor $\vec{v} = \begin{pmatrix}-2 \\ 4 \end{pmatrix}$. Das bedeutet, dass sich der Ball um 2 Teile in die negative $x-$Richtung (nach links) und $4$ in die positive $y-$Richtung (nach oben in der Mathe, nach unten in Pygame) bewegt. Die Länge des Vektors ist $v = \sqrt{(-2)^2+4^2} = 5$, hat also die Geschwindigkeit $5$.
An welcher Position befindet man sich nach der $1$ Zeiteinheit , $2$ Zeiteinheiten oder $60$ Zeiteinheiten? Die Position ist gegeben durch: $$\vec{s}(t) = \vec{s_0} + \vec{v_0}t = \begin{pmatrix}5 \\ 2 \end{pmatrix} + \begin{pmatrix}-2 \\ 4 \end{pmatrix}t = \begin{pmatrix}5 - 2 t \\2 - 4 t \end{pmatrix}$$
Nach der Zeiteinheit $1$ befindet man sich also an der Position $\vec{s}(1) = \begin{pmatrix}3 \\-2 \end{pmatrix}$
1.2 Vektoren in Numpy
Numpy ist eine Python-Library, die dafür konzipiert wurde, Mathematik zu betreiben. Die darin vorhandenen Numpy-Arrays sind dafür geeignet, Vektoren in Python darzustellen.
Das Erstellen eines solchen Numpy-Arrays geht ganz einfach: Nimm eine normale Liste L
und wandle diese in ein solches Array um: np.array(L)
. Wichtig: Importiere dazu zuerst numpy wie folgt: import numpy as np
.
Das oben aufgeführte Beispiel kann man in Numpy wie folgt aufsetzen:
s0 = np.array([5,2]) v0 = np.array([-2,4]) t = 6 s = s0 + v0*t
1.3 Kollisionen
Seien v1
und v2
die Geschwindigkeitsvektoren kollidierender Bälle bevor sie kollidieren. Welche Geschwindigkeitsvektoren haben sie nach der Kollision? Diese sind gegeben durch eine Formel, welche du im folgenden Dossier findest: Dossier Kollision. Eine solche Kollision heisst elastische Kollision oder elastischer Stoss.
Tipp: Am einfachsten arbeitet man mit Numpy-Arrays (z.B. v1 = np.array([3,-7])
). Dies macht die Berechnung der neuen Geschwindigkeitsvektoren relativ einfach.
Quelle: https://en.wikipedia.org/wiki/Elastic_collision#Two-dimensional (letzte beiden Formeln des Anschnitts)
2. Theorie II: Uniforme Beschleunigung & Gravitation
2.1 Uniforme Beschleunigung
Eine Beschleunigung ist eine Änderung der Geschwindigkeit pro Zeit
$$a = \frac{\Delta v}{t}$$
wobei:
- $\Delta v:$ Änderung der Geschwindigkeit, SI-Einheit $\frac{\text{m}}{\text{s}}$
- $t:$ Zeit, in der Geschwindigkeit verändert wird, SI-Einheit $\text{t}$
- $a$: Beschleunigung (acceleration), SI-Einheit: $\frac{\text{m}}{\text{s}^2}$
Eine Uniforme Beschleunigung ist einfach eine konstante Beschleunigung. Die Beschleunigung ist also immer gleich stark und verändert sich nicht mit der Zeit.
2.1.1 Uniforme Beschleunigung in 1D
Bewegung entlang der $x-$Achse:
- $s_0:$ Position bei Beginn der Beschleunigung (zum Zeitpunkt $t=0$)
- $v_0:$ Geschwindigkeit bei Beginn der Beschleunigung (zum Zeitpunkt $t=0$)
- $a:$ Beschleunigung, mit der beschleunigt wird
- $t:$ Zeit, in der Beschleunigt wird
Nachdem für die Zeit $t$ mit $a$ beschleunigt wurde, befindet man sich an der Position $s$ und hat Geschwindigkeit $v$, gegeben durch:
$$v(t) = v_0 + a t$$ $$s(t) = s_0 + v_0 t + \frac12 a t^2$$
2.1.2 Uniforme Beschleunigung in 2D
Ein Objekt befindet sich zum Zeitpunkt $t=0$ am Ort $\vec{s_0} = \begin{pmatrix}s_x^0 \\ s_y^0 \end{pmatrix}$ und bewegt sich mit der Geschwindigkeit $\vec{v_0} = \begin{pmatrix}v_x^0 \\ v_y^0 \end{pmatrix}$. Das Objekte werde jetzt durch den Beschleunigungsvektor $\vec{a} = \begin{pmatrix}a_x \\ a_y \end{pmatrix}$ beschleunigt. Dann verändern sich Geschwindigkeit und Position wie folgt mit der Zeit:
$$\vec{v}(t) = \vec{v_0} + \vec{a}t$$ $$\vec{s}(t) = \vec{s_0} + \vec{v_0}t + \frac12 \vec{a} t^2$$
2.2 Gravitation
Lässt man etwas fallen, so wird es mit der Beschleunigung $g = 9.81\text{m}/\text{s}^2$ nach unten beschleunigt. Da diese Beschleunigung sehr wichtig ist, hat sie einen eigenen Namen erhalten und man schreibt typischerweise $g$ anstelle von $a$. Auf der Erdoberfläche ist die Gravitationsbeschleunigung in etwa konstant, weshalb man guten Gewissens bei der Gravitation von ein uniformen Beschleunigung sprechen kann.
In 2 Dimensionen beschreibt man die Gravitation mit dem folgenden Vektor: $$\vec{g} = \begin{pmatrix}0 \\ - 9.81\text{m}/\text{s}^2 \end{pmatrix}$$
Beachte: Hier wird die übliche Konvention in Physik und Mathematik verwendet, dass nach oben durch die positive $y-$Richtung dargestellt wird. In Pygame ist dies anders. Dort sollte der Gravitationsvektor z.B. wie folgt aussehen: g = np.array([0,1])
. Beachte, dass der genaue Zahlenwert nicht relevant ist und durch ausprobieren eingestellt werden sollte.
Ganz wichtig: Eine Änderung der Geschwindigkeit in eine Richtung tritt nur dann auf, wenn in diese Richtung eine Beschleunigung wirkt. Beispiele:
- Die Gravitation wirke in die y-Richtung: $\vec{g} = \begin{pmatrix}0 \\ - 9.81\text{m}/\text{s}^2 \end{pmatrix}$. Damit hat sie nur einen Einfluss auf die $y-$Komponente eines Geschwindigkeitsvektors. Ein Ball habe zum Zeitpunkt $t = 0$ den Geschwindigkeitsvektor $\vec{v} = \begin{pmatrix}2 \\ 3 \end{pmatrix}$. Der Ball bewegt sich also nach rechts oben, allerdings mehr nach oben als nach rechts. Die Gravitation beeinflusst also nur die $y-$Komponente: Zu Beginn ist sie $3$ und nimmt dann stetig ab bis sie Null ist (höchster Punkt der Flugbahn). Danach nimmt sie weiter ab und wird also negativ: Der Ball bewegt sich jetzt nach unten. Je länger man wartet, desto schneller bewegt es sich nach unten. Das Ganze hat aber keinen Einfluss auf die $x-$Komponente des Geschwindigkeitsvektors; diese ist und bleibt $2$.