首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Manim:超赞的Python数学动画库

  • 25-02-20 15:21
  • 3451
  • 5561
blog.csdn.net

01

引言

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

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

02

安装

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

pip install manim
  • 1

安装完成后,我们就可以开始一起探索这个超棒的动画库了。准备好用 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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

之后在当前文件所在目录下的命令行窗口,执行以下命令:

manim -pql scene.py HelloWorld
  • 1

即可得到如下结果:

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

上述代码中,我们定义了一个形状类Shapes,并创建了圆形和正方形对象。然后,我们使用 Create 绘制相应对象的形状,并使用animate.shift() 方法将它们分别向左和向右移动。

同样在命令行中,运行如下命令:

 manim -pql scene.py Shapes 
  • 1

得到结果如下:

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在本例中,我们同时创建了正方形和圆形对象,使用创建动画函数Create绘制正方形,然后使用变换动画函数Transform将正方形变为圆形。

同样在命令行中,运行如下命令:

manim -pql scene.py Transformation
  • 1

得到结果如下:

‍

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在上述代码中,我们首先要设置一个Axes对象,配置其 x 方向和 y方向的范围及长度,并启用沿轴显示数字。接下来,我们为抛物线曲线

(y=0.1x^2)定义一个 lambda函数。最后我们使用 plot() 方法生成函数的图形,并将其存储在变量curve中。

同样在命令行中,运行如下命令:

manim -pql scene.py FunctionPlot
  • 1

得到结果如下:

‍

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()
  • 1
  • 2
  • 3
  • 4
  • 5

我们创建一个名为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%免费】

网安/黑客入门资料包
微信名片
注:本文转载自blog.csdn.net的程序员羊羊的文章"https://blog.csdn.net/chengxuyuanyy/article/details/137860076"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

108
Python
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top