Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
talit:csharp_oop_sca [2025-06-16 11:01] – [4. Auftrag: Simulation des N-Body-Problems mit MonoGame] sca | talit:csharp_oop_sca [2025-06-16 14:47] (aktuell) – [Physik] sca | ||
---|---|---|---|
Zeile 226: | Zeile 226: | ||
===== - Auftrag: Simulation des N-Body-Problems mit MonoGame ===== | ===== - Auftrag: Simulation des N-Body-Problems mit MonoGame ===== | ||
- | **Ziel: Orbits von $N$ Himmelskörpern, | + | **Ziel:** Schreibe mit C# und MonoGames eine Simulation der **Orbits von $N$ Himmelskörpern**, die sich gegenseitig mittels des Newton' |
Tipps: | Tipps: | ||
Zeile 240: | Zeile 240: | ||
Da aber alle anderen $N-1$ Himmelskörper eine solche Gravitationskraft auswirken, müssen sämtliche einzelnen Kraftvektoren aufsummiert werden (Superpositionsprinzip), | Da aber alle anderen $N-1$ Himmelskörper eine solche Gravitationskraft auswirken, müssen sämtliche einzelnen Kraftvektoren aufsummiert werden (Superpositionsprinzip), | ||
$$\vec{F}_{i} = G m_i \sum_{k=1, | $$\vec{F}_{i} = G m_i \sum_{k=1, | ||
+ | |||
+ | Ein Problem, das oft auftaucht, ist das folgende: Kommen sich zwei Massen sehr nah, so wird $|\vec{r}_k-\vec{r}_i|^3$ extrem klein. Dadurch wird die Kraft sehr gross und eine Masse kann dann regelrecht aus dem Bildschirm geschleudert werden. Dies soll verhindert werden. Dazu addiert man dem Nenner einen kleinen konstanten *Softening-Term* $s$: | ||
+ | $$\vec{F}_{i} = G m_i \sum_{k=1, | ||
==== Idee Code ==== | ==== Idee Code ==== | ||
Zeile 252: | Zeile 255: | ||
1. Mit dem neuen Geschwindigkeitsvektor wird nun der Positionsvektor updated: $$\vec{x\_i} \rightarrow \vec{x\_i} + \Delta t \cdot \vec{v\_i}$$ | 1. Mit dem neuen Geschwindigkeitsvektor wird nun der Positionsvektor updated: $$\vec{x\_i} \rightarrow \vec{x\_i} + \Delta t \cdot \vec{v\_i}$$ | ||
- | **Kontrolle: | + | **Kontrolle: |