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种方式:「前后台混合开发」和「前后台分离开发」。 前后台混合开发,顾名思义就是前台后台代码混在一起开发,如下图所示:…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...
