Manim(一款强大的数学可视化动画引擎)学习历程

news2024/11/18 15:50:08

相逢情便深,恨不相逢早 

第一眼看见上面这种类型的视频我就深深被它的简约清楚所折服,我觉得它完全符合我的审美,我也相信只要了解过制作这种视频的软件的人都会喜欢上它。运用这种风格比较有名的是b站里的一位up主名叫3Blue1Brown,下图是他的主页,有兴趣的朋友可以自行去了解。

 这个软件的名字叫Manim。不过因为这款软件是基于python的,所以想要使用这款软件的人需要一定的编程能力,所以没有学过编程的朋友想要学习就需要更加努力。

进入它的官网,查阅技术文档(链接),点击示例,可以看到很多的例子。 入门一项技术,先学会一些示例还是非常重要的,我一个个看吧。

 示例Example Gallery

虽然文档是英文的,但我觉得读起来是可以接受的。网上也有对应的中文文档,也可以使用扩展,我习惯使用edge浏览器,中文插件我用的是mate translate。需要说的是,以下的分享都是我第一眼看见代码猜想它应该具有的意思,毕竟是边学边写,如果有错误我也不会修改,请阅读的人仔细辨别

1.标识ManimCELogo

 MathTex应该表示某种数学字符集,r应该就是表示一种解析,mathbb应该就是一种字体,就是形如logo中的那样,fill_color代表设置颜色,scale应该表示变形。

后面把M移动了一下,可以看出来对象创建的默认位置是框架的中心。

fill_opacity应该表示透明度。

不过这个origin代表什么?

 我画了一张图,发现origin代表的就是中心点的意思。

值得注意的是每个实例下提供了可以相关的参考,不过为了赶进度,就没有细看。

2.大注释BraceAnnotation

 

 

 值得注意的是上面大括号方向的设置,默认情况大括号水平向下,经过line.copy()就将方向调整为红色箭头方向,pi代表180度,也就是再顺时针旋转90度也就到了图所示的位置,不过这不就应该结束了吗?可能后面的get_unit_vector代表的是将初始得容器显现。

3.矢量VectorArrow 

不过buff我不理解,就查了一下,官网的解释为: 

  • buff (float) – The distance of the arrow from its start and end points.

翻译过来就是指长度,痛苦的是矢量长度为0但它的长度却不为0,这里暂且理解为一种默认值。

4.渐变GradientImageFromArray 

 可以发现,边框有内边距。

5.布尔运算BooleanOperations

以上运算分别表示交集、并集、异或集和差集。 

//交Intersection(ellipse1, ellipse2, color=GREEN, fill_opacity=0.5)
//并Union(ellipse1, ellipse2, color=ORANGE, fill_opacity=0.5)
//异或Exclusion(ellipse1, ellipse2, color=YELLOW, fill_opacity=0.5)
//差Difference(ellipse1, ellipse2, color=PINK, fill_opacity=0.5)

 注意,A-B表示从A中去除B的成分(-表示差运算)。

6.形状轨迹运动PointMovingOnShapes 

旋转是指点绕着某点旋转一周。 

7.周围移动MovingAround

 

 8.移动角MovingAngle

先看一下初始帧。 

 动画。

移动的那根线是放在了轨迹theta_tracker里,为这根线绑定一个更新器add_updater,在这个更新器里设置变化的角度,在后面动画调用的时候可以通过设置theta_tracker里的动画的值间接调用旋转方法 ,文字部分同理。

可以看出来add_updater和形如tracker是一套组合。

9.移动点MovingDots 

10. 组合点移动1MovingGroupToDestination 

 

 11.移动边框MovingFrameBox 

 对于latex的数学编辑语法,推荐一个网站学习,latex在线。

可以通过提示学习。 

12.旋转更新器RotationUpdater 

 

13.点轨迹PointWithTrace  

 

14.正弦函数SinAndCosFunctionPlot 

15.最小值ArgMinExample 

16.区域GraphAreaPlot

 

17.多边形轴线PolygonOnAxes

 

18.热图HeatDiagramPlot 

 19.跟随相机FollowingGraphCamera

 20.移动框架MovingZoomedSceneAround

 

 这部分大致看一下,了解了解。

21.固定框架对象测试FixedInFrameMObjectTest 

 

22.三维光源位置ThreeDLightSourcePosition 

 23.三维相机旋转ThreeDCameraRotation

24.三维相机错觉旋转ThreeDCameraIllusionRotation

 

 25.三维曲面图ThreeDSurfacePlot 

下载lnstallation 

