WebGL数学手记:矩阵基础

news2025/4/15 14:22:58

一、矩阵的定义

矩阵,数学术语。在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合。

1.英文发音(Matrix)

Matrix的发音类似于中文的[美吹克斯],知道它的发音。方便后期看教程时能听懂别人讲什么。

2.定义

由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵。记作:

这m×n 个数称为矩阵A的元素,简称为元,数aij位于矩阵A的第i行第j列,称为矩阵A的(i,j)元,以数 aij为(i,j)元的矩阵可记为(aij)或(aij)m × n,m×n矩阵A也记作Amn。

3.单位矩阵

二、矩阵运算

1.矩阵乘法

1.1前提条件

矩阵A的列数 = 矩阵B的行数
如果A是m×n矩阵,B必须是n×p矩阵,结果矩阵C将是m×p矩阵

1.2计算公式

对于矩阵C = A × B,其中A是m×n矩阵,B是n×p矩阵:

矩阵C的第i行第j列元素cij计算公式为:
cij = ai1*b1j + ai2*b2j + ... + ain*bnj = Σ(aik * bkj) (k=1到n)

 2.转置矩阵

将矩阵的行列互换得到的新矩阵称为转置矩阵,转置矩阵的行列式不变。

的行列互换之后得到的矩阵,称为的转置矩阵,记作_A{T} 

例如,

3.逆矩阵

对于一个n×n的方阵A,如果存在另一个n×n矩阵B,使得A × B = B × A = I

其中I是单位矩阵,那么:

  • 矩阵A称为可逆矩阵(或非奇异矩阵)

  • 矩阵B称为A的逆矩阵,记作A⁻¹

3.1存在意义 

类似于倒数的概念,在几何运算中常用于撤回的操作,比如有一个矩阵\begin{vmatrix} &0 & -1 \\ &1 & 0 \end{vmatrix} 这个矩阵的线性变换是将坐标系逆时针旋转90(下面有讲到旋转矩阵),这时候有一个向量(1,1)乘这个矩阵,相当于逆时针旋转90度得到(-1,1)

 \begin{vmatrix} &0 & -1 \\ &1 & 0 \end{vmatrix} *\begin{vmatrix} 1 \\ 1 \end{vmatrix}  = \begin{vmatrix} -1 \\ 1 \end{vmatrix}

在普通的实数运算中 一个变量x 乘 2 再乘 \frac{1}{2} 最终的结果是不变的,在向量的运算中也是这样

\begin{vmatrix} &0 & -1 \\ &1 & 0 \end{vmatrix}的逆矩阵是\begin{vmatrix} &0 & 1 \\ &-1 & 0 \end{vmatrix}

 \begin{vmatrix} &0 & 1 \\ &-1 & 0 \end{vmatrix} *\begin{vmatrix} -1 \\ 1 \end{vmatrix}  = \begin{vmatrix} 1 \\ 1 \end{vmatrix}

三、几何意义

❗直白来说就是有一个矩阵A,让向量发生线性转换

1.平移矩阵

假设有一个平面点(x,y),要做一个平移(x+tx,y+ty),把坐标(x,y)当成一个2x1的矩阵去找刚刚好的一个矩阵,因为2x2的矩阵不满足这样一个矩阵,就在3x3的矩阵中刚好找到这样的一个矩阵 

