计算机图形学之矩阵变换的深度理解

article/2025/9/15 0:38:37

对于图形学来说,矩阵计算不可避免,既直观又方便。而如果线性代数学的不透彻的话,那么基本上是做不到应用的,这里推荐看一下3Blue1Brown的线性代数的视频,可以对矩阵计算有深刻的认识。

之后就是应用阶段,我们这个阶段就是使用我们的矩阵来完成空间中点或向量的各种变换。

重点是理解矩阵的含义:矩阵其实是一种坐标系的转换

  1. 理解矩阵的几何功能:
    1. 矩阵是一种线性变换(线段变换后仍是线段,并且原点不会改变)
    2. 矩阵是一种映射,映射可以是一对一,也可以是一对多
    3. 矩阵是一种空间变换,每一种矩阵都是有本身的几何意义,而不是单纯的数字组合
  2. 理解矩阵的形式含义(矩阵在左,向量在右):
    1. 方阵满秩,是进行当前空间的坐标变换,不会进行维度的升高和降低
    2. M×N(M>N),这种矩阵是一种升维矩阵,几何意义如3×2,就如同把一个平面进行一个方向维度的延展(当秩为2时),变成一个三维的空间,当然之前空间中的点(x,y)在提升维度的过程中在三维空间中还是一个平面分布,只是多了一个值全相等的第三个维度的值而已
    3. M×N(M<N),这是一种降维矩阵,几何意义如2×3(当秩为2时),是把三维的向量进行一个维度的压缩,挤压成一个平面,这个时候当然会出现很多个点压缩到一个二维坐标的情况
    4. 方阵不满秩,其实和之前是一样的,不满秩就说明这个维度是虚的,没什么用,如果秩是一的话就是挤压成一条线。

一.平移矩阵

当我们理解了之前的种种逻辑之后,我们终于进入到了我们的就事论事环节,首先就是我们的平移矩阵。

我们当然有理由先讨论二维的情况。

1.1二维平移矩阵

形式:平移矩阵的形式是什么样的呢。

  • 一定是一个满秩的矩阵,因为我们并不会进行维度的变换。
  • 坐标轴的方向和长度是不变的,因为矩阵运算的本质是改变的参考系的X,Y。

寻找矩阵

那么什么样的矩阵能够使得一个点进行平移操作呢,因为平移操作并不会改变参考系XY的方向和单位向量的长度,所以实际上,在当前的维度中,我们并不可能做到,为什么呢?因为我们之前说过,矩阵的线性变换并不会改变原点的位置,矩阵是默认原点就是(0,0),在矩阵中填充任何的值都没办法改变这个约定熟成的决定。那么怎么做到呢,我们利用更高一维的矩阵,也就是三维矩阵进行操作,其实就是在更高的维度当中,解决我们的原点平移问题。

在这里,需要说明的是,如果我们使用的是左矩阵右向量的形式,那么构成我们全新的坐标系的向量应当是矩阵中的列。我们在增加了一个新的维度,(dx,dy,1),dx,dy就是我们要平移的数量,而增加一个1,是因为要保持秩是3,毕竟我们是从更高一层的维度来转移我们的坐标原点的。

从几何意义来说,平移矩阵其实就是增加一个并不正交的Z轴(dx,dy,1)来进行一个坐标轴的重新定义,继而将坐标转换位置。

这里需要注意的是,点V=(x,y,1),并不是再是我们二维坐标上的点,而是以P的列向量为基所构成的三维空间上的点,只是说我们把二维的点变为V=(x,y,1)然后经过对应矩阵P的线性变换,最终得到平移点的位置。

这个过程可能有些难以理解,但是又是那么的巧妙和精确。我们所构造的矩阵P,是通过新空间中基的列向量来构成的,其中的列向量中每一个坐标值对应的数值,其实都是以我们原有的基x=(1,0),y=(0,1)来决定的。P这个矩阵,是一种线性的变换,是把用它坐标系中表示的点的位置坐标,来映射到原先我们确定它的时用的基的空间里。

这其实就是一种投影运算,对V的每个坐标值进行投影。

而p的逆矩阵,其实就是把我们的坐标映射到P的坐标中的运算。

1.2三维平移矩阵

当我们理解了二维的平移矩阵,那么,其实三维的矩阵也是一样的原理

二.旋转矩阵

旋转矩阵的基础含义就是绕原点的旋转。

2.1二维旋转矩阵

形式:旋转矩阵的形式是什么样的呢。

  • 一定是满秩的,因为没有进行维度变换
  • 坐标轴的长度应该是不变的,因为没有进行放缩操作,但是角度应该是要变的。

寻找矩阵:

假设我们有点v=(x,y),坐标轴是标准的坐标轴,角度是为是与x轴正方向的夹角。

首先,我们已经知道了一些知识,那就是寻找新的坐标轴的基,且基的长度仍是1.那么

形成的矩阵

这就是我们所需要的旋转矩阵,这里其实我们并

2.2三维旋转矩阵

对于三维来说是差不多的,不过因为旋转轴的不同,旋转矩阵的形状也是不同的

