OpenGL知识点梳理3----变换与坐标系统

变换

一、需要注意的一些点

1.变换矩阵不可变,其参数不能使用变量。

2.齐次坐标w>0表示真实物理世界中的点,w=0可用来统一表示一个无穷远的点。而实际应用中w=0常用来表示一个向量。

3.齐次坐标的优点是只需要管线最后做一次除法就能将齐次坐标转换为非齐次。

4.进行组合变换矩阵时,先缩放,再旋转,最后平移或移动到合适位置。

数学原因:矩阵的乘法不可交换

几何原因:若先位移再缩放,位移矩阵也会被缩放相同的倍数。

5.旋转总是相对于原点的,旋转和平移是不可交换的,从数学角度分析,即矩阵相乘的不可交换性

6.三维旋转的几何解释

任意三个正交向量U,V,W可构成一个三维空间中的旋转矩阵。当用这个矩阵去乘以一个点p时,结果为各个UP,VP,WP

正好为点乘结果,所以可看成将点映射到由UVW组成的新坐标系中。

7.如果物体上的某个位置可以表示成物体质心加上一个位移量,那么,旋转它等价于旋转质心然后
旋转这个位移。//此点仍然有疑问

二、常用的公式

1、由二维旋转推导出的旋转矩阵

x=rcosϕ    y=rsinϕ 
x′=rcos(θ+ϕ)     y′=rsin(θ+ϕ) 
通过三角函数展开得到 
x′=rcosθcosϕ−rsinθsinϕ 
y′=rsinθcosϕ+rcosθsinϕ 
带入x和y表达式得到 
x′=xcosθ−ysinθ 
y′=xsinθ+ycosθ

写成矩阵的形式是:

此为基本公式,而在三维空间中围绕各个轴旋转也就是取一轴坐标不变,其余类似于二维旋转。

2.绕三轴旋转

绕X轴的旋转:

x′=x 
y′=ycosθ−zsinθ 
z′=ysinθ+zcosθ

绕Y轴旋转:

x′=zsinθ+xcosθ 
y′=y 
z′=zcosθ−xsinθ 

绕Z轴旋转

坐标系统

裁剪空间

1.正射投影

 此投影是不考虑透视效果的,所以投影结果会不真实,但是在一些工程学中会需要用到正射投影。

2.透视投影

考虑深度对投影的影响,所以进行透视除法,将分量都除以W从而得到越远越小的效果。

perspective(glm::radians(45.0f), (float)width/(float)height, 0.1f, 100.0f);

参数说明:第一个参数为fov(视野),第二个参数设置了宽高比,由视口的宽除以高所得。第三和第四个参数设置了平截头体的近和远平面。

所有在近平面和远平面内且处于平截头体内的顶点都会被渲染。

 远近平面说明:近平面不可设置为0,远平面影响不大。近平面对深度分辨率更加敏感些。

摄像机

更新中。。。。

猜你喜欢

转载自www.cnblogs.com/jingrui/p/9638039.html