Manim 是一个用于创建数学动画的 Python 库。它由 Grant Sanderson(也被称为 3Blue1Brown)创建,并在他的 YouTube 频道中用于演示数学概念。Manim 的目标是让数学变得更具有可视化和互动性,并使用户能够更好地理解数学。
Manim 具有强大的功能,可以创建各种类型的动画,包括几何动画、图表动画、线性代数动画等。它提供了丰富的数学绘图功能,可以绘制二维和三维图形,并支持自定义样式和动画效果。Manim 还提供了一套强大的动画命令,可以控制对象的移动、旋转、缩放等各种变换,以及时间轴的控制和动画的插值。
Manim 的库设计非常灵活,用户可以根据自己的需求进行定制和扩展。它支持使用 LaTeX 格式的数学符号和公式,并具有丰富的图像导出选项,可以生成高质量的视频或图像文件。
Manim 的学习曲线相对较陡,需要一些编程和数学基础。但是,一旦掌握了基本概念和技巧,就可以创建出令人惊叹的数学动画,并将复杂的数学概念更好地传达给观众。
安装
首先,要使用Manim,你需要安装它。可以通过pip安装最新版本的Manim库:
pip install manim
基础使用
- 创建简单动画
描述:开始我们的Manim之旅,可以先从绘制一个简单的圆开始。使用Manim的Circle类,你可以轻松创建并动画化一个圆。
代码示例:
from manim import *
class CreateCircle(Scene):
def construct(self):
circle = Circle() # 创建一个圆
circle.set_fill(PINK, opacity=0.5) # 设置颜色和透明度
self.play(Create(circle)) # 在屏幕上展示圆
之后执行以下命令:
manim -pql scene.py CreateCircle
得到以下效果:
- 动画变换
标题:变换形状
描述:接下来,让我们尝试将一个形状变换成另一个形状。Manim提供了多种变换动画,让这个过程变得简单又富有趣味。
代码示例:
class SquareToCircle(Scene):
def construct(self):
circle = Circle() # 创建一个圆
circle.set_fill(PINK, opacity=0.5) # 设置颜色和透明度
square = Square() # 创建一个正方形
square.rotate(PI / 4) # 旋转一定的角度
self.play(Create(square)) # 动画展示正方形的创建
self.play(Transform(square, circle)) # 将正方形变换为圆形
self.play(FadeOut(square)) # 正方形淡出动画
同样需要在命令行窗口下执行
manim -pql scene.py SquareToCircle
效果如下:
- 3D 动画
Manim也支持3D动画的创建。这要求有一定的开发经验,但它为动画带来了全新的可能性。
代码示例:
class GetAxisLabelsExample(ThreeDScene):
def construct(self):
self.set_camera_orientation(phi=2*PI/5, theta=PI/5)
axes = ThreeDAxes()
labels = axes.get_axis_labels(
Tex("x-axis").scale(0.7), Text("y-axis").scale(0.45), Text("z-axis").scale(0.45)
)
self.add(axes, labels)
如图:
总的来说,Manim 是一个强大而灵活的数学动画库,可以帮助用户创造出精美、交互性强的数学动画,提高数学学习和教学的效果。