[UnityShader基础]11.矩阵

1.矩阵和矩阵的乘法

一个a*b的矩阵和一个b*c的矩阵相乘,结果为一个a*c的矩阵

 

2.矩阵和矢量的乘法

在unity中,通常会把矢量放在矩阵的右侧,即把矢量转换成列矩阵来进行运算

例如,一个4*4的矩阵,乘以一个4*1的向量,结果为一个4*1的向量

对于CBAv=(C(B(Av))),其中C、B、A为矩阵,v为向量,先对v使用A进行变换,再使用B进行变换,最后使用C进行变换

 

3.几何意义

a.变换

矩阵的几何意义是变换,变换包含常见的平移变换、旋转变换、缩放变换,分别通过构造平移矩阵、旋转矩阵、缩放矩阵,然后乘以点或矢量,就可以对点或矢量进行对应的操作

这里构造的矩阵,是4*4的矩阵,因此也就需要把点或矢量扩展到四维空间,这就是齐次坐标空间

 

b.齐次坐标

齐次坐标是一个四维矢量

对于一个点,从三维坐标转为齐次坐标,是把其w分量设为1

对于一个矢量,从三维坐标转为齐次坐标,是把其w分量设为0

这样的话,当用一个4*4的变换矩阵对一个点进行变换时,平移、旋转、缩放都会作用于该点;而如果是用于变换一个矢量,平移的效果就会被忽略

上一篇:UnityShader笔记(一)变量


下一篇:【信息学竞赛真题! ! !】「USACO2016」Subsequences Summing to Sevens题解(C++版)