我电脑系统是windows。

 manim依赖于python和ffmpeg,箭头所指的是下载地址。

ffmpeg下载具体可以参考:如何下载。

manim下载:

打开cmd,输入

pip install manim  -i https://mirrors.aliyun.com/pypi/simple/

测试一下。

新建manim.py文件,写入代码。

from manim import *

class PointMovingOnShapes(Scene):
    def construct(self):
        circle = Circle(radius=1, color=BLUE)
        dot = Dot()
        dot2 = dot.copy().shift(RIGHT)
        self.add(dot)

        line = Line([3, 0, 0], [5, 0, 0])
        self.add(line)

        self.play(GrowFromCenter(circle))
        self.play(Transform(dot, dot2))
        self.play(MoveAlongPath(dot, circle), run_time=2, rate_func=linear)
        self.play(Rotating(dot, about_point=[2, 0, 0]), run_time=1.5)
        self.wait()

 在manim.py文件所在的浏览框内输入cmd,回车,在cmd窗口中输入命令:

manim manim.py manim -p -ql

成功生成。

  

 参考手册Reference Manual

示例只是帮助我们快速入门,想要精通还是需要一步一个脚印。

这部分就不一一来说了,以animation为例。

 

 对于技术中的一个类可以看三点:参数、示例和方法。

参数。

示例。

 方法。

 然后就一个个看完吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/831233.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue卡片轮播图

我的项目是vue3的&#xff0c;用的swiper8 <template><div class"tab-all"><div class"tab-four"><swiper:loop"true":autoplay"{disableOnInteraction:false,delay:3000}":slides-per-view"3":center…

快速上手字符串函数

文章目录 前言一、求字符串的长度strlen函数strlen函数学习使用strlen函数模拟实现strlen函数模拟实现方法1&#xff1a;计数器法strlen函数模拟实现方法2&#xff1a;指针减指针法strlen函数模拟实现方法3&#xff1a;递归方法 二、字符串的拷贝&#xff0c;拼接和比较strcpy函…

某科技公司提前批测试岗

文章目录 题目 今天给大家带来一家提前批测试岗的真题&#xff0c;目前已经发offer 题目 1.自我介绍 2.登录页面测试用例设计 3.如何模拟多用户登录 可以使用Jmeter,loadRunner性能测试工具来模拟大量用户登录操作去观察一些参数变化 4.有使用过Jmeter,loadRunner做过性能压…

为什么 CSS 这么难学?

前言 CSS难其实就难在其内容的多变上&#xff0c;我觉得这些其实都可以通过大量的练习来解决&#xff0c;去记再多的东西不如写几个demo或者小项目来的收获大&#xff0c;当然练完项目所需要的总结是必需的&#xff01;下面我推荐整理了一些学习css相关的网站和项目&#xff0…

谁会拒绝一篇关于【python装饰器】的友情分享呢~

一、什么是装饰器 1. python装饰器是用于拓展原来函数功能的一种函数&#xff0c;目的是在不改变原函数的情况下&#xff0c;给函数增加功能。2. 装饰器是通过闭包实现&#xff0c;所以讲装饰器首先得知道什么是闭包。 二、什么是闭包 1、什么是闭包 1. 一个定义在函数内部的…

【Jmeter】配置不同业务请求比例,应对综合场景压测

目录 背景 Jmeter实现&#xff08;Random&#xff09; 在测试计划下&#xff0c;我们右键“添加”——配置原件——Random Variable 设置随机数的变量名称为num&#xff0c;设置取值范围0到100 右键线程组添加“逻辑控制器”——如果&#xff08;if&#xff09;控制器 当…

Win11系统优化

当你看到这篇文章&#xff0c;我相信你电脑卡的已经不行不行的了&#xff0c;执行完快抢救一下。 一、设置win11系统显示效果&#xff08;减轻系统运行压力&#xff09; &#xff08;1&#xff09;.点击桌面的&#x1f50d;按钮&#xff0c;然后在输入框内输入“查看高级系统设…

卷积相关点

从传统的神经网络到卷积神经网络 一.传统的神经网络&#xff08;全连接网络&#xff09; 参数太多&#xff0c;冗余度高&#xff0c;容易过拟合&#xff0c;难以训练 二.卷积神经网络 1.空间平移的不变性&#xff1a;当输入的图像在空间上发生平移时&#xff0c;CNN的相应不…

f12 CSS网页调试_css样式被划了黑线怎么办

我的问题是这样的 class加上去了,但是样式不生效,此时可能是样式被其他样式覆盖了, 解决方案就是 给颜色后边添加一个!important

