Manim:超赞的Python数学动画库

1. ​引言

本文将带大家走进Manim的世界!这是一个由大名鼎鼎的3Blue1Brown 的作者Grant Sanderson创建,它能通过精美的动画让数学栩栩如生,特别适合用于制作各类数学教学视频。

在本文中,我们将探索Manim 在数学可视化方面的强大功能,看看它是如何将抽象的概念变得引人入胜、令人惊叹的。准备好大开眼界吧!

2. 安装

在正式开始之前,我们需要进行安装,一般使用pip即可安装,命令如下:

pip install manim

安装完成后,我们就可以开始一起探索这个超棒的动画库了。准备好用 Manim 制作精美动画了吗?让我们接下来一起深入了解五个示例!我们将从简单的动画开始,逐步过渡到更复杂的动画,展示Manim 的强大功能和直观性。

3. 显示简单文本

首先,让我们创建一个动画,在屏幕上显示文字 "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

即可得到如下结果:

在这里插入图片描述

4. 分析解释

在上述中,首先我们导入了 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高清质量。

5. 绘制几何图形

现在,让我们用一个圆形和一个正方形制作一个简单的动画。

# 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 

得到结果如下:
在这里插入图片描述

6. 动画组合

接着让我们用动画演示从正方形到圆形的转换。

# 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

得到结果如下:
在这里插入图片描述

7. 演示数学函数

接着让我们来绘制一条简单的抛物线:

# scene.pyclass 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

得到结果如下:
在这里插入图片描述

8. 演示复杂公式

事实上,我们经常会遇到一些数学上复杂的计算公式,此时我们可以使用 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()

我们创建一个名为formulaMathTex 对象,其中包含描述方程的LaTeX 代码。运行上述代码后,可以得到结果动画如下:
在这里插入图片描述

9. 总结

只需简单几行代码,大家就可以使用 Manim来制作出令人惊叹的数学动画。对数学和编程感兴趣的同学,推荐大家快来尝试,享受其中的乐趣吧!

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵卓不凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值