当前位置: 首页 > news >正文

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

相逢情便深,恨不相逢早 

第一眼看见上面这种类型的视频我就深深被它的简约清楚所折服,我觉得它完全符合我的审美,我也相信只要了解过制作这种视频的软件的人都会喜欢上它。运用这种风格比较有名的是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为例。

 

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

参数。

示例。

 方法。

 然后就一个个看完吧。

相关文章:

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

相逢情便深,恨不相逢早 第一眼看见上面这种类型的视频我就深深被它的简约清楚所折服,我觉得它完全符合我的审美,我也相信只要了解过制作这种视频的软件的人都会喜欢上它。运用这种风格比较有名的是b站里的一位up主名叫3Blue1Brown&#xff0…...

powershell脚本写一个托盘图标

1、准备ico格式图标 star_bethlehem_icon 文件名改为star.ico 2、安装VSCode 如何下载安装VSCode 扩展:PowerShell扩展 3、创建项目 1、运行PowerShell命令 mkdir trayicon_ps1;cd trayicon_ps1;New-Item trayicon.ps1;code .2、将star.ico放入trayicon_ps1文…...

前端Vue入门-day08-vant组件库

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 vant 组件库 安装 导入 全部导入 按需导入 浏览器配饰 Viewport 布局 Rem 布局适配 vant 组件库 …...

华为OD机考--【磁盘容量排序】

■ 题目描述 【磁盘容量排序】 磁盘的容量单位常用的有M,G,T这三个等级,它们之间的换算关系为1T 1024G,1G 1024M,现在给定n块磁盘的容量, 请对它们按从小到大的顺序进行稳定排序,例如给定5…...

实现弧形切角两种方式

