Manim让数学动画更有温度
1. Logo 的背后:如何把数学符号“活”起来?
场景:你想在视频开头展示自己的品牌 Logo,Logo 里还要融入“数学范儿”。
Manim 的核心对象叫“Mobject”(数学对象),它既可以是几何图形,也可以是 LaTeX 渲染的公式。我们先用 MathTex
生成一个大大的黑板体“M”,再配合三种形状(圆、方、三角)排成图案,并且各自填上社区配色。通过 VGroup
把它们组合起来,最后做一个微妙的移动和缩放,就能得到一个既有数学质感、又富设计感的 Logo 动画。
# 省略具体代码,只要记住:
# - MathTex 负责公式渲染
# - Circle/Square/Triangle 等都是基本 Mobject
# - VGroup 可以把它们看作一组整体来移动或缩放
背后思路:把“公式是静态文字”这一刻板印象打破,让它和鲜活的图形产生对话。
2. “小注释,大作用”:Brace 为你的示意图加说明
场景:画了一条线段,想要动态地标注它的长度或公式。
用 Brace
就像给线段套了条“备注带”,然后调用它的 .get_text()
或 .get_tex()
,分别插入普通文字或 LaTeX 公式。这样,无论是“Horizontal distance”这样的说明,还是“(x - x_1)”这样的数学符号,都可以优雅地贴附在线段旁边,并随着线段一起出现和消失。
小贴士:当需要不同方向的注释,只要传入不同的
direction
,Brace 会自动计算旋转角度和位置。
3. 点与路径:想让小点“画轨迹”,只需两步
场景:你要演示一个点沿着圆或任意曲线运动的过程。
- 画出路径:可以是
Circle()
、也可以是Axes().plot(func)
生成的函数曲线; - 移动动画:用
MoveAlongPath(dot, path)
,直接让小点在这条路径上奔跑; - 加个转身:如果想让小点自转,用
Rotating(dot, about_point=…)
;
只要把这几步连在一起,用 play()
分段组合,就能得到既流畅又直观的动画——比如展示行星轨道、函数图像的动态生成,或是数据可视化中的高亮标注。
4. 动态追踪:镜头也能“看”着主角走
场景:函数曲线延伸到画面外了,怎么办?让相机跟着它!
Manim 有两种“移动相机”模式:
- MovingCameraScene:可以缩放画面、平移视角,配合更新器
camera.frame.add_updater
,让镜头实时锁定目标。 - ZoomedScene:在一个窗口中同时展示整体视角和放大视角,特别适合在演示复杂图形时“局部细节”和“整体效果”并存。
这样,当你的动画中有关键节点或曲线拐点,相机就能自动“跑上去”,突出重点。
5. 数学函数,一气呵成的可视化
场景:想演示正弦/余弦的波动,或者找到二次函数的最小值。
Manim 的 Axes
模块让坐标系搭建非常简单。调用 .plot(lambda x: ...)
就能直接把任意数学函数画成曲线;再配合 .get_graph_label()
自动添加公式标注,整个渲染过程就像写论文一样严谨,却比白板演算更直观、更美观。
- 如果想演示二次函数的最小值,就用
ValueTracker
来“追踪”变量,然后给点添加一个更新器add_updater
,点随着值的变化自动移动。等到动画播放时,它就会“自己跑”到最小值所在位置,让观众瞬间“抓住”最优解。
如何上手?
- 安装 ManimCE:
pip install manim
。 - 运行示例:官方文档的示例画廊(Example Gallery)提供了所有上面提到的脚本。直接在本地
manim path/to/Script.py ClassName
即可输出动画。 - 灵活组合:把基础几何、动画、相机、函数绘图模块拼在一起,随时可扩展;编写自己的
Scene
类,轻松复用社区示例。
总结:
Manim 的魅力在于“代码就是画面脚本”,但更重要的是“思路可视化”。你不必死记每行代码,而是根据“我想讲什么”、“怎么演示得更直观”来选用对应模块:几何对象、动画方法、相机控制、更新器。结合这些模块,轻松制作出既有数学内涵又具视觉冲击力的动画。希望本文帮你理清 Manim 的核心套路,用更生动的方式开始你的数学动画之旅!