《3D数学基础:图形与游戏开发》读书笔记

版权声明:欢迎转载,共同进步。请注明出处:http://blog.csdn.net/puppet_master https://blog.csdn.net/puppet_master/article/details/79936395

1.计算机图形学第一准则:近似原则如果她看上去是对的它就是对的。

2.3D坐标系有两种,左手系和右手系,相同类型的坐标系可以通过旋转来重合,但左手系和右手系之间不可以。左右手坐标系转化可以通过翻转一个轴的符号来进行。DX左手系,OGL右手系,3dmax右手系,Unity左手系。

3.惯性坐标系:为了简化世界坐标系到物体坐标系的转化,是世界坐标系和物体坐标系转化的中间过程。惯性坐标系原点与物体坐标系原点重合,轴与世界坐标系平行。从物体坐标系转化到惯性坐标系只需要旋转,从惯性坐标系转化到世界坐标系只需要平移。

4.嵌套坐标系,将运动按照坐标系拆分,找到最合适表示的坐标系,复杂的运动就可以变成线性变换工具可以表示的简单运动。

5.零向量是唯一的没

有方向的向量。零向量不是点,仅仅表示没有位移。不能被标准化。

6.三角形法则:[1,-3,4]可以拆分到三个与轴平行的向量:[1,0,0],[0,-3,0],[0,0,4]。

