旋转
2D旋转
\[
2d构造矩阵: R(\theta) = \begin{bmatrix} p^` \\q^` \end{bmatrix} =
\begin{bmatrix} \cos\theta & \sin\theta\\-\sin\theta &\cos\theta
\end{bmatrix}, p 为x轴旋转, q为y轴旋转。
\]3D旋转,
绕轴旋转区分旋转方向,
左手法则,手握旋转轴,拇指朝向正方向,四指绕向为正左手坐标系 右手坐标系 从哪边看 正方向|负方向 正方向| 负方向 从负端向正端看 逆时针|顺时针 顺时针|逆时针 从正端向负端看 顺时针|逆时针 逆时针|顺时针 绕着x轴旋转,(此时等于旋转 yz 组成的2d笛卡尔坐标系,而x轴不变,因此构造矩阵如下:)
\[
绕x旋转的构造矩阵: R(\theta) = \begin{bmatrix} p^`\\q^` \\r^`
\end{bmatrix} = \begin{bmatrix} 1&0&0\\0&\cos\theta &
\sin\theta\\0&-\sin\theta &\cos\theta \end{bmatrix}, p
为x轴旋转, q为y轴旋转,r为z轴旋转。
\]
绕y旋转类似,(此时等于旋转 xz 组成的2d笛卡尔坐标系,而y轴不变,因此构造矩阵如下:) \[ 绕y旋转的构造矩阵: R(\theta) = \begin{bmatrix} p^`\\q^` \\r^` \end{bmatrix} = \begin{bmatrix} \cos\theta&0&-\sin\theta\\ 0& 1&0 \\ \sin\theta &0&\cos\theta \end{bmatrix}, p 为x轴旋转, q为y轴旋转,r为z轴旋转。 \]
绕z旋转类似,(此时等于旋转 xy 组成的2d笛卡尔坐标系,而z轴不变,因此构造矩阵如下:) \[ 绕y旋转的构造矩阵: R(\theta) = \begin{bmatrix} p^`\\q^` \\r^` \end{bmatrix} = \begin{bmatrix} \cos\theta&\sin\theta&0\\ -\sin\theta &\cos\theta &0 \\ 0& 0& 1 \end{bmatrix}, p 为x轴旋转, q为y轴旋转,r为z轴旋转。 \]
绕任意方向,不依赖旋转轴旋转,原理类似,忽略推到,公式如下: \[ R(n, \theta),代表 绕n方向旋转 \theta. \]
\[ R(n,\theta) = \begin{bmatrix} p^`\\q^` \\r^` \end{bmatrix} = \begin{bmatrix} n_x^2(1-\cos\theta)+ \cos\theta& n_xn_y(1-\cos\theta)+n_z\sin\theta&n_xn_z(1-\cos\theta)-n_y\sin\theta\\ n_xn_y(1-\cos\theta)-n_x\sin\theta& n_y^2 (1-\cos\theta)+ \cos\theta&n_yn_z(1-\cos\theta)-n_x\sin\theta\\ n_xn_z(1-\cos\theta)+n_y\sin\theta& n_yn_z(1-\cos\theta)-n_x\sin\theta&n_z^2 (1-\cos\theta)+ \cos\theta\\ \end{bmatrix} \]
缩放
沿坐标轴缩放 \[ S(k_x, k_y, k_z) = \begin{bmatrix} k_x & 0 &0\\ 0&k_y&0\\ 0&0&k_z \end{bmatrix} \]
沿任意方向,不依赖旋转轴缩放 \[ R(n, k),代表 绕n方向缩放 k. \]
\[ S(n,k) = \begin{bmatrix} p^`\\q^` \\r^` \end{bmatrix} = \begin{bmatrix} 1+(k-1)n_x^2& (k-1)n_xn_y& (k-1)n_xn_z\\ (k-1)n_xn_y& 1+(k-1)n_y^2& (k-1)n_yn_z\\ (k-1)n_xn_z& (k-1)n_zn_y& 1+(k-1)n_z^2 \end{bmatrix} \]
正交投影 > 一般来说投影意味着降维操作,例如3d赋值给2d,抛弃z。(正交、平行、透视投影)
- 向x轴投影,保留x为1, 舍弃部分置0 \[ P_x = S(\begin{bmatrix}0&1\end{bmatrix} ,0) = \begin{bmatrix} 1&0\\0&0 \end{bmatrix} \]
- 同理y轴投影 \[ P_y = S(\begin{bmatrix}1&0\end{bmatrix} ,0) = \begin{bmatrix} 0&0\\0&1 \end{bmatrix} \]
- 向xy投影 \[ P_{xy} = S(\begin{bmatrix}0&0&1\end{bmatrix} ,0) = \begin{bmatrix} 1&0&0\\0&1&0\\0&0&0 \end{bmatrix} \]
- 向xz投影 \[
P_{xz} = S(\begin{bmatrix}0&1&0\end{bmatrix} ,0) =
\begin{bmatrix} 1&0&0\\0&0&0\\0&0&1\end{bmatrix}
\]
- 向yz投影 \[ P_{yz} = S(\begin{bmatrix}1&0&0\end{bmatrix} ,0) = \begin{bmatrix} 0&0&0\\0&1&0\\0&0&1\end{bmatrix} \]
- 向任意平面投影 \[
P(n) = S(n, 0), n代表任意直线/平面
\]
\[ P(n) = S(n,0) = \begin{bmatrix} 1+(0-1)n_x^2& (0-1)n_xn_y& (0-1)n_xn_z\\ (0-1)n_xn_y& 1+(0-1)n_y^2& (0-1)n_yn_z\\ (0-1)n_xn_z& (0-1)n_zn_y& 1+(0-1)n_z^2 \end{bmatrix} \]
镜像
翻折- 2D \[
P(n) = S(n,-1) = \begin{bmatrix}
1+(-1-1)n_x^2& (-1-1)n_xn_y\\
(-1-1)n_xn_y& 1+(-1-1)n_y^2\\
(-1-1)n_xn_z& (-1-1)n_zn_y
\end{bmatrix}
\]
- 3D \[ P(n) = S(n,-1) = \begin{bmatrix} 1+(-1-1)n_x^2& (-1-1)n_xn_y& (-1-1)n_xn_z\\ (-1-1)n_xn_y& 1+(-1-1)n_y^2& (-1-1)n_yn_z\\ (-1-1)n_xn_z& (-1-1)n_zn_y& 1+(-1-1)n_z^2 \end{bmatrix} = \begin{bmatrix} 1-2n_x^2& -2n_xn_y&-2n_xn_z\\ -2n_xn_y& -2n_y^2&-2n_yn_z\\ -2n_xn_z& -2n_zn_y&-2n_z^2\\ \end{bmatrix} \]
- 2D \[
P(n) = S(n,-1) = \begin{bmatrix}
1+(-1-1)n_x^2& (-1-1)n_xn_y\\
(-1-1)n_xn_y& 1+(-1-1)n_y^2\\
(-1-1)n_xn_z& (-1-1)n_zn_y
\end{bmatrix}
\]
切变,
(非均匀地拉伸它,角度发生变化,面积和体积不变)
\[ x^` = x + sy, s为变化因子。 H_x(s) =\begin{bmatrix}1&0\\s&1\end{bmatrix}, x 随着y被切变,s控制方向和量 \]\[ 另一种变换 H_y。 H_y(s) =\begin{bmatrix}1&s\\0&1\end{bmatrix}, x 随着y被切变,s控制方向和量 \]
3D切变
3d中的切变是取出一个坐标乘以不同的因子,再加到其他坐标上,H_{xy} 意义是 xy坐标被z改变,
\[ H_{xy}(s) =\begin{bmatrix}1&0&0\\0&1&0\\s&t&1\end{bmatrix} \]
\[ H_{xz}(s) =\begin{bmatrix}1&0&0\\s&1&t\\0&0&1\end{bmatrix} \]
\[ H_{yz}(s) =\begin{bmatrix}1&s&t\\0&1&0\\0&0&1\end{bmatrix} \]
组合变换
坐标系组合变换 \[ P_{世界} = P_{物体}M_{物体\rightarrow世界} \]
\[ P_{相机} = P_{世界}M_{世界\rightarrow相机} = (P_{物体}M_{物体\rightarrow世界})M_{世界\rightarrow相机} = P_{物体}(M_{物体\rightarrow世界}M_{世界\rightarrow相机}) \]
\[ M_{物体\rightarrow相机} = M_{物体\rightarrow世界}M_{世界\rightarrow相机} \]
\[ P_{相机} =P_{物体}M_{物体\rightarrow相机} \]
变换分类
- 线性变换
- 仿射变换(线性变换超集)
- 可逆变换 (奇异矩阵不可逆,行列式不为0)
- 等角变换 (夹角大小方向不变,所有等角变换都是可逆,仿射变换)
- 正交变换 (垂直变换,切不缩放)
- 刚体变换
4x4齐次矩阵
矩阵形式的优缺点
- 优点
- 可立即变换
- 被图形api使用
- 多个角位移连接
- 矩阵的逆
- 缺点
- 占用更多内存
- 使用难度
- 可能多余数据的累赘
- 优点