Seminarvortrag
Konzeption mathematischer und physikalischer Animation mit "manim"
Jan-Hendrik Müller
19.5.2022
### Meine Projekte * MIP Labor: "Phänomene der Medizinphysik visuell begreifbar machen." * Einführende Videos zu Röntgen CT, MRT & mehr. * Entwicklung von "manim" * Physikdidaktik Kurs: Montag **05.09.22** - Freitag **09.09.22**. --- ### Das Tool Manim * **Manim** = **Ma**thematische **Anim**ationen * Koppelt mathematische Formeln intuitiv an Farben und Konturen. * Kostenlose Open Source Software * Python Code-generierte Animationen * sehr gute Anbindung an physikalische und mathematische Python Pakete --- Brownian Motion
--- Dopplereffekt
--- Vektorfeld
--- Logarithmus
Made by [@Photon_Sphere](https://twitter.com/Photon_Sphere)
--- Doppelpendel
Made by [@Sam Maksimovich](https://www.youtube.com/watch?v=n7JK4Ht8k8M)
--- Tomographische Rückprojektion
`$$ f(x,y) = \frac{1}{2} \int_{0}^{2 \pi} \mathcal{F}_1^{-1} \big\{ P(\omega, \phi) \cdot \orange{|\omega|} \big\} \, d\phi $$`
--- Konvergenz
Made by [@EricESeverson](https://twitter.com/EricESeverson/status/1413208434523009024?s=20&t=9Pp-KhqjeUaJdtsG5LPCcg )
--- Lissajous
Made by [@PRAGYAAN](https://www.youtube.com/watch?v=kQ7A_bO0Efo)
--- Schwarzraumstrahlung
--- Carnot-Prozess (später im Detail)
--- ### Wann ist manim geeignet? * Für sehr präzise Animationen * Iteration über Objekte * Zufallsparameter generieren * Anbindung an schon in Python implementierte Physik/Mathe Module --- ### Wann ist manim nicht geeignet? * interaktiv ❌ * 3 D Grafiken ❌ * Langsam für > 1000 Objekte * Keine Fluid Simulation ❌ * Für simple Animationen (z.B. FadeIn, FadeOut) ist z.B. PowerPoint besser geeignet * Berechnung bis jetzt nur auf CPU (noch nicht GPU) ---
### Kurze Geschichte * Manim wurde 2015 angefangen von Grant Sanderson zu entwickeln, als persönliches Projekt für seinen Mathe YouTube Kanal [3blue1brown](https://youtube.com/3blue1brown). * Basierend auf seinem Code hat sich im Mai 2020 die Community [ManimCommunity](https://github.com/ManimCommunity/manim) gegründet, mit dem Ziel manim zu dokumentieren und stetig zu verbessern. * Zur Zeit gibt es 26 ehrenamtliche Core-Maintainer welche halbjährlich ein Steering Council (Lenkungsgremium) mit 3 Mitgliedern wählen. * Bis Heute (19.5.22) wurden 1566 Beiträge zur Codeverbesserung von 304 Mitwirkenden auf [GitHub](https://github.com/ManimCommunity/manim) eingepflegt.
Statistik
Tägliche Besuche der Dokumentationsseite: ca. 7.000
Über 12.000
monatliche Downloads
Über 10.000
⭐️ on GitHub
### Bauen von Szenen
--- ### Mathematical Object Gallery
--- ### First example ```py %%manim -qm CircleToSquare class CircleToSquare(Scene): def construct(self): blue_circle = Circle(color=BLUE, fill_opacity=0.5) green_square = Square(color=GREEN, fill_opacity=0.8) self.play(Create(blue_circle)) self.wait() self.play(Transform(blue_circle, green_square)) self.wait() ```
--- ### Animation ```py %%manim -qh Example class Example(Scene): def construct(self): dot = Dot(color= YELLOW, radius=0.5) self.play(dot.animate.shift(3*RIGHT).scale(2).set_color(BLUE)) ```
--- ### Alignment Nebeneinander Positionieren, Rotieren,Spiegeln, Färben etc.
--- Carnot-Prozess - Schritt für Schritt
--- ## Carnot-Prozess * Temperatur * Volumen * Konstanten ```py import numpy as np import matplotlib.pyplot as plt from scipy.constants import zero_Celsius Tmax = zero_Celsius + 300 Tmin = zero_Celsius + 20 R = 8.314 kappa = 5/3 V1 = 1 V2 = 2 ``` --- ## Isotherm
`$$ p \cdot V = R \cdot T $$` `$$ \rightarrow p(V,T)= \frac{R \cdot T}{V} $$`
```py def p_isotherm(V,T): return (R*T)/V ``` --- ## Adiabatisch
`$$ p \cdot V^{5/3} = const. $$` `$$ \rightarrow p(V,p_0,V_0)= \frac{p_0 \cdot V_0^{5/3}}{V^{5/3}} $$`
```py def p_adiabatisch(V,p_start,v_start): return (p_start*v_start**kappa)/V**kappa ``` ---
---
### Kursplan * **Tag 0** - Python selbstlern Kurs zum Auffrischen * Jupyter Notebooks als Vorbereitung: Funktionen, Variablen, Arrays, Pakete importieren * **Tag 1** - Vorstellung manim - statische Szenen (Jupyter Notebooks) * **Tag 2** - dynamische Szenen - Updater und Klassen (Jupyter Notebooks) * **Tag 3** - vorgegebenes Projekt (e.g. Brownian Motion, Federpendel, Fadenpendel) * Gedanken über eigenes Projekt machen * **Tag 4** - eigenes Projekt mit Feedback von TutorInnen * **Tag 5** - eigenes Projekt mit Feedback von TutorInnen
--- ### Prüfungsleistung * Kurze Animation (ca. 10 Sekunden) zu eigenem Thema * Animation wird als mp4 format abgegeben, zusammen mit dem generierenden Code. * Vlt. Motivation: Veröffentlichung auf Pheyelab Uni Göttingen? Veröffentlichung auf Wikipedia? ---
### Mögliche Projekte: * Fadenpendel * Zwei Gekoppelte Pendel * Doppelpendel * Federpendel * Gedämpftes Federpendel * Pendel im Vergleich mit unterschiedlicher Gravitation * Teilchen im Vektorfeld * Dopplereffekt * Brownian Motion * Flummi mit Energieverlust beim Stoß * Brechungsindex
---
### Mögliche Projekte Fortsetzung 1: * Monte Carlo Berechnung von PI * harmonische Schwingungen * Wellen mit Dispersion * Drehmoment * Schwarzraumstrahlung * Kühlschrank * Solarzelle * Magnetische Hysteresekurve
---
### Mögliche Projekte Fortsetzung 2: * ATP Versorgung in Zelle * Sound-to-Noise ratio * optical tweezers * Hall Sonde * Halbleiterdotierung-> Eindringtiefe * Feynman Diagramme: Paarerzeugung * kosmische Strahlung in Atmosphäre Zerfall * Radioaktiver Zerfall * Laser Funktionsweise * Röhrenfernseher * Strahlengang im Beamer * DLP - Strahlengang * LCD - Strahlengang
--- Vielen Dank für eure Aufmerksamkeit!
Folien sind hier erhältlich: https://manim-content.pages.gwdg.de/physikdidaktik-talk-19-5-22/