1、css 的 radial-gradient <view style"padding:30px; background: #ccc;"><view class"navActive"></view> </view>.navActive{width: 200px;height: 40px;background-color: #fff;color: rgb(0,63,136);position: relative;bor…...

什么是强化学习?

&#x1f4dd;什么是强化学习&#xff1f; 1. &#x1f4dd;监督&#xff0c;非监督&#xff0c;强化2. &#x1f4dd;非 i.i.d3. &#x1f4dd;强化学习基本形式4. &#x1f4dd;马尔可夫过程 &#x1f31f; 强化学习&#xff08;Reinforcement Learning&#xff0c;RL&#x…...

如何在Linux系统上安装cpolar内网穿透

如何在Linux系统上安装cpolar内网穿透 文章目录 如何在Linux系统上安装cpolar内网穿透 cpolar作为一款体积小巧却功能强大的内网穿透软件&#xff0c;不仅能够在多种环境和应用场景中发挥巨大作用&#xff0c;还能适应多种操作系统&#xff0c;应用最为广泛的Windows、Mac OS系…...

分布式软件架构——内容分发网络

内容分发网络&#xff08;CDN&#xff0c;Content Distribution Network或Content Delivery Network&#xff09; 其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节&#xff0c;使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现…...

【HAL库】STM32CubeMX开发----STM32F407----LAN8720A----移植FreeModbus实现ModbusTCP

前言 本次实验以 STM32F407VET6 芯片为MCU&#xff0c;使用 25MHz 外部时钟源。 以太网PHY层芯片为 LAN8720A&#xff0c;移植FreeModbus实现ModbusTCP网口通信。 具体内容参考文章&#xff1a;【HAL库】STM32CubeMX开发----STM32F407----ETHLAN8720ALWIP----ping通 本次移植…...

11-矩阵(matrix)_方阵_对称阵_单位阵_对角阵

矩阵及其运算 [ a 11 ⋯ a 1 n ⋯ ⋯ ⋯ a m 1 ⋯ a m n ] \begin{bmatrix} a_{11} & \cdots & a_{1n} \\ \cdots & \cdots & \cdots \\ a_{m1} & \cdots & a_{mn} \\ \end{bmatrix} ​a11​⋯am1​​⋯⋯⋯​a1n​⋯amn​​ ​ 矩阵就是二维数组&…...

AWS多账户单点登录 IAM Identity Center(AWS SSO)

需求场景 多个aws账户&#xff0c;登陆麻烦且不安全&#xff0c;SSO单点功能并且外部身份提供者 — 如果您要管理外部身份提供者&#xff08;IdP&#xff09;&#xff08;例如 Okta 或 Active Directory&#xff09;中的用户。 官方文档&#xff1a;https://docs.aws.amazon.c…...

实验2-3-3 求奇数分之一序列前N项和 (15 分)

实验2-3-3 求奇数分之一序列前N项和 &#xff08;15 分&#xff09; 本题要求编写程序&#xff0c;计算序列 1 1/3 1/5 … 的前N项之和。 输入格式: 输入在一行中给出一个正整数N。 输出格式: 在一行中按照“sum S”的格式输出部分和的值S&#xff0c;精确到小数点后6位。…...

关于Android studio中的自动化测试脚本UiAutomator框架以及UiAutomatorViewer工具的使用——项目案例

加入依赖 implementation androidx.test.uiautomator:uiautomator:2.2.0创建CalcActivity页 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"...

OA办公自动化系统设计与实现(论文+源码)_kaic

摘要 随着信息化建设的日益深入&#xff0c;无论是政府还是企事业单位&#xff0c;部门之间的信息沟通与协调工作越来越重要。人们迫切需要一个能充分利用网络优势&#xff0c;并可以管理企业的各种重要信息的软件平台&#xff0c;利用该平台快速建立自己的信息网络和办公管理系…...

ansible——playbook

playbook playbook是剧本的意思 通过 task 调用 ansible 的模块将多个 play 组织在一 个playbook中运行。 playbook本身由以下各部分组成&#xff1a; Tasks: 任务&#xff0c;即调用模块完成的某操作 Variables: 变量 Templates: 模板 Handlers: 处理器&#xff0c;当某条件…...

DDS中间件设计

OpenDDS、FastDDS数据分发服务中间件设计 软件架构 应用层DDS层RTPS层传输层 软件层次 FastDDS整体架构如下&#xff0c;这里可以看到DDS和RTPS的关系。另外缺少一部分IDL&#xff08;统一描述语言&#xff09;&#xff0c;其应该是Pub、Sub的反序列化、序列化工具。 在RT…...

aws的EC2云服务器自己操作记录

亚马逊官网有免费试用1年的服务器 以下内容参考 1. 启动生成实例 1.1 创建实例时需要生成 使用的默认的 Debian 和 一个.pem后缀的秘钥 1.2 网上下一个Mobaxterm ,实例名是公有 IPv4 DNS 地址 ,使用SSH连接,登录名是admin 1.3 登录进去后 输入用户名 admin 后进去,sudo …...

基本ACL 和高级ACL配置

基本ACL 一、要求 1.全网可达 2.在1的基础上使PC1不能访问PC2 二、思路 1.通过写静态的方式使全网可达 2.配置acl主要是拒绝源IP的访问 3.在靠近目标的地方配置acl及使用 三、操作配置 1.IP及静态配置 [r1]int g0/0/0 [r1-GigabitEthernet0/0/0]ip add 123.0.0.1 24 [r…...

【uniapp 报错 Cannot read properties of null (reading ‘offsetWidth‘)解决办法】

该错误通常是由于访问了一个空值的offsetWidth而引起的。解决方法如下&#xff1a; 检查代码中是否有访问了空值的情况&#xff0c;比如变量未初始化或者传入了空值参数或者事件未定义。 在操作元素之前&#xff0c;确保元素已经被正确加载。可以使用如下方法&#xff1a; <…...

6.s081/6.1810(Fall 2022)Lab2: System calls

文章目录 前言其他篇章参考链接0. 前置准备1. System call tracing (moderate)1.1 简单分析1.2 Hint 11.3 Hint 21.4 Hint 31.5 Hint 41.6 Hint 51.7 测试 2. Sysinfo (moderate)2.1 声明2.2 实现2.2.1 框架2.2.2 用户态与内核态交互2.2.3 计算空闲内存的大小2.2.4 计算非UNUSE…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...