码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • manim边学边做--Matrix


    合集 - manim(33)
    1.【manim动画教程】-- 安装2023-03-282.【manim动画教程】-- 基本图形2023-03-293.【manim动画教程】-- 坐标系2023-04-104.【manim动画教程】-- 文本样式2023-04-075.【manim动画教程】-- 文字和公式2023-04-046.【manim动画教程】-- 图形样式2023-03-317.【manim动画教程】--相机2023-04-198.【manim动画教程】--高级动画效果2023-04-149.【manim动画教程】--常用动画效果2023-04-1210.【manim】之滚动字幕2022-12-0611.【manim】之圆规动画2023-01-3112.【manim】之目录动画2023-02-2813.manim边学边做--DecimalNumber06-1214.manim边学边做--Integer06-1315.manim边学边做--Variable06-1416.manim边学边做--Title06-2017.manim边学边做--BulletedList06-2118.manim边学边做--SingleStringMathTex06-2319.manim边学边做--MathTex06-2820.manim边学边做--Tex07-0121.manim边学边做--Text07-0422.manim边学边做--Paragraph07-0923.manim边学边做--MarkupText07-1024.manim边学边做--Code07-16
    25.manim边学边做--Matrix07-17
    26.manim边学边做--Table07-2527.manim边学边做--点08-0928.manim边学边做--圆形类08-1529.manim边学边做--圆弧形08-2030.manim边学边做--直线类08-2231.manim边学边做--带箭头直线09-0232.manim边学边做--曲线类09-0433.manim边学边做--角度标记09-07
    收起

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

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

    其实IntegerMatrix,DecimalMatrix,MobjectMatrix都是继承自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_buff和h_buff可以调节矩阵元素的行间隔和列间隔。

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

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

    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_rows和get_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)

  • 相关阅读:
    【论文笔记之 YIN】YIN, a fundamental frequency estimator for speech and music
    线段与线段的关系
    [ vulhub漏洞复现篇 ] Django debug page XSS漏洞 CVE-2017-12794
    算法编程技巧
    某CCC-BASE的逆向
    Golang Copy()方法学习
    04747 java程序设计笔记 --多线程
    Redis-集群下的锁还安全么?
    如何使用 pyqt 实现 Groove 音乐播放器
    腾讯云Linux轻量应用服务器一键部署WordPress个人博客教程
  • 原文地址:https://www.cnblogs.com/wang_yb/p/18307871
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号