首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

manim边学边做--Matrix

编程知识
2024年07月17日 16:17

在代数问题中,矩阵是必不可少的工具,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)

From:https://www.cnblogs.com/wang_yb/p/18307871
本文地址: http://www.shuzixingkong.net/article/106
0评论
提交 加载更多评论
其他文章 利用FastAPI和OpenAI-Whisper打造高效的语音转录服务
最近好久没有写博客了,浅浅记录下如何将OpenAI-Whisper做成Web服务吧🤣 介绍 在这篇指导性博客中,我们将探讨如何在Python中结合使用FastAPI和OpenAI-Whisper。OpenAI-Whisper是一个前沿的语音识别模型,而FastAPI是一个高性能的现代
利用FastAPI和OpenAI-Whisper打造高效的语音转录服务 利用FastAPI和OpenAI-Whisper打造高效的语音转录服务 利用FastAPI和OpenAI-Whisper打造高效的语音转录服务
iOS开发基础109-网络安全
在iOS开发中,保障应用的网络安全是一个非常重要的环节。以下是一些常见的网络安全措施及对应的示例代码: Swift版 1. 使用HTTPS 确保所有的网络请求使用HTTPS协议,以加密数据传输,防止中间人攻击。 示例代码: 在Info.plist中配置App Transport Security (
PixiJS源码分析系列:第二章 渲染在哪里开始?
第二章 渲染在哪里开始? 牢记,按第一章介绍的 npm start 启动本地调式环境才可进行调式 如果是 example 文件夹内的例子还需要 serve . 开启本地静态服务器 上一章介绍了 PixiJS 源码调式环境的安装,以及基本的调试方法。本章要研究一下它是如何渲染的 渲染大致步骤: 注册渲
PixiJS源码分析系列:第二章 渲染在哪里开始? PixiJS源码分析系列:第二章 渲染在哪里开始? PixiJS源码分析系列:第二章 渲染在哪里开始?
tensorflow学习率指数衰减ExponentialDecay的参数介绍与使用方法
本文介绍在tensorflow库中,用于动态调整神经网络的学习率的一种方法——指数衰减ExponentialDecay()策略的参数含义及其具体用法~
tensorflow学习率指数衰减ExponentialDecay的参数介绍与使用方法 tensorflow学习率指数衰减ExponentialDecay的参数介绍与使用方法 tensorflow学习率指数衰减ExponentialDecay的参数介绍与使用方法
咬文嚼图式的介绍二叉树、B树/B-树
网上的很多博客都是只有文字说明,比较抽象,所以笔者决定自己画一些图来解释二叉树,二叉搜索树,B树/B-树。
咬文嚼图式的介绍二叉树、B树/B-树 咬文嚼图式的介绍二叉树、B树/B-树 咬文嚼图式的介绍二叉树、B树/B-树
MViT:性能杠杠的多尺度ViT | ICCV 2021
论文提出了多尺度视觉Transformer模型MViT,将多尺度层级特征的基本概念与Transformer模型联系起来,在逐层扩展特征复杂度同时降低特征的分辨率。在视频识别和图像分类的任务中,MViT均优于单尺度的ViT。 来源:晓飞的算法工程笔记 公众号 论文: Multiscale Vision
MViT:性能杠杠的多尺度ViT | ICCV 2021 MViT:性能杠杠的多尺度ViT | ICCV 2021 MViT:性能杠杠的多尺度ViT | ICCV 2021
yearrecord——一个类似痕迹墙的React数据展示组件
介绍一下自己做的一个类似于力扣个人主页提交记录和GitHub主页贡献记录的React组件。 下图分别是力扣个人主页提交记录和GitHub个人主页的贡献记录,像这样类似痕迹墙的形式可以比较直观且高效得展示一段时间内得数据记录。 然而要从0实现这个功能还是有一些麻烦得,并且该功能可用的场景也比较多,于是
yearrecord——一个类似痕迹墙的React数据展示组件 yearrecord——一个类似痕迹墙的React数据展示组件 yearrecord——一个类似痕迹墙的React数据展示组件
Asp .Net Core 系列:基于 T4 模板生成代码
目录简介组成部分分类Visual Studio 中使用T4模板1.创建T4模板文件2. 编写T4模板3. 转换模板中心控制Manager根据 MySQL 数据库生成实体 简介 T4模板,即Text Template Transformation Toolkit,是微软官方在Visual Studio
Asp .Net Core 系列:基于 T4 模板生成代码