GAMES101 Transformation 变换
Transformation 变换
2D 变换
线性变换 ——使用矩阵

仿射变换 Affine Transformation
缩放变换Scale (not uniform/uniform)
缩放某一比例,可以写成矩阵形式
反射Reflection Matrix
斜切 Shear Matrix

旋转 Rotate Matrix
默认绕原点逆时针旋转

齐次坐标
增加一个维度,解决了平移用矩阵表示的问题
而且满足:
vector + vector = vector
vector - vector = vector
point - point = vector
point + point = 两个点的中点

总结

3D 变换
先仿射变换,再平移!(先平移的话旋转中心点会改变)
旋转 ——绕某轴旋转
例:绕x轴旋转,x坐标不变
注意:$R_{y}(\alpha)$不一样(原因:y是x与z的叉乘的反方向,$\alpha$取负值)

Rodrigue’s Rotation Formula
旋转轴n和旋转角$\alpha$, (如果该轴不在原点,先平移至原点,旋转完再平移回去)
$$R(n,\alpha) = \cos_(\alpha)I+(1-\cos_(\alpha))nn^{T}+\sin_{\alpha}\left(
\begin{matrix}
0&-n_{z}&n_{y}\
n_{z}&0&-n_{x}\
-n_{y}&n_{x}&0\
\end{matrix}
\right)
$$
旋转矩阵的特殊性质:
转置矩阵==逆矩阵
(旋转负角度)

View transformation (placing camera)
Define the camera 对相机定义
- Position $\hat{e}$
- Look-at/gaze direction $\hat{g}$
- Up direction $\hat{t}$

相机的标准位置
——将相机一直变换至原点,Up at Y,look at -Z,让物体跟随相机变换
如何变换?
先平移至原点
旋转角度
(对其他物体进行相同操作)

Projection Transformation👇
两种投影:视角投影vs正交投影

Orthographic Projection 正交投影
简单的理解:
将z轴消除,将xy坐标成比例放入[-1,1]
实际上:
先平移后缩放,(注意观测方向为-Z,z轴上坐标变换略不同(n大f小,为n-f))

Perspective Projection 透视投影
1.用任意点变换n倍(n未知)时,满足:
从而推出变换矩阵$M_{persp \to ortho}$的值

2.再利用near面/far面上点的深度z不变。计算出M矩阵第三行参数
应为:(0,0,n+f,-nf)
3.最后,有:$$M_{persp} = M_{ortho}M_{persp\to ortho}$$,变换至标准立方体
定义视锥 –透视投影
用两个参数描述视锥:
长宽比 aspect ratio、垂直可视角度 fovY

Canonical Cube to Screen (在屏幕上绘制)
确定屏幕位置
对像素位置定义:见图片右侧

Viewport transform 视口变换——对x、y进行变换
缩放+平移:将[-1,1]的立体缩放变换至[width,height],再平移使左下角为原点

- Title: GAMES101 Transformation 变换
- Author: Rongying Liu
- Created at : 2025-02-27 17:22:31
- Updated at : 2025-03-05 19:56:37
- Link: https://github.com/Roinnnn11/Roinnnn11.github.io/2025/02/27/计算机图形学/变换Transformation/
- License: This work is licensed under CC BY-NC-SA 4.0.
