你是否曾在学习数学时,被抽象的函数图像、复杂的几何关系搞得晕头转向?是否想过,要是能让这些枯燥的数学知识“动”起来,学习效率会翻倍?今天,我要给大家安利一个Python宝藏库——Manim,它能把数学概念变成直观生动的动画,无论是自学还是教学,都能让你眼前一亮!
一、Manim:让数学“活”起来的动画引擎
Manim,全称Mathematical Animation Engine,是由知名数学科普博主Grant Sanderson(3Blue1Brown创始人)开发的开源工具。不同于AE、Flash等需要手动拖拽的动画软件,Manim用Python代码就能精准控制每一个数学元素,从简单的线段、圆形,到复杂的LaTeX公式、3D模型,都能轻松实现“代码写完,动画生成”的效果。
为什么说Manim是数学爱好者的“福音”?这3个核心优势不得不提:
· 数学原生支持:无需额外插件,Manim能直接识别LaTeX公式、绘制函数图像、构建向量矩阵。比如写一行Tex(r’$y = sin(x)$’),就能生成精美的公式;用axes.plot(lambda x: np.sin(x)),立刻得到标准的正弦曲线,省去了手动绘图的繁琐。
· 丝滑的动画控制:淡入淡出、旋转缩放、路径跟踪……Manim自带数十种动画效果,还能通过代码调节速度、节奏和过渡方式。哪怕是让函数图像随参数动态变化,或是让3D模型绕轴旋转,都能做到无卡顿、无断层的丝滑效果。
· 高清输出无压力:默认支持1080p分辨率,最高可导出4K视频,无论是插入课件、制作科普视频,还是用于论文插图,都能保证画面清晰细腻,细节满分。
二、3个实战案例:从入门到进阶,手把手教你做动画
光说不练假把式,下面我用3个从易到难的案例,带大家快速掌握Manim的核心用法。每个案例都附完整代码和效果解析,跟着做,你也能做出专业级数学动画!
(一)基础款:让圆形“动”起来——掌握动画基本逻辑
先从最简单的几何动画入手,我们要实现“圆形出现→向右移动→消失”的效果,核心是理解Manim中“创建对象→添加动画→展示场景”的基本流程。
from manim import * # 导入Manim核心库
# 定义动画场景(所有动画都要放在Scene类的子类中)
class CircleAnimation(Scene):
def construct(self):
# 1. 创建圆形:半径1,蓝色,半透明填充
circle = Circle(radius=1, color=BLUE) # 设定形状、颜色
circle.set_fill(BLUE, opacity=0.5) # 填充颜色+透明度
# 2. 添加动画:圆形逐渐出现(2秒)
self.play(Create(circle), run_time=2)
self.wait(1) # 暂停1秒,让观众看清
# 3. 添加动画:圆形向右移动2个单位(3秒)
self.play(circle.animate.shift(RIGHT * 2), run_time=3)
self.wait(1)
# 4. 添加动画:圆形逐渐消失(2秒)
self.play(FadeOut(circle), run_time=2)
效果解析:运行代码后,屏幕会先缓缓出现一个半透明的蓝色圆形,停留1秒后,圆形会平稳地向右移动,最后慢慢消失。这个案例看似简单,却包含了Manim的核心逻辑——所有动画都是“对象+动作”的组合:先创建图形对象,再用play()方法给对象添加动画动作,wait()则用来控制动画节奏。
如果你是新手,建议先修改代码中的参数试试:比如把radius=1改成radius=2(圆形变大),把RIGHT * 2改成UP * 3(圆形向上移动),感受代码对动画的精准控制。
(二)进阶级:动态展示正弦函数——让数学概念更直观
学过三角函数的人都知道,“正弦函数图像随相位变化而平移”是个难点。用Manim做个动态动画,这个知识点立刻就懂了!我们要实现“正弦函数图像随参数α变化,在坐标轴上左右移动”的效果。
from manim import *
import numpy as np # 用于数学计算
class SineFunctionAnimation(Scene):
def construct(self):
# 1. 创建坐标轴:x范围[-5,5],y范围[-2,2],绿色坐标轴
axes = Axes(
x_range=[-5, 5, 1], # x轴:从-5到5,每1个单位标1个刻度
y_range=[-2, 2, 1], # y轴:从-2到2,每1个单位标1个刻度
axis_config={‘color’: GREEN} # 坐标轴颜色
)
# 2. 定义初始正弦函数:y = sin(x)

