You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Manim的TransformMatchingTex实现矩阵行的逐行动画变换?

Manim实现LaTeX矩阵逐行变换动画

要实现从第一行开始逐行变换矩阵的动画,同时保证矩阵整体间距正确,核心思路是用完整的MathTex对象渲染每个阶段的矩阵,借助TransformMatchingTex自动匹配相同TeX元素,只对差异部分做动画。

完整代码示例

from manim import *

class MatrixRowTransform(Scene):
    def construct(self):
        # 定义每个阶段的完整矩阵LaTeX代码
        matrix_stages = [
            # 初始:仅第一行
            r"\begin{matrix} A & B & C \\ \end{matrix}",
            # 第二阶段:前两行
            r"\begin{matrix} A & B & C \\ A & B & D \\ \end{matrix}",
            # 第三阶段:前三行
            r"\begin{matrix} A & B & C \\ A & B & D \\ A & B & F \\ \end{matrix}",
            # 最终:完整四行矩阵
            r"\begin{matrix} A & B & C \\ A & B & D \\ A & B & F \\ A & KASHDAKSJHD & F \\ \end{matrix}"
        ]

        # 显示初始矩阵
        current_matrix = MathTex(matrix_stages[0])
        self.play(Write(current_matrix))
        self.wait(0.5)

        # 逐阶段变换矩阵
        for stage_tex in matrix_stages[1:]:
            next_matrix = MathTex(stage_tex)
            # 对齐后续矩阵与当前矩阵的位置
            next_matrix.move_to(current_matrix)
            # 执行匹配变换动画
            self.play(TransformMatchingTex(current_matrix, next_matrix))
            self.wait(0.5)
            current_matrix = next_matrix

关键说明

  • 完整矩阵渲染:每个阶段都用完整的\begin{matrix}...\end{matrix}生成MathTex对象,确保LaTeX原生的行、列间距完全正确,避免拆分单行导致的对齐偏差。
  • TransformMatchingTex机制:该动画会自动识别两个矩阵中相同的TeX片段(如前几行的A、B、C等),让这些元素保持位置不变,仅对新增行或修改的元素(如最后一行的B→KASHDAKSJHD)执行平滑变换。
  • 位置对齐:通过next_matrix.move_to(current_matrix)保证每个阶段的矩阵位置一致,避免整体偏移。

内容的提问来源于stack exchange,提问作者Uwe.Schneider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:22:59