[x']   [ 1  0  tx ] [x]   [x + tx]
[y'] = [ 0  1  ty ] [y] = [y + ty]
[1 ]   [ 0  0  1  ] [1]   [  1   ]

所以下面这个矩阵通常就叫做平移矩阵 

[ 1  0  tx ]
[ 0  1  ty ]
[ 0  0  1  ]

同样的道理,如果在三维坐标中平移矩阵就是

[ 1  0  0  tx ]
[ 0  1  0  ty ]
[ 0  0  1  tz ]
[ 0  0  0  1  ]

 ❓为什么需要矩阵多加一行和一列

  1. 不加的话矩阵只能表示线性变换(旋转、缩放、剪切等)

  2. 平移是仿射变换,不是线性变换

  3. 通过增加一维(w分量),可以将平移表示为线性变换

2.缩放矩阵

[x']   [ sx  0] [x]   [x · sx]
[y'] = [ 0  sy] [y] = [y · sy]
//二维
[ sx 0 ]
[ 0  sy]
//三维
[ sx 0  0 ]
[ 0  sy 0 ]
[ 0  0  sz]

3.旋转矩阵 

3.1绕X轴旋转(θ角度)

透视视角
x轴视角
[x']   [ 1  0     0    ] [x]   [x]
[y'] = [ 0  cosθ -sinθ ] [y] = [cosθy -sinθz]
[z'] = [ 0  sinθ  cosθ ] [z] = [sinθy + cosθz]

[ 1  0     0   ]
[ 0  cosθ -sinθ]
[ 0  sinθ  cosθ]

如果上面的不好理解的话就假设θ再小一点儿

旋转后y值坐标为向量的模乘sin(α+θ)

由三角函数sin(α+β) = sinαcosβ+ cosαsinβ、 sin(α-β) = sinαcosβ - cosαsinβ可得

y' = ycosθ + xsinθ       【💡y= sinα; x = cosα】

因为上图是逆时针旋转的,也就是说 θ是负数,所以真实的情况是

y' = ycosθ - xsinθ

以此类推可得出下面绕y轴旋转和绕z轴旋转的旋转矩阵 

3.2绕Y轴旋转(θ角度)

[ cosθ  0  sinθ]
[ 0     1  0   ]
[ -sinθ 0  cosθ]

 3.3绕Z轴旋转(θ角度)

[ cosθ -sinθ  0]
[ sinθ  cosθ  0]
[ 0     0     1]

//二维的旋转矩阵
[ cosθ -sinθ]
[ sinθ  cosθ]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2333183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IO流——字符输入输出流:FileReader FileWriter

一、文件字符输入流:FileReader 作用:以内存为基准,可以把文件中的数据以字符的形式读入到内存中去 public class Test5 {public static void main(String[] args) {try (Reader fr new FileReader("E:\\IDEA\\JavaCodeAll\\file-io-t…

Graphpad Prism for Mac医学绘图

Graphpad Prism for Mac医学绘图 一、介绍 GraphPad Prism for Mac是一款功能强大、易于使用的科学和统计分析软件,适用于各种类型的数据处理和可视化需求。无论您是进行基础研究、临床试验还是学术写作,GraphPad Prism for Mac都能为您短时间内做出最…

使用人工智能大模型腾讯元宝,如何免费快速做高质量的新闻稿?

今天我们学习使用人工智能大模型腾讯元宝,如何免费快速做高质量的新闻稿? 手把手学习视频地址:https://edu.csdn.net/learn/40402/666431 第一步在腾讯元宝对话框中输入如何协助老师做新闻稿,通过提问,我们了解了老师…

破解root密码

一、背景: 必须是服务器的管理者,涉及重启服务器 二、破解过程: 1)重启系统,进入 救援模式 开机过程中,按e进入救援模式 在linux开头的该行,将此行的ro修改为rw 然后空格输入 rd.break 按 ctrl x 启动,…

嵌入式---烧录器

一、核心定义与本质功能 烧录器(Programmer)是一种将用户编写的程序代码(如.hex/.bin文件)写入单片机内部存储器(Flash/EEPROM/ROM)的专用工具,核心功能包括: 程序烧写&#xff1a…

swift菜鸟教程14(闭包)

一个朴实无华的目录 今日学习内容:1.Swift 闭包1.1闭包定义1.2闭包实例1.3闭包表达式1.3.1sorted 方法:据您提供的用于排序的闭包函数将已知类型数组中的值进行排序。1.3.2参数名称缩写:直接通过$0,$1,$2来顺序调用闭包的参数。1.3.3运算符函…

新手宝塔部署thinkphp一步到位

目录 一、下载对应配置 二、加载数据库 三、添加FTP​ 四、上传项目到宝塔​ 五、添加站点​ 六、配置伪静态 七、其他配置 开启监控 八、常见错误 一、打开宝塔页面,下载对应配置。 二、加载数据库 从本地导入数据库文件 三、添加FTP 四、上传项目到宝塔…

基于STM32 的实时FFT处理(Matlab+MDK5)

目录 一、 任务介绍二、基本原理三、软件仿真3.1 软件仿真基本原理3.2 软件仿真序列的软件模拟 四、模拟测试五、 附加题六、 源码 一、 任务介绍 1、在硬件平台上实现 FFT 算法; 2、模拟数据,通过 FFT 算法进行谱分析; 3、测定 PWM 输出方波…

RVOS-3.实现内存管理

3.内存管理 3.1 实验目的 对内存进一步的管理,实现动态的分配和释放。 实现 Page 级别的内存分配和释放。 在 page 分配的基础上实现更细颗粒度的,精确到字节为单位的内存管理。 (练习8.1) void *malloc(size_t size); void fr…

MySQL 约束(入门版)

目录 一、约束的基本概念 二、约束演示 三、外键约束 (一)介绍 (二)外键约束语法 (三)删除/更新行为 一、约束的基本概念 1、概念:约束是作用于表中字段上的规则,用于限制存储…

系统与网络安全------Windows系统安全(11)

资料整理于网络资料、书本资料、AI,仅供个人学习参考。 制作U启动盘 U启动程序 下载制作U启程序 Ventoy是一个制作可启动U盘的开源工具,只需要把ISO等类型的文件拷贝到U盘里面就可以启动了 同时支持x86LegacyBIOS、x86_64UEFI模式。 支持Windows、L…

蓝桥杯 小蓝的操作(一维差分)

问题描述 一个数组 aa 中共包含 nn 个数,问最少多少次操作,可以让 aa 数组所有数都变成 11 。 操作的内容是:每次操作可以任选一个区间使得区间内的所有数字减 11 。 数据保证一定有解。 输入格式 第一行一个整数 nn 表示有 nn 个整数。 …

阿里云服务迁移实战: 02-服务器迁移

ECS 迁移 最简单的方式是 ECS 过户,不过这里有一些限制,如果原账号是个人账号,那么目标账号无限制。如果原账号是企业账号,则指定过户给相同实名认证的企业账号。 具体操作步骤可以参考官方文档 ECS过户 进行操作。 本文重点介绍…

protobuf的应用

1.版本和引用 syntax "proto3"; // proto2 package tutorial; // package类似C命名空间 // 可以引用本地的,也可以引用include里面的 import "google/protobuf/timestamp.proto"; // 已经写好的proto文件是可以引用 我们版本选择pr…

C++字符串操作详解

引言 字符串处理是编程中最常见的任务之一,而在C中,我们有多种处理字符串的方式。本文将详细介绍C中的字符串操作,包括C风格字符串和C的string类。无论你是C新手还是想巩固基础的老手,这篇文章都能帮你梳理字符串处理的关键知识点…

原理图设计准备:页面栅格模板应用设置

一、页面大小的设置 (1)单页原理图页面设置 首先,选中需要更改页面尺寸的那一页原理图,鼠标右键,选择“Schmatic Page Properties”选项,进行页面大小设置。 (2)对整个原理图页面设…

100道C++ 高频经典面试题带解析答案

100道C 高频经典面试题带解析答案 C作为一种功能强大且广泛应用的编程语言,在技术面试中经常被考察。掌握高频经典面试题不仅能帮助求职者自信应对面试,还能深入理解C的核心概念。以下整理了100道高频经典C面试题,涵盖基础知识、数据结构、面…

vue实现中英文切换

第一步:安装插件vue-i18n,npm install vue-i18n 第二步:在src下新建locales文件夹,并在locales下新建index.js、EN.js、CN.js文件 第三步:在EN.js和CN.js文件下配置你想要的字段,例如: //CN.js…

day31-贪心__56. 合并区间__ 738.单调递增的数字__968.监控二叉树 (可跳过)

56. 合并区间 合并区间&#xff0c;这道题和昨天的452. 用最少数量的箭引爆气球和435. 无重叠区间 也是类似的思路&#xff0c;我们需要先对所有vector按照左端点或者右端点进行排序。本题按照左端点进行排序。之后&#xff0c;如果前一段的右端点<后一段的左端&#xff0c…

【antd + vue】Modal 对话框:修改弹窗标题样式、Modal.confirm自定义使用

一、标题样式 1、目标样式&#xff1a;修改弹窗标题样式 2、问题&#xff1a; 直接在对应css文件中修改样式不生效。 3、原因分析&#xff1a; 可能原因&#xff1a; 选择器权重不够&#xff0c;把在控制台找到的选择器直接复制下来&#xff0c;如果还不够就再加&#xff…