如果对矩阵进行顺时针旋转 θ \theta θ角度,那应该怎么样表示。还是使用特殊值带入可以得到。我们发现更好是逆时针旋转 θ \theta θ角度的逆矩阵。在数学上,一个矩阵的逆矩阵恰好是该矩阵的话,我们称之为正交矩阵。
-
概述
- 3D 变换
- 观测变换
- 视图/相机 变换
- 投影变换
- 正交投影
- 透视投影
-
3D 变换
-
如果绕着坐标轴旋转,变换如图所示。注意绕 y y y轴旋转的话,有点不一样。原因是之前说叉乘确定方向是右手定则, x x x 与 z z z 叉乘得到的向量与 y y y轴方向相反,使用 y y y轴的变换矩阵比较特殊( y y y是由 z ⃗ \vec{z} z 叉乘 x ⃗ \vec{x} x得到)。
绕着一个坐标轴旋转,其所属坐标保存不变,其他坐标转换为2D旋转模型。
-
一般旋转
-
我们能否使用绕轴旋转的组合得到一般旋转?
-
一般旋转通用公式:
公式证明过程:
- 和2D变换相似,我们的旋转是默认原点旋转。首先我们讲其平移到原点,然后进行旋转,然后再平移到目标位置。
- 拓展:老师建议学有余力的同学可以考虑了解
四元数
知识
-
-
View/ Camera Transfomation
-
如何完成视图变换
-
首先定义相机
- 位置
- 朝向
- 旋转方向
-
关键观察
-
通过 M v i e w M_{view} Mview矩阵改变相机
-
首先通过平移移动到原点坐标,变换为 T v i e w T_{view} Tview;把 t t t轴放置到 y y y轴,把 g g g轴放置到 − z -z −z轴,但是直接映射不太好写,如果放过来,把 x 、 y 、 z x、y、z x、y、z轴发过来的话,比较方便,然后进行逆变换:
旋转变换矩阵是正交矩阵,其逆矩阵为它的转置矩阵。
-
-
Projection transformation
-
有两种投影,一一种是正交投影,一种是透视投影
-
正交投影
把 Z Z Z扔掉,这所有的平面都在 x x x y y y 平面上,然后把结果变成[-1,1]范围。
问题: 如何判断前后面?
-
如何把物体映射到正交平面
转换为矩阵变换的表示,先平移再调整规格:
因为选定的坐标轴使用右手定则,所以远近的方面恰好相反。
OpenGL使用的 Z Z Z轴和我们这里假定的相反,所以出现相反的结果是合理现象
-
视图投影——使用最广泛的投影
-
在同一平面内,两个平行线不会相交。但是在透视投影中,平行线是会相交的。
-
如何做视图投影
-
挤压Frustum挤压成Cuboid
-
给定 y y y变化可以得知变换,最后推广到 x 、 z x、z x、z -
根据 x 、 y 、 z x、y、z x、y、z如何变换,可以得到矩阵 M p e r s p − > o r t h o M_{persp->ortho} Mpersp−>ortho ,只剩下第三行不知道。
-
近的平面上任何点不会变换,远的平面 z z z轴的点不会变换
-
上图中,在近端 x , y x,y x,y保持不变。所以 ( 0 0 A B ) (0\space \space 0 \space \space A \space B) (0 0 A B)
-
列方程解出 A B A\space B A B。这一步完成了解压操作,把平面挤压成了正交投影;之后进行正交变换。这样的结果可以得到最终变换。
-
-