python动画:场景的线性变换展示
一,主函数
LinearTransformationScene 是 Manim 中用于展示线性变换的场景类。它通过在一幅背景和前景平面上展示向量和变换,帮助理解线性代数中的概念。
LinearTransformationScene(include_background_plane=True,
include_foreground_plane=True, background_plane_kwargs=None,
foreground_plane_kwargs=None, show_coordinates=False,
show_basis_vectors=True, basis_vector_stroke_width=6,
i_hat_color=ManimColor('#83C167'), j_hat_color=ManimColor('#FC6255'),
leave_ghost_vectors=False, **kwargs)
以下是该函数及其参数的解释:
参数解释:
-
include_background_plane(bool): 是否包括背景平面。默认为 True,它显示背景平面用于帮助视觉化向量和变换。 -
include_foreground_plane(bool): 是否包括前景平面。默认为 True,前景平面可以用于显示变换后的向量。 -
background_plane_kwargs(dict): 背景平面的一些可选参数,例如颜色、大小等。默认是 None,表示使用默认设置。 -
foreground_plane_kwargs(dict): 前景平面的可选参数,可以设置不同的样式或属性。默认是 None。 -
show_coordinates(bool): 是否显示坐标轴。默认为 False。 -
show_basis_vectors(bool): 是否显示基向量(i_hat 和 j_hat)。默认为 True。 -
basis_vector_stroke_width(int): 基向量的线宽。默认为 6。 -
i_hat_color(ManimColor): i 方向基向量的颜色,默认为 '#83C167'。 -
j_hat_color(ManimColor): j 方向基向量的颜色,默认为 '#FC6255'。 -
leave_ghost_vectors(bool): 是否保留“幽灵”向量(即变换前后都可见的向量)。默认为 False。 -
**kwargs: 其他可选参数,可以传入给父类的构造函数。
示例代码:
from manim import * class LinearTransformationSceneExample01(LinearTransformationScene): def __init__(self, **kwargs): # 初始化父类 LinearTransformationScene,并设置一些属性 LinearTransformationScene.__init__( self, include_background_plane=True, # 包括背景平面 include_foreground_plane=True, # 包括前景平面 background_plane_kwargs=None, # 背景平面的参数(可选) foreground_plane_kwargs=None, # 前景平面的参数(可选) show_coordinates=False, # 是否显示坐标轴坐标 show_basis_vectors=True, # 是否显示基础向量 basis_vector_stroke_width=6, # 基础向量的线宽 i_hat_color=ManimColor('#83C167'), # i 向量的颜色 j_hat_color=ManimColor('#FC6255'), # j 向量的颜色 leave_ghost_vectors=False, # 是否保留变换之后的向量影像 **kwargs # 其他参数 ) def construct(self): # 定义一个线性变换矩阵 matrix = [[1, 1], [0, 1]] # 创建坐标轴并添加坐标 ax = Axes().add_coordinates() self.add(ax) # 将坐标轴添加到场景中 # 应用线性变换矩阵 self.apply_matrix(matrix,run_time=1)

