OpenGL笔记九:3D数学小记
2019-06-02 本文已影响28人
御雪飞斐
前言
期待您移步上篇:OpenGL笔记八:2D纹理坐标解析
向量大小计算:
||V|| : 为向量V的模。
向量大小计算公式.png
向量与标量的除法:
向量与标量的除法.png标准化向量:
标准化向量.png示例:
示例-1.png
零向量是不能被标准的,数学是上不允许的。因为将导致除数为0,几何上没有意义。因为零向量没有方向。
向量点乘
向量点乘.png点乘的几何意义
a • b = ||a|| ||b|| cos(q)
//q为a,b向量的夹角
-
3D中,两向量的夹⻆角是在包含两向量的平⾯中定义的。
点乘夹角q.png - ⽤点乘计算2个向量之间的夹⻆角q,如果a,b都是单位向量
q = arccos ( a • b )
a·b | q角度 | a 和 b |
---|---|---|
>0 | 0° ≤ q < 90° | 方向基本相同 |
=0 | q = 90° | 正交 |
<0 | 90° < q ≤ 180° | 方向基本相反 |
示例:
示例-1.png
示例-2.png
向量叉乘
向量叉乘.png向量的叉乘⼏何意义
- 向量a,b在⼀个平⾯中。向量a * b 指向该平⾯的正上⽅,垂直于a 和b a * b 的⻓长度等于向量的⼤⼩与向量夹⻆角的sin值的积,如下:
|| a * b || = ||a|| ||b|| sin∂
矩阵基础
标量与矩阵相乘
标量与矩阵相乘.png矩阵与矩阵相乘
Arn * Bnm = Crm
即:r行n列矩阵A 叉乘 n行m列矩阵B = r行m列矩阵C
- 矩阵相乘法则:对结果中的任意元素Cij,取A的第i⾏和第j列,将⾏和列中的对应元素相乘。然后将结果相加等于A的i行和B的j列的点积)。Cij就等于这个和。
矩阵相乘.png
示例.png
矩阵乘法注意事项:
- 1.任意矩阵M乘以⽅阵S,不管从哪边乘,都得到与原矩阵⼤⼩相同的矩阵。当然,前提是假定乘法有意义。如果S是单位 矩阵,结果就是原矩阵M,即:MI = IM = M 。
- 2.矩阵乘法不满⾜交换律,即:AB != BA
- 3.矩阵乘法满⾜结合律,即:(AB)C = A(BC)。假定ABC的维数使得其乘法有意义,要注意如果(AB)C有意义,那么A(BC)就 ⼀定有意义。
- 4.矩阵乘法也满⾜与标量或向量的结合律,即:(kA)B = k(AB) = A(kB); (vA)B = v(AB);
- 5.矩阵积的转置相当于先转置矩阵然后以相反的顺序乘法,即:(AB)T = BT AT
矩阵与向量相乘 注意事项:
- 1.结果向量中的每个元素都是原向量与矩阵中单独⾏或列的点积;
- 2.矩阵⼀向量乘法满⾜对向量加法的分配律,对于向量v,w 和 矩阵M 有,
(v + w)M = vM + wM;
矩阵⼏何意义
1.⽅阵的⾏能被解释为坐标系的基向量;
2.为了将向量从原坐标系变换到新坐标系,⽤它乘以⼀个矩阵。
3.从原坐标系到这些基向量定义的新坐标系的变化是⼀种线性变换。线性变换保持直线和平⾏线。但角度、长度、 ⾯积或体积可能会改变。
4.零向量乘以任何矩阵仍然得到零向量。因此,⽅阵所代表的线性变换的原点和原坐标系原点⼀致。变换不包含 原点。
3D旋转 围绕任意轴旋转向量
绕n轴旋转⻆角度∂之后的矩阵:
任意轴旋转公式.png
期待您移步下篇:OpenGL笔记十:OpenGL ES初探