sine_func = lambda x: np.sin(x)
# 绘制初始函数图像(红色)
graph = axes.plot(sine_func, color=RED)
# 3. 先展示坐标轴和初始图像
self.add(axes, graph)
self.wait(1) # 停留1秒,让观众看清初始状态
# 4. 定义“函数随参数变化”的更新逻辑
def update_sine_func(mob, alpha):
# alpha是0到1的参数,随时间变化:0对应初始状态,1对应最终状态
new_func = lambda x: np.sin(x + alpha) # 相位随alpha变化
mob.become(axes.plot(new_func, color=RED)) # 更新函数图像
# 5. 添加动画:10秒内完成函数图像的动态变化
self.play(UpdateFromAlphaFunc(graph, update_sine_func), run_time=10)
效果解析:运行后,屏幕会先出现绿色的坐标轴和红色的正弦曲线。接着,随着时间推移,红色曲线会缓慢地左右平移——这正是“相位变化导致函数图像平移”的直观体现!以前靠想象理解的知识点,现在看动画就能秒懂。
这个案例的关键是UpdateFromAlphaFunc函数:它能根据alpha参数(0到1)实时更新对象,非常适合展示“参数变化带来的动态效果”,比如函数图像平移、图形缩放等。
(三)高级款:3D正方体旋转——解锁三维数学动画
如果2D动画还不过瘾,Manim的3D功能能让你更惊艳!下面我们做一个“3D正方体在空间中旋转”的动画,感受三维数学世界的魅力。
from manim import *
# 注意:3D动画需要用ThreeDScene类,而非普通的Scene
class Cube3DAnimation(ThreeDScene):
def construct(self):
# 1. 创建3D正方体:边长2,默认白色
cube = Cube(side_length=2)
# 2. 添加正方体到场景
self.add(cube)
# 3. 设置相机视角:phi是上下角度(75度俯视),theta是左右角度(-45度)
self.set_camera_orientation(phi=75 * DEGREES, theta=-45 * DEGREES)
self.wait(1)
# 4. 添加动画:让正方体绕y轴旋转360度(TAU代表2π,即360度)
self.play(Rotate(cube, about_axis=Y_AXIS, radians=TAU), run_time=10)
效果解析:运行代码后,你会看到一个立体的正方体,从俯视角度呈现。接着,正方体开始绕着竖直方向的y轴缓慢旋转,整个过程中,正方体的棱边、面的遮挡关系都清晰可见——这比在纸上画3D图直观10倍!
这个案例的核心是ThreeDScene类和set_camera_orientation方法:前者用于创建3D场景,后者用来调整“观众视角”,你可以尝试修改phi和theta的值,比如把phi=75改成phi=45(视角更平缓),感受不同视角下的3D效果。
三、Manim的更多可能性:不止于“画动画”
学会了基础操作后,Manim还能做什么?其实它的应用场景远比你想象的更广:
· 数学教学:比如用动画展示“圆的面积公式推导”(把圆分割成扇形,再拼成近似长方形),或是“微积分中的导数几何意义”(切线随点的移动而变化),让抽象公式变成看得见的过程。
· 科普创作:如果你喜欢做科普视频,用Manim可以制作“行星轨道模拟”“斐波那契数列的图形化展示”等内容,搭配讲解,能让观众轻松理解复杂知识。
· 学术展示:写论文时,用Manim制作“算法流程图动画”“数据模型的三维演示”,插入PPT或论文附录,能让评审老师更快get到你的研究重点。
而且Manim的学习门槛并不高——只要你懂基础的Python语法(比如函数、循环),再掌握几个核心类(Scene、Mobject、Animation),就能上手制作简单动画。刚开始可以从修改案例代码入手,比如给圆形加个“旋转”效果,给函数图像换个颜色,慢慢积累经验,很快就能独立创作。
四、用Manim开启数学学习新方式
很多人觉得数学难,是因为它太“抽象”——而Manim的价值,就是把抽象的数学知识转化为直观的视觉体验。当你看到正弦曲线随参数平移、正方体在3D空间旋转时,你会发现:原来数学可以这么有趣,原来复杂的概念也能这么好懂。
无论你是学生(想靠动画提升学习效率)、老师(想制作更生动的课件),还是编程爱好者(想尝试新的创作方向),都可以试试Manim。不需要复杂的设备,一台电脑、一段代码,就能开启你的数学动画创作之旅。
最后,我想说:学习Manim的过程,也是重新理解数学的过程。当你亲手用代码“构建”出数学世界时,你会发现——数学从来不是枯燥的公式,而是充满逻辑与美的艺术。
如果你在学习过程中遇到问题,或者做出了有趣的动画,欢迎在评论区留言分享!也别忘了点赞、收藏这篇文章,让更多人知道这个能“让数学活起来”的神奇工具。关注我,后续还会分享更多Manim进阶技巧,一起解锁数学动画的更多玩法!