世界坐标空间与观察坐标系之间的转换

Posted 风轻云淡走天涯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了世界坐标空间与观察坐标系之间的转换相关的知识,希望对你有一定的参考价值。

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可以轻易的计算出来,整个变化矩阵也就推导出来了。
 
参考资料:

以上是关于世界坐标空间与观察坐标系之间的转换的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL入门(四)-- OpenGL坐标系与坐标变换

unity 坐标变化

OpenGL里的坐标系统以及其变换

关于Unity中坐标系的种类

THREE.js:如何计算有多少个屏幕像素代表1个世界坐标单位

将鼠标坐标转换为世界空间坐标