Java—抽象类

目录 1.抽象类概念 2.抽象类语法 3.抽象类特性 4.抽象类作用 1.抽象类概念 在面向对象的概念中&#xff0c;所有的对象都是通过类来描绘的&#xff0c;但是反过来&#xff0c;并不是所有的类都是用来描绘对象的&#xff0c;如果 一个类中没有包含足够的信息来描绘一个具体的…

10年测试经验分享 —— 新手如何去做性能测试?

大家好我是彭于晏&#xff1a;一名北漂10年的测试&#xff0c;今天给大家带来关于性能测试的一些个人经验和测试新手如何快速上手性能测试。 1、性能测试是什么&#xff1f; 一句话概括&#xff1a;不断的通过不同场景的系统表现去探究系统设计与资源消耗之间的平衡。 具体一…

uC-OS2 V2.93 STM32L476 移植:系统启动篇

前言 前两篇已经 通过 STM32CubeMX 搭建了 NUCLEO-L476RG 的 STM32L476RG 的 裸机工程&#xff0c;下载了 uC-OS2 V2.93 的源码&#xff0c;并把 uC-OS2 的源文件加入 Keil MDK5 工程 本篇适配 uC-OS2 的 系统定时器&#xff08;Systick&#xff09;与 PendSV_Handler&#xf…

jwt+shiro认证

文章目录 jwt shiro 认证jwt 使用引入依赖编写 jwt 工具类测试 shiro jwt 认证项目文件路径&#xff1a;引入依赖shiro.ini重写 Realm认证服务接口认证服务接口实现类自定义 token测试 代码来自于小傅哥 《API网关》 项目 jwt shiro 认证 jwt 使用 引入依赖 <dependen…

一个SpringBoot 项目能处理多少请求?

这篇文章带大家盘一个读者遇到的面试题哈。 根据读者转述&#xff0c;面试官的原问题就是&#xff1a;一个 SpringBoot 项目能同时处理多少请求&#xff1f; 不知道你听到这个问题之后的第一反应是什么。 我大概知道他要问的是哪个方向&#xff0c;但是对于这种只有一句话的…

【C语言督学训练营 第二十一天】汇编语言零基础入门

文章目录 前言1.C语言源文件转汇编2.汇编指令格式3.汇编常用指令3.1 相关寄存器3.2 常用指令3.3 数据传送指令3.4 算术/逻辑运算指令3.5 控制流指令3.6 条件码 4.如何定义汇编中的变量5.选择循环汇编实战6.函数调用汇编实战7.C语言源文件转机器指令 前言 汇编语言是一种功能很强…

WebDAV之π-Disk派盘 + CX文件管理器

CX文件管理器是一款好用的文件管理工具。它的功能非常的丰富,它能满足用户对文件管理的需求,而且功能也是一目了然,可以帮助用户快速的对文件进行操作。这款软件还支持SFTP、WebDAV、FTP等下载访问方式。手机和电脑在同一局域网下,可以使用FTP或派盘从你的电脑直接访问手机…

selenium页面切换操作

selenuim页面切换 webdriver只能在一个页面里对元素进行识别和定位。如果有多个页面操作的时候&#xff0c;要先进行页面切换。 切换分两种 1 iframe内嵌页面切换&#xff08;框架集切换&#xff09; # 1 获取iframe标签 iframe driver.find_element_by_tag_name(iframe) …

echarts绘制甘特图

说在前面 项目上有需求&#xff0c;需要在大屏上展示进度甘特图&#xff0c;调研了DHTMLX和普加甘特图&#xff0c;效果都不是特别符合需求现状&#xff0c;查询了一些博客&#xff0c;决定使用echarts来绘制甘特图。 实现效果展示 实现思路分析 1、应该采用柱状图&#xff…

LeetCode404. 左叶子之和

404. 左叶子之和 文章目录 [404. 左叶子之和](https://leetcode.cn/problems/sum-of-left-leaves/)一、题目二、题解方法一&#xff1a;递归方法二&#xff1a;迭代 一、题目 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 示例 1&#xff1a; 输入: root [3,9…

个人信息保护合规审计如何做?

8月3日&#xff0c;为指导、规范个人信息保护合规审计活动&#xff0c;根据《中华人民共和国个人信息保护法》等法律法规&#xff0c;国家互联网信息办公室就《个人信息保护合规审计管理办法&#xff08;征求意见稿&#xff09;》&#xff08;简称《办法》&#xff09;及配套的…