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:00] – [Physik] 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: | ||
+ | |||
+ | * Starte mit dem **2-Körperproblem** und erweitere es dann zu beliebig vielen Körpern. | ||
+ | * Machst du eine strikte Trennung von **Model und View**, kannst du deinen Code später besser wiederverwenden. | ||
- | Tipp: Starte mit dem 2-Körperproblem und erweitere es dann zu beliebig vielen Körpern. | ||
==== Physik ==== | ==== Physik ==== | ||
Zeile 235: | 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 247: | 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: |