manim边学边做--Matrix

news/2024/11/15 0:47:55/文章来源:https://www.cnblogs.com/wang_yb/p/18307871

在代数问题中,矩阵是必不可少的工具,manim中提供了一套展示矩阵(Matrix)的模块,
专门用于在动画中显示矩阵格式的数据。
关于矩阵的类主要有4个:

  • Matrix:通用的矩阵
  • IntegerMatrix:元素是整数的矩阵
  • DecimalMatrix:元素包含小数的矩阵
  • MobjectMatrix:元素可以是图形的矩阵

其实IntegerMatrixDecimalMatrixMobjectMatrix都是继承自Matrix的,
只要掌握了Matrix即可,其他几个不过是Matrix的特殊情况。
image.png
Matrix系列在manim各个模块中的位置大致如上图中所示。

1. 主要参数

参数基本都是为了控制矩阵的显示样式。

参数名称 类型 说明
matrix str 一个二维数组,也就是矩阵的数值
v_buff float 矩阵元素的行间距
h_buff float 矩阵元素的列间距
bracket_h_buff float 矩阵括弧和元素之间的距离
bracket_v_buff float 矩阵括弧的高度
add_background_rectangles_to_entries bool 是否给矩阵元素加一个矩形背景
include_background_rectangle bool 是否给整个矩阵加一个矩形背景
element_to_mobject Mobject对象 用Mobject对象作为矩阵元素
element_to_mobject_config dict element_to_mobject的额外参数
element_alignment_corner list[float] 元素对齐的角
left_bracket str 左括弧的类型
right_bracket str 右括弧的类型
stretch_brackets bool 是否拉长括弧以适应矩阵元素
bracket_config dict 括弧的额外参数

总的来看,这些参数是对矩阵3个部分的设置,矩阵背景,矩阵元素和矩阵的括弧

2. 主要方法

Matrix提供了几个方法让我们可以动态的控制矩阵的展示效果。

名称 说明
add_background_to_entries 给矩阵添加背景
get_brackets 获取括弧对象
get_rows 获取矩阵行
get_columns 获取矩阵列
set_column_colors 设置矩阵 列的颜色
set_row_colors 设置矩阵 行的颜色
get_entries 获取矩阵元素
get_mob_matrix 获取矩阵的Mobject元素

3. 使用示例

下面演示如何使用上面主要参数和主要方法。

3.1. 矩阵元素行列间隔

参数v_buffh_buff可以调节矩阵元素的行间隔和列间隔。

m = Matrix(data, v_buff=2)m = Matrix(data, h_buff=2)

out.gif

3.2. 矩阵元素与括弧间隔

矩阵中的元素与括弧之间的设置使用参数bracket_h_buffbracket_v_buff

m = Matrix(data, bracket_h_buff=1.5)m = Matrix(data, bracket_v_buff=1.5)

out.gif

3.3. 括弧的类型

括弧的类型默认是中括号[],也可以调整为小括号和大括号,甚至左右使用不同的括号。

m = Matrix(data,left_bracket="(",right_bracket="]",
)m = Matrix(data,right_bracket=")",left_bracket="\{",
)m = Matrix(data,left_bracket="[",right_bracket="\}",
)

out.gif

3.4. 矩阵背景

矩阵和其中元素的背景是黑色的,如果动画的背景不是黑色的,
那么,我们可以通过参数include_background_rectangle保留整个矩阵的黑色背景,
或者使用参数add_background_rectangles_to_entries只保留矩阵元素的黑色背景。

Matrix(data,include_background_rectangle=True,
)Matrix(data,add_background_rectangles_to_entries=True,
)

out.gif

3.5. 定制矩阵元素

矩阵中的元素不只是数字,也可以用latex公式,甚至是图形

# 公式元素
data = [["y=x^2", 2], [3, "\\pi r^2"]]
m = Matrix(data)# 图形元素
a11 = Triangle(color=GREEN)
a12 = RegularPolygon(n=10, color=YELLOW)
a21 = Circle()
a22 = Star(7, outer_radius=2, density=2)
data = [[a11, a12], [a21, a22]]
m = MobjectMatrix(data)

out.gif

3.6. 行列操作

上面演示的是参数的使用,下面演示如何使用Matrix提供的方法,动态的改变Matrix的样式。
首先用get_rowsget_columns方法得到行列对象,再分别设置它们的颜色。

m = Matrix(data)
rows = m.get_rows()
rows[0].set_color(RED)
rows[1].set_color(GREEN)m = Matrix(data)
columns = m.get_columns()
columns[0].set_color(BLUE)
columns[1].set_color(YELLOW)

out.gif

3.7. 矩阵元素操作

除了行列,还有个方法get_entries可以更细致的操作矩阵的每个元素。

# 每个元素设置不同的颜色
m = Matrix(data)
entries = m.get_entries()
entries[0].set_color(RED)
entries[1].set_color(GREEN)
entries[2].set_color(BLUE)
entries[3].set_color(YELLOW)# 特定元素加上边框
m = Matrix(data)
entries = m.get_entries()
m.add(SurroundingRectangle(entries[0]))
m.add(SurroundingRectangle(entries[3]))

out.gif

3.8. 括弧操作

最后,还可以使用方法get_brackets获取矩阵的括弧对象,然后对其进行一些操作。

