理解数学:转换世界坐标以查看坐标

时间:2016-03-03 20:41:13

标签: opengl math matrix coordinates transform

我试图理解从世界坐标到视图坐标的转换背后的数学。 这是在视图坐标中计算矩阵的公式:

enter image description here

这是一个例子,通常应该是正确的......: enter image description here

其中b =视口的宽度,h =视口的高度

但我不知道如何计算R矩阵。你怎么得到Ux,Uy,Uz,Vx,Vy等......? U,v和n是固定在摄像机上的坐标系。相机位于X0,Y0,Z0位置。

1 个答案:

答案 0 :(得分:1)

首先应用矩阵T.它将一些世界坐标 P 转换为减去相机坐标(称之为 C ),给出相对坐标相对于相机 P (称之为 Q )( Q = P - C ),在 world 轴方向。

然后将矩阵R应用于 Q 。它执行旋转以获得摄像机轴中 Q 的坐标。

  • u 是水平视轴
  • v 是垂直视轴
  • n 是视图方向轴

(所有三个都应该标准化)

将R乘以 Q

  1. 乘以R的第一行得到DOT( Q u )。这会将 Q 的组件返回到 u ,这是水平视图坐标。
  2. 第二行给出了DOT( Q v ),与上面类似,给出了垂直视图坐标。
  3. 第三行给出DOT( Q n ),这是深度视图坐标。
  4. 图表: enter image description here

    BTW这些不是屏幕/视口坐标!它们只是相机/视图框架中的坐标。要获得经过透视校正的坐标,需要应用另一个矩阵(投影矩阵)。