Unity Shader学习日记 part 3 线性代数--矩阵变换

之前我们学到了矩阵的相关基础,了解矩阵使用了进行变幻的。可是在三维空间中我们不管是表示点还是向量,都是通过x,y,z来表示的。那我们如何在三维向量中,表示出来变换的呢?

齐次坐标

齐次坐标:将原本的n维向量用n+1维来表示。

原因:1.不论是点还是向量,都是三维坐标,无法区分,我们给他在加上1维做区分。(x,y,z,w)w为0,向量,为1,点

2.三维向量无法表示平移变换,只能进行旋转,缩放的线性变换。

既然提到了变换,那就来看看这些变换矩阵是什么样的。、

在此之前,我们先来看看基础变换矩阵的构成

基础变换矩阵

在4*4的矩阵中,分成了四个部分,右边的t1,t2,t3是用于平移变换,而m区域的3*3矩阵则是用于旋转和缩放变换,其他的两个部分,0和1都是写死的。不论是何种变换,都是在基础变换矩阵转换来的,接下来我们在看看他们。

平移矩阵

如图就是平移矩阵了,将m区域的3*3矩阵变为单位矩阵,就可以得到平移矩阵,通过修改右侧的tx,ty,tz来完成变换。

平移矩阵的计算

了解了平移矩阵,来看看怎么使用

如图,就是将点 x,y,z进行了平移变换后的位置

这个则是向量通过平移矩阵之后的样子,现在我们可以看到,为什么需要使用4*4的矩阵来进行变换,以及为什么需要给列向量加1维。

那为什么向量变换之后,还是原本的样子呢?

这是因为,向量表示的是大小与方向,而不是位置,不论如何变换,向量的大小与方向是不变的。

平移矩阵是否是正交矩阵

为什么需要在意是不是正交矩阵呢?这里的正交矩阵,我们主要是想要快速的得到它的逆矩阵,这一点我们之前提过为什么。

而得到逆矩阵之后,我们可以通过逆矩阵进行反向变换。

那么如何判断是否是正交矩阵,之前也提过,我们再来看看

显然,平移矩阵不是正交矩阵,不过虽然他不是正交矩阵,我们也可以通过计算得到,结果也简单,记一下就好

旋转矩阵

旋转矩阵比较复杂,如何推导就不说了,记住就行

旋转矩阵是否是正交矩阵

结论:旋转矩阵是正交矩阵,意味着旋转矩阵得转置矩阵就是它得逆矩阵。

缩放矩阵

缩放矩阵就是对点或者向量进行某一个方向上得放大缩小。他的构成也非常简单

需要注意得是:缩放对于点或者向量都是有意义的。

缩放矩阵是否是正交矩阵

通常来说,缩放矩阵不会是正交矩阵,因为kx,ky,kz需要为1的时候才能使正交矩阵,所以通常来说,不是。

不过,他的逆矩阵也非常简单

复合运算

由于矩阵的乘法是不满足交换律,所以变换的顺序很重要。

举个列子,先往前一步,再向左左转。和先向左转,再往前一步的结果是不一样的。

Unity 的规则

在进行符合运算是,遵循先缩放,再旋转,最后平移。

如果是旋转,先z轴,再x轴,最后y轴。

以上就是基本的变换矩阵相关的基础了

相关推荐
通信小呆呆15 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
Bobolink_15 天前
TikTok矩阵账号如何批量养号?工作室级运营方案分享
矩阵·内容运营·跨境电商·tik tok·账号运营
H__Rick15 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee15 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn8615 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e15 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
小雨下雨的雨15 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙
cqbzcsq15 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
H1785350909615 天前
SolidWorks第四部分_直接实体建模特征9_替换面原理
线性代数·算法·机器学习·3d建模·solidworks
YangYang9YangYan15 天前
2026初入职场学习数据分析的价值
学习·数据挖掘·数据分析