m = Matrix(data)
brackets = m.get_brackets()
brackets[0].set_color(RED)
brackets[1].set_color(GREEN)m = Matrix(data)
brackets = m.get_brackets()
self.play(Indicate(brackets))

out.gif

4. 附件

文中完整的代码放在网盘中了(matrix.py),
下载地址: 完整代码 (访问密码: 6872)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源大数据平台的部署(来自工作日志)

开源大数据平台部署 主要步骤 易错点这篇博客内容是我在安装开源hadoop 数据平台时候的工作日志,里面记录了部署平台的主要过程以及容易出错的步骤。一,主要组件包括:二,部署环境规划:3台机器系统:Centos 7.9java: 1.8.220 三,部署顺序: 离线处理组件(主线组件):…

Qt - QtWebEngineWidgets模块

1、QtWebEngineWidgets模块 #include <QtWebEngineWidgets>QT += webenginewidgets1.1 QWebEnginePage 示例代码: #include <QtWebEngineWidgets> #include <QWebEnginePage>//1、创建一个新的 QWebEnginePage 实例:page = new QWebEnginePage(this);//2、…

开源大数据平台的部署

开源大数据平台部署 主要步骤 易错点这篇博客内容是我在安装开源hadoop 数据平台时候的工作日志,里面记录了部署平台的主要过程以及容易出错的步骤。一,主要组件包括:二,部署环境规划:3台机器系统:Centos 7.9java: 1.8.220 三,部署顺序: 离线处理组件(主线组件):…

利用bwa将自己的数据与参考基因组比对与sam格式转换

1.bwa的下载与安装 https://www.jianshu.com/p/19f58a07e6f4 主要参考这篇帖子,如果之前的步骤都走通了的话,依赖什么的不用特别安装,报错了再补也可以安好了之后,进到他的路径,输./bwa,就可以确认bwa有没有安装好了,环境设置好以后可以在其他地方输入bwa,也可以叫他出来…

机器学习 - Machine Learning (III)

1 对抗学习 对抗学习的目的是增加鲁棒性。 对抗生成网络(GAN)包括生成器(Generator)和判别器(Discriminator)。如果目标是创建能够生成新内容的系统,那么生成器是希望得到并优化的模型,这是一个零和问题。1.1 GenB GenB是对抗网络用于VQA的产物,如图添加了偏置模型和目…

VS运行出现此网站无法提供安全连接

场景: SVN获取项目出现冲突后进行处理。 VS运行页面出现此网站无法提供安全连接尝试:清理VS缓存、重启电脑、重启VS、删除项目重新下载、禁用SSL3.0等等(以上都无效) 理解:开启另一个项目运行正常,说明IIS没有坏;删除项目重新下载运行排除项目配置问题(WebConfig等)。…

「代码随想录算法训练营」第十三天 | 二叉树 part3

110. 平衡二叉树题目链接:https://leetcode.cn/problems/balanced-binary-tree/ 题目难度:简单 文章讲解:https://programmercarl.com/0110.平衡二叉树.html 视频讲解:https://www.bilibili.com/video/BV1Ug411S7my 题目状态:通过思路: 采用递归的方式,遍历每个节点的左…

京东云智能编程助手与安全大模型双双获奖!

人工智能大模型浪潮迭起,为更好地推广人工智能应用案例,中国通信工业协会及中国通信工业协会人工智能专委会近日发布《CCIA2023年度人工智能优秀案例》,京东云申报的Joycoder智能编程助手入选“AI技术创新应用”,京东云与深圳市信息安全管理中心联合申报的“安全大模型保障…

京东上万程序员都AI用它!

7月3日,中国信息通信研究院在全球数字经济大会上发布“2024安全守卫者计划优秀案例”,基于京东云智能编码工具JoyCoder研发的“京东微调大模型驱动漏洞修复”入选优秀案例。 该漏洞修复助手,能够对大模型生成代码进行智能修复,为程序员开启代码漏洞修复的“自动驾驶”模式,…

【YashanDB知识库】oracle dblink varchar类型查询报错记录

问题单:Oracle DBLINK查询崖山DB报错 oracle服务器上ODBC安装 unixodbc安装:yum -y install unixODBC mysql 配置安装对应版本的odbc: myodbc-installer -d -a -n "MySQL8.0" -t "DRIVER=/home/oracle/tools/mysql-connector-odbc-8.0.20/lib/libmyodbc8w.so…

以电商、消费行业为例,详解火山引擎数智平台如何应用湖仓一体架构

湖仓一体架构是一种将数据湖和数据仓库的优势结合起来的新型数据架构。作为新一代企业级数据产品,火山引擎数智平台在旗下产品中对湖仓一体架构进行深入探索和应用,本篇将从数据湖内核、服务设计及应用场景等方面进行详细拆解。更多技术交流、求职机会,欢迎关注字节跳动数据…

负载均衡-Ribbon-微服务核心组件【分布式微服务笔记03】

负载均衡-Ribbon-微服务核心组件【分布式微服务笔记03】 负载均衡-Ribbon 基本介绍Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。 Ribbon 主要功能是提供客户端负载均衡算法和服务调用 Ribbon 客户端组件提供一系列完善的配置项如连接超时,重试…