manim边学边做--线性变换的场景类
在数学可视化领域,Manim的LinearTransformationScene类为线性代数教学提供了强大的工具。
这个专门设计的场景类继承自VectorScene,通过内置的变换动画和坐标系管理,能够直观展示线性变换的几何意义。
其核心功能包括:
- 自动管理坐标系和基向量的变换
- 支持矩阵变换、逆变换、转置变换等多种变换类型
- 自动保留变换痕迹
- 集成向量和单位正方形的动态展示
1. LinearTransformationScene概要
线性变换是线性代数中的核心概念之一,它描述了如何通过矩阵将一个向量空间映射到另一个向量空间。
在实际教学和研究中,理解线性变换的几何意义往往比单纯计算矩阵乘法更具挑战性。
LinearTransformationScene正是为了帮助学习者更好地理解线性变换的几何本质而设计的。
它提供了许多参数和方法,用于定制和控制线性变换动画的行为。
1.1. 主要参数
LinearTransformationScene的主要参数有:
| 参数名称 | 类型 | 说明 |
|---|---|---|
| include_background_plane | bool | 是否在场景中包含背景平面。背景平面是一个坐标网格,用于帮助观察线性变换对整个空间的影响。 |
| include_foreground_plane | bool | 是否包含前景平面。前景平面通常用于突出显示某些特定的几何对象,如向量或图形。 |
| show_coordinates | bool | 是否显示背景平面的坐标轴。 |
| show_basis_vectors | bool | 是否显示基向量 |
| leave_ghost_vectors | bool | 是否在变换后保留基向量的原始位置。这对于观察变换的动态过程非常有用。 |
| i_hat_color | Color | 基向量i_hat的颜色(默认绿色) |
| j_hat_color | Color | 基向量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)
manim边学边做--线性变换的场景类的更多相关文章
- 学EE做硬件找工作不如学CS做软件,为什么会这样?
学EE做硬件找工作不如学CS做软件,为什么会这样? 电子工程(EE)就业最好的方向居然是转计算机,也许让有的人觉得很不公平,EE也是很重要的学科,我们学习也很努力,为什么就业会不如CS?也有的人好奇, ...
- 牛腩学Kotlin做Android应用
牛腩学Kotlin做Android应用,蹭热度视频,边学边做, 01-kotlin插件安装及hello world 02-kotlin基础语法速览 哔哩哔哩观看地址:http://www.bilibi ...
- 使用jmeter做简单的场景设计
使用jmeter做简单的场景设计 Jmeter: Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试.我之所以选择它,最重要的一点就是----开源 个人 ...
- php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习)
php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习) 一.总结 1.递归不优化的话,30层开外就有点吃力了 2.php因为定义变量的时候不用定义变量类型,所以数组里面的类型也是p ...
- html5-3 html5标签(热点地图如何实现)(边学边做)
html5-3 html5标签(热点地图如何实现)(边学边做) 一.总结 一句话总结:热点地图用绝对定位实现. 1.自定义列表怎么弄? dl 自定义列表dt 自定义标题dd 自定义列表内容 2. ...
- 老猿学5G:融合计费场景的离线计费会话的Nchf_OfflineOnlyCharging_Release释放操作
☞ ░ 前往老猿Python博文目录 ░ 一.Nchf_OfflineOnlyCharging_Release消息交互流程 Nchf_OfflineOnlyCharging_Release是CHF提供 ...
- 老猿学5G:融合计费场景的离线计费会话的Nchf_OfflineOnlyCharging_Update 更新操作过程
☞ ░ 前往老猿Python博文目录 ░ 一.Nchf_OfflineOnlyCharging_Update消息交互过程 Nchf_OfflineOnlyCharging_Update消息是是5G融合 ...
- (NO.00004)iOS实现打砖块游戏(五):游戏场景类
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 创建游戏场景类头文件 在Xcode创建新GameScene类,继 ...
- [原创]cocos2d-x研习录-第二阶 概念类之场景类(CCScene)
场景类CCScene是Cocos2D-x在屏幕显示的内容,相当于游戏关卡或界面.CCDirector任何时候只能显示一个场景CCScene,游戏中可能存在若干场景,CCDirector通过场景切换达到 ...
- [置顶] 【玩转cocos2d-x之七】场景类CCScene和布景类CCLayer
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12708811 场景类CCScene和布景类CCLayer都是作为一个容器来使 ...
随机推荐
- MyBatisPlus中updateById与updateAllColumnById方法区别
实现 updateById方法在插入时,会根据实体类的每个属性进行非空判断,只有非空的属性所对应的字段才会出现在SQL语句中. updateAllColumnById方法在插入时,不管属性是否为空,属 ...
- git学习之git reset命令
Git版本恢复命令 reset命令有3种方式: git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和inde ...
- NJU ICS2024 PA 作业心得(三)
NJU ICS2024 PA 作业心得(三) 需要参考的内容 RISC-V ABIs Specification:是一组规则和规范,定义了在 RISC-V 架构上编写和链接程序的方式.它确保了不同语言 ...
- 龙哥量化:期货交易软件:文华、博易大师闪电手、快期,同花顺期货通,金字塔,MC,MT5,TB交易开拓者横向对比分析
如果您需要代写公式, 请联系我. 龙哥QQ:591438821 龙哥微信:Long622889 此文档做对比分析, 我有空后给详细分析
- Qt编写地图综合应用51-离线瓦片地图下载
一.前言 写这个离线地图下载器的初衷,就是为了方便自己的几个需要离线地图的程序,客户需求,既然地图程序已经可以支持离线地图,那如何获取到这些离线瓦片地图文件是个关键,而且这是这个功能的关键,拿到这些一 ...
- 即时通讯技术文集(第9期):Java NIO和Netty入门系列 [共19篇]
为了更好地分类阅读52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第9 期. [-1-] 少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别 [链接] http ...
- 基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v6.1版已发布
关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持UDP .TCP .WebSocket 三种协议,支持iOS.A ...
- 记录实现倒计时的方法,配合按钮的disabled
记录一个自己实现倒计时的方法,现在可以网上有很多插件,自己实现记录一下 // 倒计时 countDown() { this.disabled = true let number = 60 this.c ...
- [软件工具使用记录] windows离线ollama部署本地模型并配置continue实现离线代码补全
qwen2.5coder发布之后,觉得差不多可以实现离线模型辅助编程了,所以尝试在公司内网部署模型,配合vsocde插件continue实现代码提示.聊天功能. 目前使用qwen2.5coder的32 ...
- 【TCP协议】---协议详解
TCP协议 本文内容如下: 1)TCP协议概念 2)TCP头部结构和字段介绍 3)TCP流量控制 滑动窗口 4)TCP拥塞控制 ...