Manim 是一个用于创建解释性数学视频的动画引擎,由 Grant Sanderson(3Blue1Brown 频道主)开发并开源。它使用 Python 代码实现基本动画对象和运动轨迹,并利用 FFmpeg 对视频进行串流处理。Manim 已经在 GitHub 上获得了两万多颗星,成为了一个非常受欢迎的项目 [5]。
Manim 的特点
- 精确编程:Manim 是一个用于精确编程动画的引擎,专为创建解释性数学视频而设计。它可以用来制作高质量的数学教学视频。
- 社区支持:除了官方版本外,还有一个由社区维护的版本,旨在更稳定、更易于使用 [13]。
- 丰富的教程和文档:许多用户和开发者提供了详细的教程和文档,帮助新手快速上手。例如,有专门的中文教程和安装指南 [1]。
安装方法
Manim 的安装有两种主要方式:
- 安装发布的 manimlib:可以通过 pip 安装发布的 manimlib 版本,但这种方式可能不是最新的。
- 克隆 GitHub 仓库:推荐的方式是克隆 GitHub 上的仓库,在本地直接与 repo 中的 manimlib 文件挂钩进行编译。这样可以获得最新的功能和修复 [6]。
使用场景
Manim 广泛应用于数学教育领域,尤其适合以下场景:
- 数学公式排版:可以轻松排版打印复杂的数学公式。
- 基础动画类 Scene:通过实例化 Scenes 来生成视频,描述一系列动画操作。
- 二维坐标类 GraphScene:用于绘制二维图形和函数图像。
- 文本类:支持文本数组的操作和显示。
示例代码
以下是一个简单的 Manim 示例代码,展示了如何创建一个基本的动画场景:
from manim import *
class SquareToCircle(Scene):
def construct(self):
circle = Circle()
square = Square()
square.flip(RIGHT)
square.rotate(-3 * TAU / 8)
self.play(Create(square))
self.play(Transform(square, circle))
self.play(FadeOut(square))
这段代码会创建一个从正方形到圆形的变换动画,并最终淡出该图形 [25]。
总结
Manim 是一个强大的工具,特别适合那些希望通过编程来创建高质量数学动画的人。无论是个人学习还是教学用途,Manim 都能提供极大的帮助。如果你对数学动画感兴趣,不妨尝试一下这个优秀的开源项目。