Short introduction to Manim: Difference between revisions
(→Lines) |
(→Camera) |
||
| Line 114: | Line 114: | ||
== Camera == | == Camera == | ||
Animate camera movement while animating sine wave (plane wave). | |||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
| Line 141: | Line 143: | ||
</syntaxhighlight > | </syntaxhighlight > | ||
phi Vertical angle (elevation) | The camera parameters | ||
theta Horizontal angle (azimuth/orbit angle) | *phi Vertical angle (elevation) | ||
focal_distance Perspective strength | *theta Horizontal angle (azimuth/orbit angle) | ||
gamma Roll (rotation around viewing axis) | *focal_distance Perspective strength | ||
zoom Zoom factor | *gamma Roll (rotation around viewing axis) | ||
*zoom Zoom factor | |||
Revision as of 19:14, 6 June 2026
Introduction
Manim or manimgl.
Virtual engine
python -m venv .
source bin/activate
For faster rendering use smaller resolution resolution=(15,15) and smaller fps rate
manim -pql --fps 10 ma_animatedplanewave.py PlaneWave3D
Some short manim scrips to generate easy visualizations.
manim -pql bez2.py manim -pqh bez2.py BezierSplineExample --format=png f: open the directory/ folder i: generate gif file p: play qm, qh, qk: quality (low, high, 4k) qh: high quality s: save last frame t: transparent background
config.background_color = WHITE
Add a background image
bg_image = ImageMobject("bg_P5.png")
self.add( bg_image )
Add the background plane
plane = NumberPlane( background_line_style={
"stroke_color": BLACK,
"stroke_width": 4,
"stroke_opacity": 1
},
x_range=[-10, 10, 1],
y_range=[-10, 10, 1],
)
self.add( plane )
Install Manim on Arch Linux
Pip is not working on a virtual environment. However use uv to install it. That works (on Sep 2024):
uv pip install manim
It is now installed on virtual environment, but the global system is not affected (not working outside virtual environment).
BG plane
number_plane = NumberPlane(
background_line_style={
"stroke_color": TEAL,
"stroke_width": 1,
"stroke_opacity": 0.2
}
)
self.add(number_plane)
Bezier curve
Animated bezier curve with two points:

https://github.com/markkuleino/manim/blob/main/FLL_CC0_bezier.py
See tutorial on Bezier Curves https://pomax.github.io/bezierinfo/ and the interactive tutorial https://www.jasondavies.com/animated-bezier/
Heat engine
-
Carnot cycle. Remove bg.
-
Otto cycle. Remove bg.
-
Diesel cycle. Remove bg.
Paths
https://github.com/Elteoremadebeethoven/AnimationsWithManim/blob/master/English/extra/faqs/paths.md
- Show Points
- Path as corners
- Path smoothly
- Bezier points of a path
- Change path style
Lines
https://github.com/markkuleino/manim/blob/main/FLL_CC2_m13b.py
Camera
Animate camera movement while animating sine wave (plane wave).
surface = always_redraw(
lambda: Surface(
lambda u, v: np.array([ u, v, np.sin(u - phase.get_value()) ]),
u_range=[-50, 50],
v_range=[-5, 5],
resolution=(15, 15),
fill_opacity=0.8,
#checkerboard_colors=[ BLUE_D, BLUE_E, ],
).set_fill_by_value(
axes=axes,
colors=[ (BLUE_E, -1), (BLUE, 0), (YELLOW, 1), ]
)
)
phi, theta, focal_distance, gamma, zoom = self.camera.get_value_trackers()
#1. Zoom away
self.play(
zoom.animate.set_value(0.5),
phase.animate.set_value(8 * np.pi),
run_time=10,
rate_func=linear,
)
The camera parameters
- phi Vertical angle (elevation)
- theta Horizontal angle (azimuth/orbit angle)
- focal_distance Perspective strength
- gamma Roll (rotation around viewing axis)
- zoom Zoom factor