7.向量点乘的几何解释:点乘结果描述了两个向量的“相似”程度,点乘结果越大,两向量越相近。a`b = ||a|| ||b||cosθ;如果是单位向量就直接表示夹角的cosθ;如果只是判断方向,与大小无关,可以只看点乘结果的正负,0垂直,>0方向基本相同,<0方向基本相反。

8.从点a到点b的向量AB向量可以看成是向量的减法OB - OA = AB,所以过两点的向量是终点(箭头位置b)-开始点(箭尾位置a)

9.单位向量经常被称作标准化向量,或者简称“法线”。任意非0向量都能计算出一个和其方向相同的单位向量,这个过程被称作标准化。

10.向量叉乘,在左手系中,AB顺时针,则结果指向自己,逆时针,背离自己;右手系中,AB顺时针,结果背离自己,AB逆时针,结果指向自己。

11.r*c矩阵有r行,c列,mij表示M矩阵的第i行,第j列的数。对角线元素是方阵中行号和列号相等的元素。所有非对角元素都为0的矩阵称为对角矩阵。单位矩阵是一种特殊的对角矩阵,n*n方阵,对角线元素为1。 1*n矩阵称为行向量,n*1矩阵称为列向量。

12.矩阵转置是沿着对角线翻折,使行向量变成列向量,列向量变成行向量。矩阵转置的转置会变回原矩阵。对于任意对角矩阵(单位矩阵),其转置等于原矩阵。

13.矩阵相乘,r*n矩阵A乘以n*c矩阵B,结果是r*c矩阵C,C的任意元素Cij = A的第i行向量点乘B的第j列向量。矩阵相乘不满足交换律,但是满足结合律。矩阵乘积的转置等于先转置矩阵再反向相乘。

14.向量与矩阵的乘法:行向量v和矩阵M,乘法方式为左乘,表示为vM,结果为行向量,对于用A,B,C矩阵转换v时,采用vABC的顺序进行乘法,DX使用该方式。列向量v和矩阵M,乘法方式为右乘,表示为Mv,结果为列向量,对于用ABC矩阵转换v时,写作CBAv,OpenGL使用该方式。其他两种方式属于未定义的方式。矩阵中的元素决定了输入向量中特定元素在输出向量中占的比重。矩阵向量乘法满足分配率,即(v+w)M = vM + wM。

15.线性变换:在线性空间V上的一个线性变换A,如果V中任意元素a,b,都有A(a + b) = A(a) + B(b),A(ka) = kA(a)。线性变换,旋转,缩放,正交投影,镜像,切变。一个映射F(a) = aM,当M为任意方阵时,说明映射是线性变换。

    仿射变换:仿射变换是指线性变换后平移,仿射变换是线性变换的超集,任何线性变换都是放射变换,但是仿射变换并不一定是线性变换。任何形式的v' = vM + b形式的变换都是仿射变换。

    可逆变换:如果存在一个变换可以撤销原变换,那么改变换是可逆的。除了投影变换,其他变换都是可逆的。如果矩阵是奇异的,变换不可逆,可逆矩阵的行列式不为0.

    等角变换:变换前后两个向量的夹角的大小,方向都不改变,说明变换是等角的。只有平移,旋转和均匀缩放是等角变换。所有等角变换都是仿射和可逆的。

    正交变换:正交变换轴保持互相垂直,而且不进行缩放变换。长度,角度,面积,体积保持不变。很容易求出正交变换的逆。只有平移,旋转和镜像是正交变换,正交矩阵的行列式为+-1,所有正交矩阵都是仿射和可逆的。

    刚体变换:只改变物体的位置和方向,不包括形状?。所有长度,角度,面积,体积都不变。只有平移和旋转是刚体变换。刚体变换被称为正规变换,所有刚体变换都是正交,等角,可逆和仿射的。

16.如果把矩阵的行解释为坐标系的基向量,那么乘以该矩阵就相当于做了一次坐标变换,vM = w,称之为M将v变换到w。用基向量[1,0,0]与任意矩阵M相乘,得到[m11,m12,m13],得出的结论是矩阵的每一行都可以解释为转化后的基向量。根据该结论,就可以通过一个期望的变换,反向构造出一个矩阵来代表这个变换。

17.可以变换物体,也可以变换坐标系。两种变换实际上是等价的,将物体变换一个量等价于将坐标系变换一个相反的量。根据实际情况进行选择。

18.通过矩阵连乘结合律,多个矩阵对顶点进行变换时,如vMVP,先计算MVP矩阵,然后传递给shader,就可以将每个顶点进行三次矩阵计算的时间消耗降低为一次矩阵变换的时间。v(MVP)

19.正交投影是降维操作,类似缩放矩阵,某个维度的缩放因子为0时,这个维度就被干掉了。这个操作是不可逆的。镜像也类似于缩放矩阵,只是缩放因子为-1时,就会镜像。

20.方阵M^-1与M相乘为I(单位矩阵)。并非所有方阵都有逆矩阵,如果一个矩阵一行或一列元素均为0,就不可逆。如果一个矩阵有逆矩阵,可以称之为非奇异的;没有逆矩阵可以称之为不可逆的或奇异矩阵。对于任意可逆矩阵M,当且仅当v = 0时,vM = 0。矩阵转置的逆等于逆的转置。

21.正交矩阵:若方阵M是正交的,当且仅当M与它转置M^T的乘积等于单位矩阵=>正交矩阵的转置等于它的逆矩阵。旋转矩阵和镜像矩阵是正交的。如果M是正交的,则M^T也是正交的。

22.矩阵正交化,坏数据或浮点运算累积错误(矩阵爬行)导致矩阵不正交。进行施密特正交化,

23.齐次坐标系: 2维齐次坐标(x,y,w),在三维平面w = 1处的标准2D平面,点(x,y)用齐次坐标可以表示为(x,y,1),而那些不在w = 1平面上的点,则将它们投影到w = 1平面上。所以,齐次坐标(x,y,w)映射的实际2D点为(x/w,y/w)。给定一个点(x,y),齐次空间中有无数点与之对应,所有点的形式都为(kx,ky,k) ,k !=0,这些点构成了一条过齐次原点的直线。当w = 0时,因为除法未定义,因此不存在实际的2D点,我们可以将(x,y,0)解释为位于无穷远的点,可以用其描述一个方向而不是位置。在3维上同理,因而对于齐次坐标来说,我们可以通过最后一个维度w来判断一个向量表示的是方向还是位置,为0时表示方向,为1时表示位置。

24.我们可以用4x4矩阵来包含平移变换,向量的w分量可以开关4x4矩阵的平移部分。因而4x4矩阵可以描述更多的变换。基本思想是TRT^-1的形式,现将变换中心点移动到原点,进行线性变换,然后再将中心点平移回去。

25.通过齐次坐标变换,要把4D向量除以w,这个除法可以让我们更简洁地做一些几何运算,也就是透视投影。从4D到3D变换意味着透视除法,因此我们可以用4x4矩阵来编写代码,实现透视投影。基本思想是给一个p'公式,其中的x,y,z有公分母,然后构造一个4x4矩阵,使w与这个公分母相等。假设初始点w = 1.

x' = dx/ z,y' = dy/z, z' = d => p' = [dx/z, dy/z, d] = [dx/z, dy/z, dz/z] => [x, y, z]/ (z/d) =>齐次坐标[x, y, z, z/d]

猜你喜欢

转载自blog.csdn.net/puppet_master/article/details/79936395