三维坐标系变换

本篇文章讲述三维笛卡尔坐标系的变换

对于3D引擎来说,把一个向量或者点从一个坐标系转换到另一个坐标系是基本的操作,比如一个模型的顶点坐标通常以对象空间的坐标形式保存,而在渲染该模型前,顶点坐标必须变换到虚拟相机空间才能被正确处理,这里就涉及到了坐标系的变换

假设现在有一个坐标系 C 1 C_1 C1,点 P P P在坐标系 C 1 C_1 C1内的坐标为
P = ( x , y , z ) P = (x,y,z) P=(x,y,z)
现在有另一个坐标系 C 2 C_2 C2,点 P P P在坐标系 C 2 C_2 C2内的坐标可以表示为
P = ( x 1 , y 1 , z 1 ) P = (x_1,y_1,z_1) P=(x1,y1,z1)

( x 1 y 1 z 1 1 ) = M ( x y z 1 ) \begin {pmatrix} x_1\\ y_1\\ z_1\\ 1 \end {pmatrix} = M \begin {pmatrix} x\\ y\\ z\\ 1 \end {pmatrix} x1y1z11 =M xyz1
中, 4 × 4 4\times 4 4×4矩阵 M M M就称为坐标系 C 1 C_1 C1到坐标系 C 2 C_2 C2的转换矩阵

假设
M = ( i x , j x , k x , t x i y , j y , k y , t y i z , j z , k z , t z 0 , 0 , 0 , 1 ) M = \begin {pmatrix} i_x&,j_x&,k_x&,t_x\\ i_y&,j_y&,k_y&,t_y\\ i_z&,j_z&,k_z&,t_z\\ 0&,0&,0&,1 \end {pmatrix} M= ixiyiz0,jx,jy,jz,0,kx,ky,kz,0,tx,ty,tz,1

  • i i i列表示坐标系 C 1 C_1 C1的x轴单位向量在坐标系 C 2 C_2 C2中的表示
  • j j j列表示坐标系 C 1 C_1 C1的y轴单位向量在坐标系 C 2 C_2 C2中的表示
  • k k k列表示坐标系 C 1 C_1 C1的z轴单位向量在坐标系 C 2 C_2 C2中的表示
  • t t t列表示坐标系 C 1 C_1 C1的原点在坐标系 C 2 C_2 C2中的表示

根据上面的介绍,我们可以得出对于任何的仿射变换,比如模型空间到世界空间的变换就是仿射变换,我们都可以表示成平移向量和三个正交基向量的组合。

如果我们得到模型空间到世界空间的变换矩阵,我们就能够直接通过变换矩阵获取模型局部坐标系的三个轴在世界空间中的方向。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值