可以结构成这么一段话,对于标准坐标系而言,要将一个点V移动到V1(在这里V和V1的表示都是标准坐标系下的),那么用新基构成的矩阵P变换V,得到V1。这是因为,V在标准坐标系中的坐标和V1在P的坐标系下的坐标是一样的。


所以,矩阵变换的并不是V,而是V1。因为P的作用是把本身的坐标里的点变成标准坐标系的点的坐标,所以变换的其实不是标准坐标系里的V,而是自身的V1,因为他们两者的值是相同的,会有很强的误导性,但是并不是说他们空间中的绝对位置是相同的。仅仅因为参考系的变换,导致了他们的值相同。

三.放缩矩阵

放缩矩阵其实就很简单,图形的放缩其实就是我们本身的坐标轴的基的放缩

四.投影矩阵

将点v,投影到一个平面A,投影方向是B的法向量n。

形式:正交投影矩阵的形式是什么样的呢。

  • 应该是高维矩阵,因为其中包含平移操作
  • 应该是一个不满秩的矩阵,毕竟我们的坐标都放到了一个面上
  • 因为是正交投影,所以我们压缩的,其实就是沿着B法向量上的点

寻找矩阵:我们设V=(vx,vy,vz),A有一点a=(ax,ay,az),面的法向量N=(Nx,Ny,Nz)

  1. 首先确立平面上的坐标系,通过点A,和法向量N建立坐标系(X*,Y*,Z*).
  2. 其中Z是法向量N的方向,转向是没有关系的。
  3. 如果这么就完了并不能完成平移操作,仅仅完成的是坐标系方向的转向,位置上还需要平移
  4. 所以需要原点到平面的距离矢量L
  5. 建立最后的投影矩阵

注意:我们这里所需要的,是应该求逆矩阵,当我们所需要的是投影坐标表示而不是在原先坐标系表示的时候

四.自由矩阵变换

熟练的掌握以上技巧就完美进行坐标运算

 


http://chatgpt.dhexx.cn/article/h4vJWQE6.shtml

相关文章

图像处理-矩阵变换

Android中通过矩阵来处理图像问题是非常常见的。 图像中的每一个像素点都是一个颜色矩阵分量&#xff0c;然后我们让这两个矩阵相乘就能得到一个新的矩阵&#xff08;新的颜色矩阵分量&#xff09;&#xff0c;这就是矩阵变换对图像中的每一个点的处理&#xff0c;使得对整个图…

shader中的常用矩阵变换

unity shader 矩阵学习 矩阵运算法则&#xff08;1&#xff09;矩阵和标量的乘法&#xff08;2&#xff09;矩阵和矩阵的乘法矩阵相乘的条件 和 结果的行数和列数 变换的基本概念(1)变换(2)线性变换(3)平移变换(4)仿射变换&#xff08;5&#xff09;齐次坐标 2D 矩阵变换&#…

【Matlab】矩阵变换与矩阵求值

矩阵变换与矩阵求值 对角矩阵&#xff1a;只有对角线上有非零元素的矩阵。 数量矩阵&#xff1a;对角线上的元素相等的对角矩阵。 单位矩阵&#xff1a;对角线上的元素都为1的对角矩阵。 diag函数 提取矩阵的对角线元素 diag(A)&#xff1a;提取矩阵A主对角线元素&#x…

闫令琪图形学入门笔记(矩阵变换篇)

整个坐标变化过程贯穿管线渲染&#xff0c;它与光栅化、着色一同构成GPU完整的渲染过程。所以理解三维世界的坐标与矩阵变换是首要的学习内容 1.1 向量的点乘与叉乘 点乘 向量的点乘可以求得一个数&#xff0c;利用点乘可以进一步计算两向量的夹角大小&#xff0c;或者一个…

点云矩阵变换

点云矩阵变换 变换矩阵工作原理 : |-------> 变换矩阵列| 1 0 0 x | \| 0 1 0 y | }-> 左边是一个3阶的单位阵(无旋转)| 0 0 1 z | /| 0 0 0 1 | -> 这一行用不到 (这一行保持 0,0,0,1)要进行点云旋转&#xff0c;需要对3阶矩阵进行赋值 如何赋值参考&#xf…

OpenGL矩阵变换

参考内容&#xff1a; 1. 这次&#xff0c;彻底搞懂 OpenGL 矩阵转换 2. Article - World, View and Projection Transformation Matrices 模型变换的基本流程图&#xff1a; 1. 模型变换 模型变换解决的是&#xff0c;把物体在世界坐标系下的位置拆分成平移、缩放、旋转的…

MATLAB矩阵变换

目录 对角阵与三角阵 1、对角阵 &#xff08;1&#xff09;提取矩阵的对角线元素 (2)构造对角阵 2、三角阵 (1)上三角阵 (2)下三角阵 矩阵的转置与旋转 1、矩阵的转置 2、矩阵的旋转 3、矩阵的左右翻转 4、矩阵的上下翻转 矩阵的逆与伪逆 1、矩阵的逆 2、矩阵的伪…

Cesium 矩阵变换

