【Python知识】Manim数学公式转动画

Manim使用

  • 使用 Manim 实现数学公式转动画
  • 1. **安装 Manim**
  • 安装步骤:
  • 2. **基本用法**
  • 示例 1:显示数学公式
  • 运行脚本:
  • 3. **典型示例**
  • 示例 2:公式变换
  • 示例 3:公式分解
  • 示例 4:公式与几何图形结合
  • 4. **高级功能**
  • 示例 5:路径动画
  • 5. **学习资源**
  • 使用 Manim 实现数学公式转动画

    Manim 是一个由 3Blue1Brown 的 Grant Sanderson 开发的数学动画引擎,专门用于创建高质量的数学可视化内容。它使用 Python 编写,支持将数学公式、几何图形、图表等转化为动画。以下是使用 Manim 实现数学公式转动画的详细步骤,以及几个典型示例。


    1. 安装 Manim

    首先,你需要安装 Manim。推荐使用社区维护的 manimce 版本(Community Edition),因为它更易于安装和使用。

    安装步骤:
    1. 确保已安装 Python 3.7 或更高版本。

    2. 安装依赖库:

      pip install manim
      
    3. 安装 LaTeX(用于渲染数学公式):

    4. Windows: 安装 MiKTeX 或 TeX Live。
    5. macOS: 安装 MacTeX。
    6. Linux: 使用包管理器安装 TeX Live,例如:
      sudo apt-get install texlive-full
      
    7. 验证安装:

      manim --version
      

    2. 基本用法

    Manim 的核心是通过编写 Python 脚本来创建动画。以下是一个简单的示例,展示如何将数学公式转化为动画。

    示例 1:显示数学公式
    from manim import *
    
    class FormulaExample(Scene):
        def construct(self):
            # 创建一个数学公式
            formula = MathTex(r"\int_a^b f(x) \, dx = F(b) - F(a)")
            
            # 显示公式
            self.play(Write(formula))
            self.wait(2)
    
    # 运行脚本
    if __name__ == "__main__":
        scene = FormulaExample()
        scene.render()
    
    运行脚本:
    manim -pql script.py FormulaExample
    
  • -pql 参数表示以中等质量预览动画。
  • script.py 是你的 Python 脚本文件名。
  • FormulaExample 是场景类名。

  • 3. 典型示例

    以下是几个典型的 Manim 动画示例,展示如何将数学公式转化为动画。

    示例 2:公式变换
    from manim import *
    
    class TransformFormula(Scene):
        def construct(self):
            # 创建初始公式
            formula1 = MathTex(r"e^{i\pi} + 1 = 0")
            formula2 = MathTex(r"\sum_{n=1}^\infty \frac{1}{n^2} = \frac{\pi^2}{6}")
            
            # 显示第一个公式
            self.play(Write(formula1))
            self.wait(1)
            
            # 变换为第二个公式
            self.play(Transform(formula1, formula2))
            self.wait(2)
    
    # 运行脚本
    if __name__ == "__main__":
        scene = TransformFormula()
        scene.render()
    
    示例 3:公式分解
    from manim import *
    
    class DecomposeFormula(Scene):
        def construct(self):
            # 创建公式
            formula = MathTex(r"\frac{d}{dx} \left( \int_a^x f(t) \, dt \right) = f(x)")
            
            # 分解公式
            self.play(Write(formula))
            self.wait(1)
            
            # 高亮显示部分公式
            self.play(
                formula[0][0:3].animate.set_color(YELLOW),  # 高亮 d/dx
                formula[0][4:10].animate.set_color(BLUE),   # 高亮积分符号
                formula[0][11:14].animate.set_color(RED)    # 高亮 f(x)
            )
            self.wait(2)
    
    # 运行脚本
    if __name__ == "__main__":
        scene = DecomposeFormula()
        scene.render()
    
    示例 4:公式与几何图形结合
    from manim import *
    
    class FormulaWithGeometry(Scene):
        def construct(self):
            # 创建公式
            formula = MathTex(r"x^2 + y^2 = r^2")
            
            # 创建圆
            circle = Circle(radius=2, color=BLUE)
            
            # 显示公式和圆
            self.play(Write(formula))
            self.play(Create(circle))
            self.wait(2)
    
    # 运行脚本
    if __name__ == "__main__":
        scene = FormulaWithGeometry()
        scene.render()
    

    4. 高级功能

    Manim 还支持更复杂的功能,例如:

  • 动画组合:将多个动画组合在一起。
  • 路径动画:让对象沿指定路径移动。
  • 自定义图形:创建复杂的几何图形。
  • 交互式演示:结合 Jupyter Notebook 使用。
  • 示例 5:路径动画
    from manim import *
    
    class PathAnimation(Scene):
        def construct(self):
            # 创建公式
            formula = MathTex(r"f(x) = x^2")
            
            # 创建路径
            path = Arc(radius=2, angle=TAU/4)
            
            # 沿路径移动公式
            self.play(Write(formula))
            self.play(MoveAlongPath(formula, path))
            self.wait(2)
    
    # 运行脚本
    if __name__ == "__main__":
        scene = PathAnimation()
        scene.render()
    

    5. 学习资源

  • 官方文档:Manim Community Edition Documentation
  • GitHub 仓库:ManimCE GitHub
  • 教程视频:3Blue1Brown 的 YouTube 频道有许多 Manim 教程。

  • 通过以上步骤和示例,你可以轻松使用 Manim 将数学公式转化为动画,并创建出高质量的可视化内容。如果你有更具体的需求或问题,可以进一步探讨!

    作者:问道飞鱼

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【Python知识】Manim数学公式转动画

    发表回复