1
0
mirror of https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git synced 2025-08-23 20:55:27 +08:00

Update all the equations in chapter 1

This commit is contained in:
Meow J
2016-07-04 14:44:19 +08:00
parent 322d20bdd1
commit 6e6f2113d4
3 changed files with 116 additions and 51 deletions

View File

@@ -64,9 +64,11 @@ glm::vec3 cameraUp = glm::cross(cameraDirection, cameraRight);
使用矩阵的好处之一是如果你定义了一个坐标空间里面有3个相互垂直的轴你可以用这三个轴外加一个平移向量来创建一个矩阵你可以用这个矩阵乘以任何向量来变换到那个坐标空间。这正是LookAt矩阵所做的现在我们有了3个相互垂直的轴和一个定义摄像机空间的位置坐标我们可以创建我们自己的LookAt矩阵了
![](../img/look_at.png)
$$
LookAt = \begin{bmatrix} \color{red}{R_x} & \color{red}{R_y} & \color{red}{R_z} & 0 \\ \color{green}{U_x} & \color{green}{U_y} & \color{green}{U_z} & 0 \\ \color{blue}{D_x} & \color{blue}{D_y} & \color{blue}{D_z} & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} * \begin{bmatrix} 1 & 0 & 0 & -\color{purple}{P_x} \\ 0 & 1 & 0 & -\color{purple}{P_y} \\ 0 & 0 & 1 & -\color{purple}{P_z} \\ 0 & 0 & 0 & 1 \end{bmatrix}
$$
![](../img/look_at_R.png)是右向量,![](../img/look_at_U.png)是上向量,![](../img/look_at_D.png)是方向向量![](../img/look_at_P.png)是摄像机位置向量。注意位置向量是相反的因为我们最终希望把世界平移到与我们自身移动的相反方向。使用这个LookAt矩阵坐标观察矩阵可以很高效地把所有世界坐标变换为观察坐标LookAt矩阵就像它的名字表达的那样它会创建一个观察矩阵looks at(看着)一个给定目标。
\(\color{red}R\)是右向量,\(\color{green}U\)是上向量,\(\color{blue}D\)是方向向量\(\color{purple}P\)是摄像机位置向量。注意位置向量是相反的因为我们最终希望把世界平移到与我们自身移动的相反方向。使用这个LookAt矩阵坐标观察矩阵可以很高效地把所有世界坐标变换为观察坐标LookAt矩阵就像它的名字表达的那样它会创建一个观察矩阵looks at(看着)一个给定目标。
幸运的是GLM已经提供了这些支持。我们要做的只是定义一个摄像机位置一个目标位置和一个表示上向量的世界空间中的向量(我们使用上向量计算右向量)。接着GLM就会创建一个LookAt矩阵我们可以把它当作我们的观察矩阵
@@ -256,7 +258,7 @@ void Do_Movement()
![](http://www.learnopengl.com/img/getting-started/camera_triangle.png)
如果我们把斜边边长定义为1我们就能知道邻边的长度是![](../img/camera3.png),它的对边是![](../img/camera4.png)。这样我们获得了能够得到x和y方向的长度的公式它们取决于所给的角度。我们使用它来计算方向向量的元素
如果我们把斜边边长定义为1我们就能知道邻边的长度是\(\cos \ \color{red}x/\color{purple}h = \cos \ \color{red}x/\color{purple}1 = \cos\ \color{red}x\),它的对边是\(\sin \ \color{green}y/\color{purple}h = \sin \ \color{green}y/\color{purple}1 = \sin\ \color{green}y\)。这样我们获得了能够得到x和y方向的长度的公式它们取决于所给的角度。我们使用它来计算方向向量的元素
![](http://www.learnopengl.com/img/getting-started/camera_pitch.png)