二,函数方法
1.apply_matrix(matrix, **kwargs)方法
apply_matrix(matrix, **kwargs) 是 Manim 中 LinearTransformationScene 类的一个方法,用于将给定的矩阵应用于场景中的对象(如几何形状、文本或矢量等)。这个方法是进行动画制作时实现线性变换的重要工具,能够直观地演示线性代数中的矩阵变换如何影响图形。
方法参数
-
matrix: 这是一个二维列表或者 NumPy 数组,代表一个线性变换矩阵。该矩阵的维度应当与操作的对象的维度相匹配。例如,对于二维对象(如平面内的图形),你需要提供一个 2x2 的矩阵。矩阵中的元素决定了对象的缩放、旋转、平移等变换效果。
-
kwargs: 这个参数允许传递其他关键字参数,通常用于设置动画的相关属性,例如持续时间(
run_time)、动画的延迟(lag_ratio),以及是否在动画结束后保留变换结果的标志(path_arc)等。通过这些可选参数,可以更加灵活地控制动画的表现和视觉效果。
方法功能
apply_matrix() 的主要功能是将指定的矩阵应用于场景中的对象,具体流程如下:
-
计算变换: 根据传入的矩阵,计算出对象在变换后的位置和形状。这一过程涉及到矩阵乘法,将对象的每个顶点坐标与矩阵相乘,从而得到新的坐标。
-
更新对象: 将计算后的新坐标应用到对象上。对于大多数对象而言,这意味着它们的顶点、边界和外观会根据新的坐标重新绘制。
-
动画表现: 可以通过提供的
kwargs设置动画属性,例如变换的时间和延迟,使变换更加动态和平滑。这样可以增强观众的视觉体验,使线性变换不仅仅是数学计算,而是通过动画直观呈现。
小结
总的来说,apply_matrix(matrix, **kwargs) 方法在 Manim 中是实现线性变换的核心工具,通过对矩阵的灵活运用,用户可以创建丰富多彩的数学可视化效果,将抽象的数学概念变得生动有趣。无论是学术研究、教学演示还是创意动画,这个方法都提供了强大的支持。
2.apply_transposed_matrix(transposed_matrix, **kwargs)方法
apply_transposed_matrix(transposed_matrix, **kwargs) 是 Manim 中 LinearTransformationScene 类的一个方法,用于将给定的转置矩阵应用于场景中的对象。这一方法在进行线性变换演示时非常重要,特别是在涉及到坐标变换、数据变换以及几何变换时。
方法参数
-
transposed_matrix: 这是一个二维列表或 NumPy 数组,表示需要应用的转置矩阵。转置矩阵是通过交换矩阵的行和列得到的,彼此之间的元素位置被互换。对于二维覆盖面的操作,转置矩阵通常是一个 2x2 的矩阵。由于线性变换本质上是通过矩阵运算来实现的,在需要展示对象如何在新的坐标系中变换时,转置矩阵尤其有用。
-
kwargs: 该参数允许您传递其他关键字参数,通常用于控制动画的外观和行为。这包括动画的持续时间(如
run_time)、延迟(如lag_ratio)、路径弧度(path_arc)等可选设置。通过这些参数,用户能够更好地控制动画效果,以确保变换的动态表现既美观又符合预期。
方法功能
apply_transposed_matrix() 的主要功能在于将转置矩阵应用于场景中的对象,与 apply_matrix() 类似,但它使用的是变换的转置矩阵。这一过程如下:
-
计算变换: 依据传入的转置矩阵,计算出对象在变换后的位置。通过与转置矩阵进行矩阵乘法,可以获取对象新位置的坐标。这对于理解数据或几何体在新维度上的表现尤为重要。
-
更新对象: 接下来,将计算得出的新坐标应用于对象上。这一步通常涉及到重新定义对象的顶点,因此对象的形状和位置会发生变化。
-
动画表现: 使用提供的
kwargs,可以设置动画的持续时间和视觉效果。例如,您可以调整动画的速度,使其在视觉上更加流畅,或者增加延迟以强调变换过程。
小结
总的来说,apply_transposed_matrix(transposed_matrix, **kwargs) 方法为用户提供了一种简便的方式,将转置矩阵应用于 Manim 中的对象,展示线性变换的影响。这种能力提高了数学可视化的表达力,使得抽象的数学概念能够通过动态展示变得更加直观,适用于数学教育、数据科学展示和各种创意动画制作。通过使用该方法,用户可以方便地探索和表达各种数学特性与变换关系。
相关文章:
python动画:场景的线性变换展示
一,主函数 LinearTransformationScene 是 Manim 中用于展示线性变换的场景类。它通过在一幅背景和前景平面上展示向量和变换,帮助理解线性代数中的概念。 LinearTransformationScene(include_background_planeTrue, include_foreground_planeTrue, ba…...
HBase体系架构与环境搭建
这里写目录标题 一、常见的NoSQL数据库二、HBase的体系架构和表结构三、搭建HBasa环境1.本地模式2.伪分布模式全分布模式HA模式 一、常见的NoSQL数据库 NoSQL数据库的说明与定义 NoSQL是一种不同于关系数据库的数据库管理系统设计方式,是对非关系型数据库的统称。它…...
海思SD3403/SS928V100开发(16)Tsensor驱动开发
1. 前言 由于需要检测SD3403芯片内部实时温度,需要开发Tsensor传感器驱动和应用 查看手册发现SD3403内部有三个Tsensor传感器 可以参考之前我写的35系列平台Tsensor驱动开发记录 海思35系列平台Tsensor驱动开发(1)驱动编写_t sensor-CSDN博客 海思35系列平台Tsensor驱动…...
JVM类加载机制—JVM类加载过程
一、概述 代码编译后,就会生成JVM(Java虚拟机)能够识别的二进制字节流文件(*.class)。而JVM把Class文件中的类描述数据从文件加载到内存,并对数据进行校验、转换解析、初始化,使这些数据最终成…...
可变参数模板与包装器
抱歉:铁汁们,最近在做兼职,积累社会经验,多有拖欠,请多多包涵(抱拳) 引子:接上回我们讲了C11的几种新增,今天就来接着讲C11中比较有用的二个东西可变参数模板与包装器。…...
工业控制常用“对象“数据类型汇总(数据结构篇)
合理巧妙的数据结构会大大简化项目的编程工作量,所以任何项目前期第一步应该是设计巧妙的数据结构、封装对象属性。这样会使我们的编程快捷和高效。这篇博客作为数据类型汇总,会不间断更新。 1、普通电机轴对象 2、普通电机轴对象(详细结构变量) TYPE "udtMotorAxis&q…...
优雅处理枚举前端丢失大Long精度问题
1. 枚举-json处理(前端 <> 后端 <> 数据库) 前端传递 枚举code 后端响应 枚举code 表里存储 枚举code 内存处理 枚举对象 Getter AllArgsConstructor JsonFormat(shape JsonFormat.Shape.OBJECT) public enum SexEnum {MALE(0, "男&…...
【c/c++】 学习ector 容器笔记
c/c 学习ector 容器笔记 int 型的 vector 容器应该使用什么类型的索引? 对于 int 型的 vector 容器,应该使用 size_t 类型的索引。size_t 是一个无符号整数类型,它在标准库中广泛用于表示大小和索引。它足够大,可以表示任何标准…...
DN专业3D图形制作软件win/mac软件安装下载(附下载链接)
目录 一、软件概述 1.1 Adobe DN简介 1.2 Windows/Mac系统要求 Windows系统: Mac系统: 二、安装步骤 2.1 下载与解压 2.2 安装程序 2.3 启动软件 三、使用教程 3.1 界面介绍 3.2 创建和编辑3D内容 3.3 合成与渲染 四、高级技巧与注意事项 …...
VSCode搭建Hzero(SpringCloud架构)后端开发调试环境
正常情况下我们使用IDEA开发Hzero,但是有的公司是不允许破解或者使用IDEA的,此时可以使用eclipse来替代也是可以的,最近尝试使用VSCode来开发调试发现了一些问题其中最大的问题是Vscdoe在绝大多数情况下是不能直接运行Hzero,使用插…...
【C++】OJ习题(初阶)
🚀个人主页:奋斗的小羊 🚀所属专栏:C 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 💥1、字符串💥1.1 字符串相加💥1.2 验证回文字符串💥1.3 反转…...
6.4K+ Star!一个强大的本地知识库问答系统,支持多格式文件和跨语言检索,为企业提供高效、安全的数据洞察……
https://github.com/netease-youdao/QAnything 【阅读原文】跳转Github项目 转自AIGC创想者 项目简介 QAnything 是一个基于本地知识库的问答系统,它能够理解和回答基于任何类型文件的问题。 QAnything支持的文件格式非常广泛,包括PDF、Word、PPT、XL…...
mvn编译的时候出现Perhaps you are running on a JRE rather than a JDK 解决方法
目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 mvn编译的时候出现如下问题: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project yudao...
React原理之Fiber详解
前置文章: React原理之 React 整体架构解读React原理之整体渲染流程 -----读懂这一篇需要对 React 整体架构和渲染流程有大致的概念 😊----- 在React原理之 React 整体架构解读中,简单介绍了 Fiber 架构,也了解了 Fiber 节点的…...
远离“优越感”陷阱,拥抱美好人生
在人生的漫长旅程中,我们不断地与他人相遇、相知、相交,在各种关系中寻找温暖、支持与成长。然而,并非所有的关系都如我们所愿,有些关系甚至可能成为我们前进道路上的阻碍。正如我们所知,唯利是图者不可交,但有一种关系比索要金钱更值得警惕,那就是找你索取满足感的关系…...
Redis的线程模型
Redis作为一种基于内存的高性能键值对数据库,其线程模型和IO模型是实现高性能的关键因素。以下将详细探讨Redis的线程与IO模型,内容不少于2000字。 一、Redis的线程模型 Redis的线程模型是理解其高性能的重要基础。在Redis的发展过程中,其线…...
ubuntu24.04安装nginx1.24
ubuntu安装nginx 更新包索引 sudo apt update安装nginx sudo apt install nginx确认安装成功并检查Nginx版本 nginx -v启动Nginx服务 sudo systemctl start nginx设置Nginx开机自启 sudo systemctl enable nginx在浏览器中访问 http://<your_server_IP> 来确认Nginx…...
一款好看的WordPress REST API 主题
介绍: 主题特色: 使用Nuxtjs WordPress Rest Api 实现前后端分离,可完成多端部署; 主题支持自动切换黑夜模式。 使用说明: service 目录为wordpress主题文件,需要拷贝到wordpress主题目录下࿰…...
《5G 与区块链融合:智能城市服务质量的飞跃》
在科技飞速发展的时代,5G 技术的普及正以前所未有的速度改变着我们的生活,而区块链技术的兴起也为各领域带来了创新的解决方案。当这两种前沿技术相互结合,将为智能城市的发展注入强大动力,显著提升服务质量,开创更加便…...
前后端分离开发:用 Apifox 高效管理 API
目录 1.前后台分离开发介绍 2.API 2.1 APIfox介绍 2.2 接口文档管理 1.前后台分离开发介绍 前端开发有2种方式:「前后台混合开发」和「前后台分离开发」。 前后台混合开发,顾名思义就是前台后台代码混在一起开发,如下图所示:…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