在Cesium和其他三维开发中中经常用到矩阵变换。比如将一个物体移动、缩放、平移都可以用变换矩阵来计算。 再比如将三维场景中的物体转换为屏幕上显示的二维图形&#xff0c;需要用到透视投影&#xff08;perspective projection&#xff09;矩阵。 变换&#xff08;tansform…

浅谈矩阵变换——Matrix

矩阵变换在图形学上经常用到。基本的常用矩阵变换操作包括平移、缩放、旋转、斜切。 每种变换都对应一个变换矩阵&#xff0c;通过矩阵乘法&#xff0c;可以把多个变换矩阵相乘得到复合变换矩阵。 矩阵乘法不支持交换律&#xff0c;因此不同的变换顺序得到的变换矩阵也是不相同…

变换矩阵

1、变换矩阵 变换矩阵可以分解为缩放&#xff0c;旋转&#xff0c;平移矩阵的乘积&#xff1a; M T * R * S - 右手坐标系 当均匀缩放时&#xff0c;旋转和缩放可以交换顺序 缩放和平移不可以交换顺序 2、子坐标系与父坐标系 由在父坐标系中的坐标位置P&#xff0c;和三…

矩阵基础与变换

矩阵基础 矩阵的基本概念 由 m n 个数aij排成的m行n列的数表称为m行n列的矩阵&#xff0c;简称m n矩阵&#xff08;引用百度百科&#xff09;。记作&#xff1a; 这mn 个数称为矩阵A的元素&#xff0c;简称为元&#xff0c;数aij位于矩阵A的第i行第j列。 矩阵的加法 同型…

2.2 矩阵变换

写在前面&#xff1a;作者本人是纯纯的菜鸟&#xff0c;学习的内容来自于 中国大学MOOC 中南大学 《科学计算与MATLAB语言》&#xff0c;欢迎各位大佬或新手在这里和平讨论&#xff0c;如果我有错误请各位不吝赐教&#xff0c;提前感谢各位捧场&#xff01; 何为矩阵变化&#…

线性代数学习笔记——第七十二讲——共轭矩阵

1. 本讲内容概要 2. 复数及其性质及复数的运算 3. 复共轭及模 4. 共轭矩阵的定义及性质

共轭矩阵 正定矩阵

https://blog.csdn.net/know9163/article/details/80551764

共轭 、 共轭转置、共轭矩阵、酉矩阵、正定矩阵、半正定矩阵

共轭复数 实数部分相同而虚数部分互为相反数的两个复数。 矩阵的共轭转置 把矩阵转置后&#xff0c;再把每一个数换成它的共轭复数。 自共轭矩阵 矩阵中每一个第i 行第j 列的元素都与第j 行第i 列的元素的共轭相等。 酉矩阵 AH 是A 的共轭转置 A叫做酉矩阵 正定矩阵 半正…

matlab-线性代数 对矩阵取共轭(不用函数)

由上图所示&#xff0c;可以得知&#xff1a;a是求矩阵的共轭转置&#xff0c;而a.是求矩阵的共轭。在数学中&#xff0c;共轭转置表示为在矩阵的右上角加上H。 如果矩阵是实数矩阵&#xff0c;那么a和a.的结果一样&#xff0c;都是求矩阵的转置&#xff0c;如下图所示&#xf…

我的矩阵学习

摘自矩阵&#xff08;数学术语&#xff09;_百度百科 定义 由 m n 个数aij排成的m行n列的数表称为m行n列的矩阵&#xff0c;简称m n矩阵。记作&#xff1a; 这mn 个数称为矩阵A的元素&#xff0c;简称为元&#xff0c;数aij位于矩阵A的第i行第j列&#xff0c;称为矩阵A的(i…

矩阵的共轭

The conjugate of a matrix&#xff08;矩阵的共轭&#xff09;&#xff1a;矩阵元素中有复数&#xff08;complex number&#xff09;&#xff0c;将矩阵中的复数求共轭&#xff0c;实数不变。矩阵的共轭记为。如&#xff1a;

旋转矩阵,矩阵,共轭矩阵

旋转矩阵&#xff0c;矩阵&#xff0c;共轭矩阵 1.旋转矩阵1. 旋转矩阵简介2. 性质3. 二维空间3.1 普通旋转3.2 复平面 4. 三维空间4.1 旋转4.2 角-轴表示和四元数表示4.3 欧拉角表示4.4 对称保持 SVD 表示 5 .其他5.1 旋转轴5.2 叉乘计算 2 矩阵2.1 定义2.2 矩阵的基本运算2.3…

矩阵的迹\矩阵的秩\伴随矩阵\共轭矩阵,基底、维数与秩,相对某个基底的坐标计算方法

矩阵的迹&#xff08;Trace&#xff09; n n n\times n nn的方阵A的n个对角线元素的和称为方阵A的迹&#xff0c;记作tr(A). A ( a 11 ⋯ a 1 n ⋮ ⋮ a n 1 ⋯ a n n ) A\begin{pmatrix}a_{11}&\cdots &a_{1n}\\\vdots&\ &\vdots\\a_{n1}&\cdots&a_…