Die Idee
Du schreibst die Physik eines Zeitschritts für einen Körper. Die App führt deinen Code für
jeden Körper aus (außer für feste Körper), stellt die Zeit um dt weiter und wiederholt das.
F = vec(0, -m*g) # die Kraft auf den Körper
a = F / m # zweites Newtonsches Gesetz
v = v + a*dt # Geschwindigkeit nach dem Schritt
r = r + v*dt # Ort nach dem Schritt
Namen, die du im Code verwenden kannst
m r v a F | Masse, Ort, Geschwindigkeit, Beschleunigung und Kraft des aktuellen Körpers. r v a F sind Vektoren. Was du ihnen zuweist, bleibt für den nächsten Schritt erhalten. |
| Körpervariablen | Deine eigenen zusätzlichen Variablen aus dem Bereich Variablen (z. B. eine Ladung q). Sie bleiben ebenfalls von Schritt zu Schritt erhalten. |
| andere Namen | Temporär: nach dem Schritt sind sie weg. In Diagrammen kannst du sie trotzdem anzeigen (z. B. eine Energie E). |
| Parameter | Konstanten aus dem Bereich Variablen, z. B. g. |
t dt | Aktuelle Zeit und Zeitschritt. |
others | Liste der anderen Körper: o.r, o.v, o.m, o.name, o.index, … Sie enthalten die Werte vom Anfang des Schritts, deshalb spielt die Reihenfolge der Körper keine Rolle. |
bodies | Alle Körper, einschließlich des aktuellen. |
name index | Name und Nummer (0, 1, 2, …) des aktuellen Körpers. |
Vektoren
vec(x, y) | Ein neuer Vektor. Komponenten: r.x, r.y. |
a + b, a - b, 2*a, a/2 | Rechnen mit Vektoren. |
mag(v) oder abs(v) | Betrag (Länge). mag2(v) ist das Betragsquadrat. |
hat(v) | Einheitsvektor (Länge 1) in Richtung von v. |
dot(a, b) | Skalarprodukt (eine Zahl). |
cross(a, b) | Kreuzprodukt: für zwei Vektoren die z-Komponente. cross(v, B) mit einer Zahl B behandelt B als Vektor, der aus dem Bildschirm heraus zeigt. |
rotate(v, angle) | Gegen den Uhrzeigersinn gedreht (Winkel im Bogenmaß). angle(v) ist die Richtung von v. |
polar(length, angle) | Ein Vektor aus Länge und Richtung. |
Mathematik
Alles aus Pythons math-Modul: sqrt sin cos tan atan2 exp log pi radians degrees …
Andere Module wie random oder numpy lassen sich importieren.
Startwerte
Jedes Feld im Bereich Variablen ist ein Python-Ausdruck und darf Parameter verwenden, z. B.
v0*cos(radians(30)). Kommazahlen schreibst du wie in Python mit Punkt: 9.81,
nicht 9,81.
Tipps
- Ein kleineres
dt ist genauer, aber langsamer.
- Was
print() ausgibt, erscheint unter Ausgabe. Es läuft in jedem Schritt für jeden Körper, das kann viel werden.
- Markiere einen Körper als fest, damit er an seinem Platz bleibt, z. B. einen Aufhängepunkt oder die Sonne.
- Diagramme bieten jede Zahl und jeden Vektor an, den dein Code berechnet.
|v| ist der Betrag von v.
- Ziehe die Simulationsansicht zum Verschieben, scrolle zum Zoomen, doppelklicke, um alles zu zeigen.
- Strg+Enter im Code-Editor übernimmt deine Änderungen und startet.
- Neu löscht alles. Link teilen kopiert einen Link mit dem ganzen Aufbau. Speichern lädt ihn als Datei herunter.