王柳 发表于 2024-7-17 15:58:27

manim边学边做--Matrix

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

[*]Matrix:通用的矩阵
[*]IntegerMatrix:元素是整数的矩阵
[*]DecimalMatrix:元素包含小数的矩阵
[*]MobjectMatrix:元素可以是图形的矩阵
其实IntegerMatrix,DecimalMatrix,MobjectMatrix都是继承自Matrix的,
只要把握了Matrix即可,其他几个不过是Matrix的特殊情况。
https://img2024.cnblogs.com/blog/83005/202407/83005-20240717171245705-217571435.png
Matrix系列在manim各个模块中的位置大致如上图中所示。
1. 主要参数

参数基本都是为了控制矩阵的表现样式。
参数名称范例说明matrixstr一个二维数组,也就是矩阵的数值v_bufffloat矩阵元素的行间距h_bufffloat矩阵元素的列间距bracket_h_bufffloat矩阵括弧和元素之间的间隔bracket_v_bufffloat矩阵括弧的高度add_background_rectangles_to_entriesbool是否给矩阵元素加一个矩形背景include_background_rectanglebool是否给整个矩阵加一个矩形背景element_to_mobjectMobject对象用Mobject对象作为矩阵元素element_to_mobject_configdictelement_to_mobject的额外参数element_alignment_cornerlist元素对齐的角left_bracketstr左括弧的范例right_bracketstr右括弧的范例stretch_bracketsbool是否拉长括弧以适应矩阵元素bracket_configdict括弧的额外参数总的来看,这些参数是对矩阵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可以调节矩阵元素的行间隔和列间隔。
m = Matrix(data, v_buff=2)

m = Matrix(data, h_buff=2)https://img2024.cnblogs.com/blog/83005/202407/83005-20240717171245749-571273368.gif
3.2. 矩阵元素与括弧间隔

矩阵中的元素与括弧之间的设置利用参数bracket_h_buff和bracket_v_buff。
m = Matrix(data, bracket_h_buff=1.5)

m = Matrix(data, bracket_v_buff=1.5)https://img2024.cnblogs.com/blog/83005/202407/83005-20240717171245731-1034694199.gif
3.3. 括弧的范例

括弧的范例默认是中括号[],也可以调整为小括号和大括号,甚至左右利用差别的括号。
m = Matrix(
    data,
    left_bracket="(",
    right_bracket="]",
)

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

m = Matrix(
    data,
    left_bracket="[",
    right_bracket="\}",
)https://img2024.cnblogs.com/blog/83005/202407/83005-20240717171245734-1250833321.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,
)https://img2024.cnblogs.com/blog/83005/202407/83005-20240717171245781-605865786.gif
3.5. 定制矩阵元素

矩阵中的元素不但是数字,也可以用latex公式,甚至是图形。
# 公式元素
data = [["y=x^2", 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 = [, ]
m = MobjectMatrix(data)https://img2024.cnblogs.com/blog/83005/202407/83005-20240717171245757-1439483210.gif
3.6. 行列操作

上面演示的是参数的利用,下面演示怎样利用Matrix提供的方法,动态的改变Matrix的样式。
首先用get_rows和get_columns方法得到行列对象,再分别设置它们的颜色。
m = Matrix(data)
rows = m.get_rows()
rows.set_color(RED)
rows.set_color(GREEN)

m = Matrix(data)
columns = m.get_columns()
columns.set_color(BLUE)
columns.set_color(YELLOW)https://img2024.cnblogs.com/blog/83005/202407/83005-20240717171245935-282575122.gif
3.7. 矩阵元素操作

除了行列,还有个方法get_entries可以更细致的操作矩阵的每个元素。
# 每个元素设置不同的颜色
m = Matrix(data)
entries = m.get_entries()
entries.set_color(RED)
entries.set_color(GREEN)
entries.set_color(BLUE)
entries.set_color(YELLOW)

# 特定元素加上边框
m = Matrix(data)
entries = m.get_entries()
m.add(SurroundingRectangle(entries))
m.add(SurroundingRectangle(entries))https://img2024.cnblogs.com/blog/83005/202407/83005-20240717171245910-1868168562.gif
3.8. 括弧操作

最后,还可以利用方法get_brackets获取矩阵的括弧对象,然后对其举行一些操作。
m = Matrix(data)
brackets = m.get_brackets()
brackets.set_color(RED)
brackets.set_color(GREEN)

m = Matrix(data)
brackets = m.get_brackets()
self.play(Indicate(brackets))https://img2024.cnblogs.com/blog/83005/202407/83005-20240717171245934-1604887639.gif
4. 附件

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: manim边学边做--Matrix