GAMES101-现代计算机图形学学习笔记(04)
Lecture 04 Transformation
原课程视频链接以及官网
b站视频链接: link.
课程官网链接: link.
三维变换
定义
根据二维的定义,三维坐标和向量同样可以根据如下公式定义:
3 D 3 D 3D point = ( x , y , z , 1 ) ⊤ =(x, y, z, 1)^{\top} =(x,y,z,1)⊤
3 D 3 D 3D vector = ( x , y , z , 0 ) ⊤ =(x, y, z, 0)^{\top} =(x,y,z,0)⊤
齐次坐标定义如下,本质是先做线性变换再做平移变换。
( x ′ y ′ z ′ 1 ) = ( a b c t x d e f t y g h i t z 0 0 0 1 ) ⋅ ( x y z 1 ) \left(\begin{array}{l} x^{\prime} \\ y^{\prime} \\ z^{\prime} \\ 1 \end{array}\right)=\left(\begin{array}{llll} a & b & c & t_{x} \\ d & e & f & t_{y} \\ g & h & i & t_{z} \\ 0 & 0 & 0 & 1 \end{array}\right) \cdot\left(\begin{array}{l} x \\ y \\ z \\ 1 \end{array}\right) ⎝⎜⎜⎛x′y′z′1⎠⎟⎟⎞=⎝⎜⎜⎛adg0beh0cfi0txtytz1⎠⎟⎟⎞⋅⎝⎜⎜⎛xyz1⎠⎟⎟⎞
几种变换
缩放
相对于原点缩放矩阵 S S S 为:
S ( s x , s y , s z ) = ( s x 0 0 0 0 s y 0 0 0 0 s z 0 0 0 0 1 ) \mathbf{S}\left(s_{x}, s_{y}, s_{z}\right)=\left(\begin{array}{cccc} s_{x} & 0 & 0 & 0 \\ 0 & s_{y} & 0 & 0 \\ 0 & 0 & s_{z} & 0 \\ 0 & 0 & 0 & 1 \end{array}\right) S(sx,sy,sz)=⎝⎜⎜⎛sx0000sy0000sz00001⎠⎟⎟⎞
相对于某点 p ( x , y , z ) p(x,y,z) p(x,y,z) 的缩放矩阵 S S S 为(先将坐标移到原点,再缩放,再移回,其组合矩阵如下):
[ s x 0 0 0 0 s y 0 0 0 0 s z 0 ( 1 − s x ) x ( 1 − s y ) y ( 1 − s z ) z 1 ] \left[\begin{array}{cccc} s_{x} & 0 & 0 & 0 \\ 0 & s_{y} & 0 & 0 \\ 0 & 0 & s_{z} & 0 \\ \left(1-s_{x}\right) x & \left(1-s_{y}\right) y & \left(1-s_{z}\right) z & 1 \end{array}\right] ⎣⎢⎢⎡sx00(1−sx)x0sy0(1−sy)y00sz(1−sz)z0001⎦⎥⎥⎤
平移
平移矩阵 T T T 为:
T ( t x , t y , t z ) = ( 1 0 0 t x 0 1 0 t y 0 0 1 t z 0 0 0 1 ) \mathbf{T}\left(t_{x}, t_{y}, t_{z}\right)=\left(\begin{array}{cccc} 1 & 0 & 0 & t_{x} \\ 0 & 1 & 0 & t_{y} \\ 0 & 0 & 1 & t_{z} \\ 0 & 0 & 0 & 1 \end{array}\right) T(tx,ty,tz)=⎝⎜⎜⎛