Unity Shader学习笔记:基础数学

来源:互联网 发布:淘宝一件代发发货 编辑:程序博客网 时间:2024/04/30 06:52

坐标系:对于模型空间和世界空间,unity使用左手坐标系,对于观察空间,unity使用右手坐标系。
左手坐标系:举起左手,用食指和大拇指摆出一个”L”的手势,并且让你的食指指向上面,大拇指指向右。此时伸出中指,会指向前方。这就是一个左手坐标系。大拇指,食指,中指分别对应+x,+y,+z轴的方向。
右手坐标系:举起右手,食指指向上,中指指向前方,此时大拇指将指向左侧。这就是一个右手坐标系。大拇指,食指,中指分别对应+x,+y,+z轴的方向。
左手法则:在左手坐标系中,使用左手定则定义旋转方向。举起左手,握拳,伸出大拇指让它指向旋转轴的方向,那么旋转的正方向就是剩下4个手指的弯曲方向。
右手法则:在右手坐标系中,使用右手定则定义旋转方向。举起右手,握拳,伸出大拇指让它指向旋转轴的方向,那么旋转的正方向就是剩下4个手指的弯曲方向。

矢量:矢量是指n维空间中一种包含了模和方向的有向线段。
一个矢量通常右一个箭头表示。其中矢量的头值的是它箭头所在的端点处,而尾指的是另一个端点。
零矢量:(0,0,0)
矢量乘法:kV = (kVx,kVy,kVz)
矢量除法:V/k = (x,y,z)/k = 1/k(x,y,z) = (x/k,y/k,z/k), k!=0;
矢量加法 : a + b = (ax + bx,ay + by, az + bz)
矢量减法 : a - b = (ax - bx, ay - by, az - bz)
矢量的模:|v| = √(Vx^2 + Vy^2 + Vz^2)
矢量的归一化:单位矢量:^v = v/|v|,v是任意非零矢量
矢量的点积:a · b = (ax,ay,az)·(bx,by,bz) = axbx + ayby + azbz = |a|·|b|cosθ
(ka)·b = a·(kb) = k(a·b)
a·(b+c) = a · b + a ·c
矢量的叉积 : a × b = (ax,ay,az)·(bx,by,bz) = (aybz - azby,azbx -axbz,axby - aybx)
a × b = -(b × a)
矢量的叉积的模: |a × b| = |a||b|sinθ
矢量的叉积的方向:
右手坐标系:使用右手定则判断,将手心放在a和b的尾部交点处,然后张开手掌,让手掌方向和a的方向重合,再弯曲你的四指让它们向b靠拢,最后伸出你的大拇指,大拇指指向的方向就是右手坐标系中a × b的方向
左右坐标系:使用左手定则判断,将手心放在a和b的尾部交点处,然后张开手掌,让手掌方向和a的方向重合,再弯曲你的四指让它们向b靠拢,最后伸出你的大拇指,大拇指指向的方向就是左手坐标系中a × b的方向

矩阵(太难编辑了,简单写写)
1.矩阵和标量的乘法 :kM = Mk =k乘以M中的每一项
2.矩阵和矩阵的乘法 : cij = ai1b1j + ai2b2j + … + ainbnj
3.AB != BA
4.(AB)C = A(BC)
5.方块矩阵:简称方阵,是指那些行和列数目相等的矩阵。
6.对角元素:行号和列号相等的元素
7.对角矩阵:除了对角元素外的所有元素都为0,
8.单位矩阵:是对角矩阵,且对角元素为1:IM = MI = M
9.转置矩阵:实际是对原矩阵的一种运算,即转置运算。给定一个r × c的矩阵M,它的转置可以表示成MT,这是一个c × r的矩阵。
MTij = Mji
(MT)T = M
(AB)T = BTAT
10.逆矩阵:M-1,MM-1 = M-1M = I
如果一个矩阵有对应的逆矩阵,我们就说这个矩阵是可逆的或者说是非奇异的,相反的,如果一个矩阵没有对应的逆矩阵,我们就说它是不可逆的或者说是奇异的。
如果一个矩阵的行列式不为0,那么它就是可逆的。
(M-1)-1 = M
I-1 = I
(MT)-1 = (M-1)T
(AB)-1 = B-1A-1
(ABCD)-1 = D-1C-1B-1A-1
11.正交矩阵:正交是矩阵的一种属性,如果一个方阵M和它的转置矩阵的乘积是单位矩阵的话,那么我们就说这个矩阵是正交的,反过来也是成立的。
MMT = MTM = I
如果一个矩阵是正交的,那么它的转置矩阵和逆矩阵是一样的:MT = M-1
一组标准正交基是正交矩阵,可以直接使用转置矩阵求得该变换的逆矩阵