坐标系转换矩阵简单说明

在渲染开始前,从local space转换到world space,再转换到camera space,使用矩阵变换

变换矩阵

先给出变换矩阵

[ x p y p z p 1 ] = [ 1 0 0 x e 0 1 0 y e 0 0 1 z e 0 0 0 1 ] [ x u x v x w 0 y u y v y w 0 z u z v z w 0 0 0 0 1 ] [ u p v p w p 1 ] p x y z = [ u v w 0 0 0 0 1 ] p u v w \begin{bmatrix} x_p \\ y_p \\ z_p \\ 1 \\ \end{bmatrix} = \\ \begin{bmatrix} 1 & 0 & 0 & x_e \\ 0 & 1 & 0 & y_e \\ 0 & 0 & 1 & z_e \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} x_u & x_v & x_w & 0 \\ y_u & y_v & y_w & 0 \\ z_u & z_v & z_w & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} u_p \\ v_p \\ w_p \\ 1 \\ \end{bmatrix} \\ p_{xyz}= \begin{bmatrix} u & v & w & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} p_{uvw}\\ xpypzp1=100001000010xeyeze1xuyuzu0xvyvzv0xwywzw00001upvpwp1pxyz=[u0v0w001]puvw
and
[ u p v p w p 1 ] = [ x u y u z u 0 x v y v z v 0 x w y w z w 0 0 0 0 1 ] [ 1 0 0 − x e 0 1 0 − y e 0 0 1 − z e 0 0 0 1 ] [ x p y p z p 1 ] p u v w = [ u v w 0 0 0 0 1 ] − 1 p x y z \begin{bmatrix} u_p \\ v_p \\ w_p \\ 1 \\ \end{bmatrix} = \\ \begin{bmatrix} x_u & y_u & z_u & 0 \\ x_v & y_v & z_v & 0 \\ x_w & y_w & z_w & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 & -x_e \\ 0 & 1 & 0 & -y_e \\ 0 & 0 & 1 & -z_e \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} x_p \\ y_p \\ z_p \\ 1 \\ \end{bmatrix} \\ p_{uvw}= \begin{bmatrix} u & v & w & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} ^{-1} p_{xyz}\\ upvpwp1=xuxvxw0yuyvyw0zuzvzw00001100001000010xeyeze1xpypzp1puvw=[u0v0w001]1pxyz

对于点 p p p,其中 p u v w p_{uvw} puvw u v w uvw uvw 坐标系下的坐标, p x y z p_{xyz} pxyz x y z xyz xyz 坐标系下的坐标。 u v w uvw uvw 坐标系的坐标原点在 x y z xyz xyz 坐标系下的坐标为 e = ( x e , y e , z e ) e=(x_e,y_e,z_e) e=(xe,ye,ze) u v w uvw uvw坐标系的基底向量在 x y z xyz xyz坐标系下分别是 u = ( x u , y u , z u ) 、 v = ( x v , y v , z v ) 、 w = ( x w , y w , z w ) u=(x_u,y_u,z_u)、v=(x_v,y_v,z_v)、w=(x_w,y_w,z_w) u=(xu,yu,zu)v=(xv,yv,zv)w=(xw,yw,zw)

参考文献

[1] Fundamentals of Computer Graphics, Fourth Edition

你可能感兴趣的:(计算机图形学)