1
0
mirror of https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git synced 2025-08-23 04:35:28 +08:00

Merge pull request #25 from BLumia/master

01-07一些改正
This commit is contained in:
Geequlim
2016-02-05 21:06:22 +08:00

View File

@@ -4,7 +4,7 @@
---|---
作者 | JoeyDeVries
翻译 | Django
校对 | Meow J
校对 | Meow J, [BLumia](https://github.com/blumia/)
尽管我们现在已经知道了如何创建一个物体、着色、加入纹理从而给它们一些细节的表现,但是它们仍然还是不够有趣,因为它们都还是静态的物体。我们可以尝试着在每一帧改变物体的顶点并且重设缓冲区从而使他们移动,但这太繁琐了,而且会消耗很多的处理时间。然而,我们现在有一个更好的解决方案,使用(多个)矩阵(Matrix)对象可以更好的变换(Transform)一个物体。当然,这并不是说我们会去讨论武术和数字虚拟世界(译注Matrix同样也是电影「黑客帝国」的英文名电影中人类生活在数字虚拟世界主角会武术)。
@@ -102,7 +102,7 @@
!!! Important
你可以计算两个非单位向量的角度,但是你必须除把结果以两个向量的长度,再除以![](../img/trans/costheta.png)。
你可以通过点乘的结果计算两个非单位向量的夹角,点乘的结果分别除掉两个向量的长度 剩下的就是夹角的cos值![](../img/trans/costheta.png)
所以,我们如何计算点乘?点乘是按分量逐个相乘,然后再把结果相加。两个单位向量点乘就像这样(你可以用两个长度为1的验证)
@@ -156,7 +156,7 @@
![](../img/trans/transformations18.png)
现在我们也就能明白为什么一个单独的数字要叫做标量(Scalar)了。简单来说,标量就是用它的值缩放(Scale)矩阵的所有元素(译注注意Scalar是由Scale + -ar演变过来的)。前面的例子里,所有的元素都被放大2
现在我们也就能明白为什么一个单独的数字要叫做标量(Scalar)了。简单来说,标量就是用它的值缩放(Scale)矩阵的所有元素(译注注意Scalar是由Scale + -ar演变过来的)。前面的例子里,所有的元素都被放大了2倍
到目前为止都还好,我们的例子都不复杂。不过矩阵与矩阵的乘法就不一样了。
@@ -282,7 +282,7 @@
![](../img/trans/transformations28.png)
利用旋转矩阵我们可以把我们的位置向量(Position Vectors)沿一个或多个轴进行旋转。也可以把多个矩阵结合起来比如先沿着X轴旋转再沿着Y轴旋转。但是这会很快导致一个问题——**万向节死锁(Gimbal Lock可以看看[这个视频](https://www.youtube.com/watch?v=zc8b2Jo7mno)来了解)**。我们不会讨论它的细节,但是一个更好的解决方案是沿着任意轴比如(0.662, 0.2, 0.7222)(注意,这是个单位向量)旋转,而不是使用一系列旋转矩阵的组合。这样一个(超级麻烦)的矩阵是存在的,下面![](../img/trans/rxryrz.png)代表任意旋转轴:
利用旋转矩阵我们可以把我们的位置向量(Position Vectors)沿一个或多个轴进行旋转。也可以把多个矩阵结合起来比如先沿着X轴旋转再沿着Y轴旋转。但是这会很快导致一个问题——**万向节死锁(Gimbal Lock可以看看[这个视频](https://www.youtube.com/watch?v=zc8b2Jo7mno)[(优酷)](http://v.youku.com/v_show/id_XNzkyOTIyMTI=.html)来了解)**。我们不会讨论它的细节,但是一个更好的解决方案是沿着任意轴比如(0.662, 0.2, 0.7222)(注意,这是个单位向量)旋转,而不是使用一系列旋转矩阵的组合。这样一个(超级麻烦)的矩阵是存在的,下面![](../img/trans/rxryrz.png)代表任意旋转轴:
![](../img/trans/transformations29.png)