翼度科技»论坛 编程开发 python 查看内容

manim边学边做--Matrix

8

主题

8

帖子

24

积分

新手上路

Rank: 1

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


  • Matrix:通用的矩阵
  • IntegerMatrix:元素是整数的矩阵
  • DecimalMatrix:元素包含小数的矩阵
  • MobjectMatrix:元素可以是图形的矩阵
其实IntegerMatrix,DecimalMatrix,MobjectMatrix都是继承自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_buff和h_buff可以调节矩阵元素的行间隔和列间隔。
  1. m = Matrix(data, v_buff=2)
  2. m = Matrix(data, h_buff=2)
复制代码

3.2. 矩阵元素与括弧间隔

矩阵中的元素与括弧之间的设置使用参数bracket_h_buff和bracket_v_buff。
  1. m = Matrix(data, bracket_h_buff=1.5)
  2. m = Matrix(data, bracket_v_buff=1.5)
复制代码

3.3. 括弧的类型

括弧的类型默认是中括号[],也可以调整为小括号和大括号,甚至左右使用不同的括号。
  1. m = Matrix(
  2.     data,
  3.     left_bracket="(",
  4.     right_bracket="]",
  5. )
  6. m = Matrix(
  7.     data,
  8.     right_bracket=")",
  9.     left_bracket="\{",
  10. )
  11. m = Matrix(
  12.     data,
  13.     left_bracket="[",
  14.     right_bracket="\}",
  15. )
复制代码

3.4. 矩阵背景

矩阵和其中元素的背景是黑色的,如果动画的背景不是黑色的,
那么,我们可以通过参数include_background_rectangle保留整个矩阵的黑色背景,
或者使用参数add_background_rectangles_to_entries只保留矩阵元素的黑色背景。
  1. Matrix(
  2.     data,
  3.     include_background_rectangle=True,
  4. )
  5. Matrix(
  6.     data,
  7.     add_background_rectangles_to_entries=True,
  8. )
复制代码

3.5. 定制矩阵元素

矩阵中的元素不只是数字,也可以用latex公式,甚至是图形
  1. # 公式元素
  2. data = [["y=x^2", 2], [3, "\\pi r^2"]]
  3. m = Matrix(data)
  4. # 图形元素
  5. a11 = Triangle(color=GREEN)
  6. a12 = RegularPolygon(n=10, color=YELLOW)
  7. a21 = Circle()
  8. a22 = Star(7, outer_radius=2, density=2)
  9. data = [[a11, a12], [a21, a22]]
  10. m = MobjectMatrix(data)
复制代码

3.6. 行列操作

上面演示的是参数的使用,下面演示如何使用Matrix提供的方法,动态的改变Matrix的样式。
首先用get_rows和get_columns方法得到行列对象,再分别设置它们的颜色。
  1. m = Matrix(data)
  2. rows = m.get_rows()
  3. rows[0].set_color(RED)
  4. rows[1].set_color(GREEN)
  5. m = Matrix(data)
  6. columns = m.get_columns()
  7. columns[0].set_color(BLUE)
  8. columns[1].set_color(YELLOW)
复制代码

3.7. 矩阵元素操作

除了行列,还有个方法get_entries可以更细致的操作矩阵的每个元素。
  1. # 每个元素设置不同的颜色
  2. m = Matrix(data)
  3. entries = m.get_entries()
  4. entries[0].set_color(RED)
  5. entries[1].set_color(GREEN)
  6. entries[2].set_color(BLUE)
  7. entries[3].set_color(YELLOW)
  8. # 特定元素加上边框
  9. m = Matrix(data)
  10. entries = m.get_entries()
  11. m.add(SurroundingRectangle(entries[0]))
  12. m.add(SurroundingRectangle(entries[3]))
复制代码

3.8. 括弧操作

最后,还可以使用方法get_brackets获取矩阵的括弧对象,然后对其进行一些操作。
  1. m = Matrix(data)
  2. brackets = m.get_brackets()
  3. brackets[0].set_color(RED)
  4. brackets[1].set_color(GREEN)
  5. m = Matrix(data)
  6. brackets = m.get_brackets()
  7. self.play(Indicate(brackets))
复制代码

4. 附件

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

来源:https://www.cnblogs.com/wang_yb/p/18307871
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具