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

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

其实IntegerMatrixDecimalMatrixMobjectMatrix都是继承自Matrix的,
只要掌握了Matrix即可,其他几个不过是Matrix的特殊情况。

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)

3.2. 矩阵元素与括弧间隔

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

m = Matrix(data, bracket_h_buff=1.5)

m = Matrix(data, bracket_v_buff=1.5)

3.3. 括弧的类型

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

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

3.4. 矩阵背景

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

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

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)

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)

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]))

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))

4. 附件

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

manim边学边做--Matrix的更多相关文章

  1. 学EE做硬件找工作不如学CS做软件,为什么会这样?

    学EE做硬件找工作不如学CS做软件,为什么会这样? 电子工程(EE)就业最好的方向居然是转计算机,也许让有的人觉得很不公平,EE也是很重要的学科,我们学习也很努力,为什么就业会不如CS?也有的人好奇, ...

  2. 牛腩学Kotlin做Android应用

    牛腩学Kotlin做Android应用,蹭热度视频,边学边做, 01-kotlin插件安装及hello world 02-kotlin基础语法速览 哔哩哔哩观看地址:http://www.bilibi ...

  3. php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习)

    php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习) 一.总结 1.递归不优化的话,30层开外就有点吃力了 2.php因为定义变量的时候不用定义变量类型,所以数组里面的类型也是p ...

  4. html5-3 html5标签(热点地图如何实现)(边学边做)

    html5-3 html5标签(热点地图如何实现)(边学边做) 一.总结 一句话总结:热点地图用绝对定位实现. 1.自定义列表怎么弄? dl  自定义列表dt  自定义标题dd  自定义列表内容 2. ...

  5. 第一份开发工作,边学边做android

    我刚刚毕业,在培训学校学的Java web开发,虽然学的没有大学生那么丰富细致,没有他们理论基础扎实,但是这是我学习软件开发的唯一方式了. 从小学我学习就是倒数2.3等,所有人都认为我是个没法学习的孩 ...

  6. 边学边做,简单的 GraphQL 实例

    项目中有功能要调用 API,对方 API 用的是 GraphQL 实现,就简单学了下,感叹技术进步真快,Facebook 发明的这玩意儿咋这么牛逼,使前端开发人员变得主动起来,想要什么接口.返回什么结 ...

  7. LabVIEW Actor Framwork (2)________ 边学边做server&client

    回顾下初始需求: 现在要做一个类似聊天的demo,一个server端,若干个client端:首先是server启动,通过server可以打开若干个client端,然后每个client可以独立给serv ...

  8. 牛腩学ASP.NET CORE做博客(视频)

    牛腩学习ASP.NET CORE做的项目,边学边做. 目录: 01-dotnetcore网站部署到centos7系统上(时长 2:03:16) 02-前期准备及项目搭建 (时长:0:23:35) 03 ...

  9. 牛腩学用MUI做手机APP

    斗鱼直播间直播学习撸码,最终目标是用MUI做一个手机APP(暂定android平台,攒钱买IPHONE 7SE!!!),直播内容含整个软件APP的制作过程(含后台接口的制作,放到自己买的阿里云服务器, ...

  10. 技术的止境(客户价值第一,快速实现第二,边做边学,迅速成为牛人。紧贴客户的需求去做技术,立于不败之地。追求的目标:把一项产品去做好,用产品去养活自己和家人)good

    作为一个依靠技术来谋生的程序员,我最近一直在思考一个问题,有限的生命里,面对无限的技术更新,我要研究到什么程度才能算是完成我的成为技术大牛的目标呢?换而言之,那就是技术的止境在哪儿呢?深入的思考下去, ...

随机推荐

  1. 13-flask博客项目之restful api详解1-概念

    一 传统的开发模式 前后端分类概念 前端只需要独立编写客户端代码,后端也只需要独立编写服务端代码提供数据接口即可前端通过AJAX请求来访问后端的数据接口,将Model展示到View中即可 前后端开发者 ...

  2. Android OpenMAX(二)OMX Component实现基础

    Android OpenMAX IL提供的API位于 frameworks/native/headers/media_plugin/media/openmax ,目录下存放有预定义的类型.组件句柄定义 ...

  3. Android 13 - Media框架(4)- MediaPlayerService

    关注公众号免费阅读全文,进入音视频开发技术分享群! MediaPlayerService是android的多媒体框架的核心服务之一,该服务存储有android平台所支援的编解码器信息,管理所有通过Me ...

  4. .net core 5,6,7【多线程笔记】取消令牌(CancellationToken) CancellationTokenSource

    介绍 在使用C#异步的场景,多多少少会接触到CancellationTokenSource.它和取消异步任务相关的,CancellationToken就是它生产出来的. 演示 任务取消执行回调 var ...

  5. windows安装mysql8(5分钟)

    1.下载 MySQL https://dev.mysql.com/downloads/mysql/ 下载完成后,解压缩到你的目录里. 2.配置 MySQL 的配置文件 创建一个文件,名称为:my.in ...

  6. Java交换map的key和value值

    在Java中,我们都知道直接交换Map的key和value是不被允许的,因为Map的接口设计是基于key-value对的,其中key是唯一的,并且是不可变的(在HashMap等常见的实现中,虽然key ...

  7. NaN数值类型

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  8. linux系统下,搭建kafka环境(单机版)

    安装前准备: 安装JDK 安装zookeeper(如果使用kafka内置的zookeeper,可以忽略) 第一步.安装JDK kafka依赖JAVA环境,所以首先要安装jdk 第二步.安装zookee ...

  9. C#.NET Framework 使用BC库(BouncyCastle) RSA 私钥签名 公钥验签(验证签名) ver:20230704

    C#.NET Framework 使用BC库(BouncyCastle) RSA 私钥签名 公钥验签(验证签名) ver:20230704 环境说明: .NET Framework 4.6 的控制台程 ...

  10. CentOS7打开终端快捷键

    点击右上角的用户名,选择设置>>键盘>>快捷键,然后点+,名称自己写,命令是"/usr/bin/gnome-terminal",这个是不能改的,再点应用,这 ...