世界坐标空间与观察坐标系之间的转换
1.世界坐标空间与观察坐标系之间的转换
已知:观察坐标系相对世界坐标系的u,v,w轴与起点q,将世界坐标系中一点变换到观察坐标系
使用左手坐标系推导
- u = ( ux , uy , uz , 0 )
- v = ( vx , vy , vz , 0 )
- w = (wx , wy , wz , 0 )
- q = ( qx , qy , qz , 1 )
观察坐标系中的点可以表示为:
p = au+bv+cw+q
即为 (a,b,c,1)
展开上述公式
p = a * ux * x + a * uy * y + a * uz * z + 0 * w
b * vx * x + b * vy * y + b * vz * z + 0 * w
c * wx * x + c * wy * y + c * wz * z + 0 * w
1 * qx * x + 1 * qy * y + 1 * qz * z + 1 * w
= ( a * ux + b * vx + c * wx + qx) x+
( a * uy + b * vy + c * wy + qy) y+
( a * uz + b * vz + c * wz + qz) z +
w
ux uy uz 0 x
= ( a , b , c , 1 ) ( vx vy vz 0 )( y )
wx wy wz 0 z
qx qy qz 1 w
世界坐标系中的点可以表示为
x
p' = a'x+b'y+c'z + w = ( a', b', c' , 1) *( y )
z
w
p与p'是同一点,只是表示相对坐标系不同,因此有
p = p'
通常情况下,我们是确保u,v,w相互垂直,因此有第二步的等式,因为其为正交矩阵,矩阵的逆等于矩阵的转置。
因此我们得到世界坐标到观察坐标系之间的转化
其中[a b c 1]表示观察坐标系中的点
[a' b' c' 1]表示世界坐标系中的点
- u = ( ux , uy , uz , 0 )
- v = ( vx , vy , vz , 0 )
- w = (wx , wy , wz , 0 )
- q = ( qx , qy , qz , 1 )
u,v,w分别为观察坐标系的x,y,z轴在世界坐标系的表示,q表示观察坐标系原点在世界坐标系中的表示。
在游戏场景中,我们的摄像机通常会给出一个指点的位置Q,看向目标位置T,
通过上述三个公式,u,v,w可以轻易的计算出来,整个变化矩阵也就推导出来了。
参考资料: