IT评测·应用市场-qidao123.com
标题:
manim边学边做--线性变动的场景类
[打印本页]
作者:
曂沅仴駦
时间:
2025-3-10 10:31
标题:
manim边学边做--线性变动的场景类
在数学可视化领域,Manim的LinearTransformationScene类为线性代数教学提供了强大的工具。
这个专门设计的场景类继承自VectorScene,通过内置的变动动画和坐标系管理,能够直观展示线性变动的几何意义。
其核心功能包括:
自动管理坐标系和基向量的变动
支持矩阵变动、逆变动、转置变动等多种变动类型
自动保留变动痕迹
集成向量和单元正方形的动态展示
1. LinearTransformationScene概要
线性变动
是线性代数中的核心概念之一,它形貌了如何通过矩阵将一个向量空间映射到另一个向量空间。
在实际教学和研究中,明白线性变动的几何意义往往比单纯计算矩阵乘法更具挑战性。
LinearTransformationScene正是为了资助学习者更好地明白线性变动的几何本质而设计的。
它提供了许多参数和方法,用于定制和控制线性变动动画的行为。
1.1. 主要参数
LinearTransformationScene的主要参数有:
参数名称
类型
说明
include_background_planebool是否在场景中包含配景平面。配景平面是一个坐标网格,用于资助观察线性变动对整个空间的影响。include_foreground_planebool是否包含前景平面。前景平面通常用于突出显示某些特定的几何对象,如向量或图形。show_coordinatesbool是否显示配景平面的坐标轴。show_basis_vectorsbool是否显示基向量leave_ghost_vectorsbool是否在变动后保留基向量的原始位置。这对于观察变动的动态过程非常有用。i_hat_colorColor基向量i_hat的颜色(默认绿色)j_hat_colorColor基向量j_hat的颜色(默认赤色)
1.2. 主要方法
LinearTransformationScene的主要方法有:
名称
说明
apply_matrix应用一个矩阵变动到整个场景中。apply_inverse应用矩阵的逆变动。apply_nonlinear_transformation应用非线性变动。add_vector添加一个向量加入景中,并将其加入可移动向量列表。add_unit_square添加一个单元正方形加入景中。write_vector_coordinates显示向量的坐标矩阵。
2. 使用示例
为了更好地明白LinearTransformationScene的强大功能,下面通过示例展示其在不同场景下的应用。
2.1. 矩阵变动
在这个示例中,我们展示了如何通过矩阵[[2, 1], [0, 1]]对整个坐标系举行变动。
show_coordinates=True和leave_ghost_vectors=True参数使得变动过程更加直观。
# 在__init__函数中
# 设置LinearTransformationScene的参数
def __init__(self, **kwargs):
super().__init__(
show_coordinates=True,
leave_ghost_vectors=True,
**kwargs,
)
matrix = [[2, 1], [0, 1]]
self.apply_matrix(matrix)
复制代码
2.2. 向量的变动
此示例中,我们添加了一个黄色的向量[2, 1],并应用了一个矩阵变动。
通过观察向量在变动前后的变化,可以更直观地明白线性变动对向量的影响。
vector = Arrow(ORIGIN, [2, 1, 0], color=YELLOW)
self.add_vector(vector)
self.apply_matrix([[1, -1], [1, 1]])
复制代码
2.3. 单元正方形的变动
此示例中,我们添加了一个单元正方形,并对其应用了一个矩阵变动。
通过观察单元正方形在变动下的变化,可以直观地明白线性变动对面积和形状的影响。
self.add_unit_square(animate=True)
self.apply_matrix([[1, -1], [1, 1]])
复制代码
这个示例在ManimCE v0.19.0版本运行有点题目,源码中似乎少引用了两个类,
对源码文件(manim\scene\vector_space_scene.py)做如下修改。
# ... ...
# 这里加上 DrawBorderThenFill
from ..animation.creation import Create, Write, DrawBorderThenFill
# ... ...
# 这里加上 Group
from ..mobject.mobject import Mobject, Group
复制代码
3. 附件
文中的代码只是关键部分的截取,完整的代码共享在网盘中(linear.py),
下载地址:
完整代码
(访问密码: 6872)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4