首页 > 编程语言 >用Python打造精彩动画与视频, 6.2 使用Manim进行数学和科学可视化

用Python打造精彩动画与视频, 6.2 使用Manim进行数学和科学可视化

时间:2024-08-04 16:26:11浏览次数:16  
标签:动画 play Python self 可视化 6.2 Manim

 6.2 使用Manim进行数学和科学可视化

Manim(Mathematical Animation Engine)是一款强大的动画制作工具,尤其适用于数学和科学领域的可视化。它由3Blue1Brown的Grant Sanderson开发,旨在通过动画演示复杂的数学概念,使其更易于理解。使用Manim,用户可以创建高质量的数学动画,从简单的几何图形到复杂的微分方程,几乎无所不包。

6.2.1 初识Manim的基础

from manim import *

class MovingCircle(Scene):

    def construct(self):

        circle = Circle()  # 创建一个圆

        circle.set_fill(PINK, opacity=0.5)  # 设置填充颜色和透明度

        self.play(Create(circle))  # 绘制圆

        self.play(circle.animate.shift(RIGHT * 2))  # 将圆向右移动

        self.play(FadeOut(circle))  # 淡出圆

在开始使用Manim之前,了解其基本工作流程是至关重要的。Manim使用Python脚本来定义动画场景,这些脚本描述了每个场景中物体的创建、变换和动画。以下是一个简单的示例代码,用于绘制一个移动的圆:

6.2.2 数学公式的可视化

Manim的一个显著优势是其处理LaTeX公式的能力。通过Manim,可以轻松地将复杂的数学公式呈现为动画效果。例如,以下代码展示了如何用Manim显示并演示一个二次方程:

from manim import *

class QuadraticFormula(Scene):

    def construct(self):

        formula = MathTex(r"x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}")

        self.play(Write(formula))  # 逐步写出公式

        self.play(formula.animate.to_edge(UP))  # 将公式移到屏幕上方

6.2.3 科学现象的模拟

from manim import *

class ProjectileMotion(Scene):

    def construct(self):

        projectile = Dot().move_to(LEFT * 3 + DOWN * 2)

        path = TracedPath(projectile.get_center, stroke_color=YELLOW)

        self.add(path)

        self.play(projectile.animate.apply_complex_function(lambda z: z + z**2))

除了数学公式,Manim还非常适合科学现象的可视化。例如,模拟物理中的抛体运动或电磁波传播等。以下示例代码展示了如何使用Manim模拟一个简单的抛体运动:

6.2.4 交互和动态变换

Manim不仅支持静态图形和简单动画,还可以创建交互式和动态变换。通过使用`Updater`功能,可以实时更新对象的位置、大小和颜色。例如,创建一个随时间变化的函数图像:

from manim import *

class DynamicGraph(Scene):

    def construct(self):

        axes = Axes(x_range=[-3, 3], y_range=[-1, 1])

        graph = axes.plot(lambda x: np.sin(x), color=BLUE)

                self.play(Create(axes), Create(graph))

        graph.add_updater(lambda mob: mob.become(

            axes.plot(lambda x: np.sin(x + self.time), color=BLUE)

        ))

        self.wait(2)

        graph.remove_updater()

6.2.5 使用Manim的实际案例

Manim在实际应用中有着广泛的用途。从教学视频到研究演示,Manim的高质量动画能够帮助观众更直观地理解复杂的概念。例如,在微积分课程中,使用Manim演示导数和积分的几何意义;在物理课上,展示力学中的向量和运动轨迹。

总结

通过以上几个方面的介绍,我们可以看到Manim在数学和科学可视化中的巨大潜力。它不仅能够帮助教师和研究人员制作高质量的教学和演示材料,还能激发学生的学习兴趣,提升他们的理解能力。在接下来的章节中,我们将深入探讨如何更高效地使用Manim创建复杂的动画,以及一些高级技巧和优化方法。

标签:动画,play,Python,self,可视化,6.2,Manim
From: https://blog.csdn.net/wfbl123456/article/details/140907719

相关文章

  • 用Python打造精彩动画与视频,5.3 使用Manim创建简单动画
     5.3使用Manim创建简单动画在这一节中,我们将介绍如何使用Manim创建简单的动画。我们将从基本的场景构建开始,然后演示如何添加动画效果。通过这些示例,你将能够掌握使用Manim创建各种动画的基本技能。5.3.1创建一个简单的场景Manim中的基本单元是场景(Scene)。每个场景都是一......
  • 用Python打造精彩动画与视频, 5.2 安装和设置Manim
     5.2安装和设置ManimManim是一个强大的动画库,用于创建高质量的数学动画。它最初由3Blue1Brown的GrantSanderson开发,并被广泛用于教育和展示。以下是安装和设置Manim的详细步骤。5.2.1安装ManimManim需要Python环境和一些依赖库。在安装Manim之前,请确保已经......
  • 用Python打造精彩动画与视频,6.1 复杂动画场景的构建
     第六章:探索Manim的潜力6.1复杂动画场景的构建在本节中,我们将深入探索如何使用Manim构建复杂的动画场景。Manim是一款功能强大的Python库,广泛应用于数学可视化和教育视频制作。通过理解并掌握Manim的高级功能和技巧,你将能够创建出引人入胜且具有高可读性的动画场景。6.1.1......
  • 在 Python 中从 HTML 中抓取嵌入的 Google Sheet
    这对我来说相对棘手。我正在尝试提取来自python中的google工作表的嵌入表。这是链接我不拥有该工作表,但它是公开可用的。这是迄今为止我的代码,当我输出标题时,它向我显示“”。任何帮助将不胜感激。最终目标是将此表转换为pandasDF。多谢你们importlx......
  • 如何使用 Python 在 Google 或 DuckDuckGo 中快速获取答案
    我有一个人工智能助手项目,我希望它在互联网上搜索。我想使用适用于Python的GoogleQuickAnswerBox或DuckDuckGoInstantAnswerAPI。我看到了其他问题,但它们对我没有多大帮助。这是我想要实现的一个示例:问题:什么是长颈鹿?Google的答案:DuckDuckGo的......
  • 如何为可以在递归调用中重新分配的 python 函数制定类型提示?
    采取以下最小示例:S=TypeVar("S",bound=int|str)defmeth(a:S)->S:ifa=="5":returnstr(meth(int(a)))returna特别是,上面的方法可以采用字符串或整数。它总是返回与其输入相同类型的值,但它可以递归地调用自身,在这种情况下,S的值......
  • 使用 python 和 json 抓取该网站的正确 URL 是什么?
    试图抓取这个网站-->https://ucr.gov/enforcement/1000511它曾经使用下面的代码,然后停止了。无法获取响应中的json或任何内容。query="1000511"url='https://ucr.gov/api/enforcement/{}'.format(query)headers={'User-Agent':'Mozilla/5.0(......
  • Python逆向
    参考链接:https://www.bilibili.com/video/BV1JL4y1p7Tt/?spm_id_from=333.999.0.0https://bbs.kanxue.com/thread-282542.htmhttps://blog.csdn.net/weixin_35967330/article/details/114390031?spm=1001.2014.3001.5501https://0xd13a.github.io/ctfs/0ctf2017/py/前言:py......
  • Python中使用正则表达式
    摘要:正则表达式,又称为规则表达式,它不是某种编程语言所特有的,而是计算机科学的一个概念,通常被用来检索和替换某些规则的文本。一.正则表达式的语法①行定位符行定位符就是用来描述字符串的边界。"^"表示行的开始,"$"表示行的结束。^tm  #tmequalTomorrowMoon可以......
  • 如何在python中使用xarray打开grib2文件?
    将xarray导入为xr导入cfgrib导入生态码将pandas导入为pddata=xr.open_dataset(r"C:\Users\new\forecast_data.grib2",engine="cfgrib")这是我的代码。我只想使用xarray读取这个文件。错误是:无法识别的引擎cfgrib必须是以下之一:['netcdf4'、'scipy'、'......