Manim:超赞的Python数学动画库
2025-01-29
01
引言
本文将带大家走进Manim的世界!这是一个由大名鼎鼎的3Blue1Brown 的作者Grant Sanderson创建,它能通过精美的动画让数学栩栩如生,特别适合用于制作各类数学教学视频。
在本文中,我们将探索 Manim 在数学可视化方面的强大功能,看看它是如何将抽象的概念变得引人入胜、令人惊叹的。准备好大开眼界吧!
02
安装
在正式开始之前,我们需要进行安装,一般使用pip即可安装,命令如下:
pip install manim
安装完成后,我们就可以开始一起探索这个超棒的动画库了。准备好用 Manim 制作精美动画了吗?让我们接下来一起深入了解五个示例!我们将从简单的动画开始,逐步过渡到更复杂的动画,展示Manim 的强大功能和直观性。
03
显示简单文本
首先,让我们创建一个动画,在屏幕上显示文字 “Hello,Manim!”。下面是实现这一目的的代码片段:
# scene.py
from manim import *
class HelloWorld(Scene):
def construct(self):
text = Text("Hello, Manim!")
self.play(Write(text))
self.wait()
之后在当前文件所在目录下的命令行窗口,执行以下命令:
manim -pql scene.py HelloWorld
即可得到如下结果:
04
分析解释
在上述中,首先我们导入了 Manim 的基本组件,定义了一个继承自 Scene 的自定义类 HelloWorld,并创建了一个包含输出信息的Text对象,使用 Write函数制作文本动画,self.play()显示动画,self.wait()暂停动画片刻。
此外,我们对上述运行命令行进行分析:
manim -pql scene.py HelloWorld
首先,上述命令在包含描述绘画代码的文件scene.py上执行manim。此外,此命令告诉 manim 要渲染的确切场景,在本例中,它是HelloWorld。这是必需的,因为单个场景文件scene.py 可能包含多个场景类的定义。
接下来,标志位 -p 告诉 manim在渲染场景后播放场景,而 -ql 标志位告诉 manim 以低质量渲染场景。当然,指定渲染场景动画质量的其他选项还包括 -qm、-qh 和 -qk,分别表示中、高和4k高清质量。
05
绘制几何图形
现在,让我们用一个圆形和一个正方形制作一个简单的动画。
# scene.py
from manim import *
class Shapes(Scene):
def construct(self):
circle = Circle()
square = Square()
self.play(Create(circle))
self.play(circle.animate.shift(LEFT))
self.play(Create(square))
self.play(square.animate.shift(RIGHT))
self.wait()
上述代码中,我们定义了一个形状类Shapes,并创建了圆形和正方形对象。然后,我们使用 Create 绘制相应对象的形状,并使用animate.shift() 方法将它们分别向左和向右移动。
同样在命令行中,运行如下命令:
manim -pql scene.py Shapes
得到结果如下:
06
动画组合
接着让我们用动画演示从正方形到圆形的转换。
# scene.py
from manim import *
class Transformation(Scene):
def construct(self):
square = Square()
circle = Circle()
self.play(Create(square))
self.play(Transform(square, circle))
self.wait()
在本例中,我们同时创建了正方形和圆形对象,使用创建动画函数Create绘制正方形,然后使用变换动画函数Transform将正方形变为圆形。
同样在命令行中,运行如下命令:
manim -pql scene.py Transformation
得到结果如下:
06
演示数学函数
接着让我们来绘制一条简单的抛物线:
# scene.py
class FunctionPlot(Scene):
def construct(self):
ax = Axes(
x_range=[-5, 5, 1],
y_range=[-3, 3, 1],
x_length=10,
y_length=6,
axis_config={"include_numbers": True},
)
func = lambda x: 0.1 * (x**2)
curve = ax.plot(func, color=YELLOW)
self.play(Create(ax))
self.play(Write(curve))
self.wait()
在上述代码中,我们首先要设置一个Axes对象,配置其 x 方向和 y方向的范围及长度,并启用沿轴显示数字。接下来,我们为抛物线曲线
(y=0.1x^2)定义一个 lambda函数。最后我们使用 plot() 方法生成函数的图形,并将其存储在变量curve中。
同样在命令行中,运行如下命令:
manim -pql scene.py FunctionPlot
得到结果如下:
07
演示复杂公式
事实上,我们经常会遇到一些数学上复杂的计算公式,此时我们可以使用 LaTeX 代码来表示对应的方程,举例如下:
class LaTeXFormula(Scene):
def construct(self):
formula = MathTex(r"\int_{-\infty}^{\infty} \frac{1}{\sqrt{2\pi\sigma^2}}dx")
self.play(Write(formula))
self.wait()
我们创建一个名为formula 的MathTex 对象,其中包含描述方程的LaTeX 代码。运行上述代码后,可以得到结果动画如下:
08
总结
只需简单几行代码,大家就可以使用 Manim 来制作出令人惊叹的数学动画。对数学和编程感兴趣的同学,推荐大家快来尝试,享受其中的乐趣吧!
关于Python学习指南
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
👉Python所有方向的学习路线👈
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉Python大厂面试资料👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉Python副业兼职路线&方法👈
学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。
👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费
】
