如何将3d世界坐标转换为3d相机坐标

时间:2014-10-20 06:53:35

标签: python math matrix 3d coordinate-systems

我在世界坐标系中有一个输入的3D矢量点。任何人都可以描述或提供资源的链接,这将帮助我理解并实现所需的转换和矩阵映射以转换为相机坐标吗? 这张http://www.mathworks.in/help/matlab/visualize/chview3.gif的图片 我知道这个图像中的视点坐标是世界坐标,它们转换成相机坐标

1 个答案:

答案 0 :(得分:0)

您必须应用两个数学运算:

  1. 按视点坐标移动所有坐标 - 但方向相反。在此之后,视点是新的原点,并且所有坐标都根据它来表示。
  2. 示例('|'仅表示向量括号)

    |x'|   |x| - |x_vp|
    |y'| = |y| - |y_vp|
    |z'|   |z| - |z_vp|
    
    1. 旋转坐标。例如首先是Z,然后是Y.这是通过两个旋转矩阵完成的:
    2. Z:

      |x''|   | cos a    -sin a    0 |   |x'|
      |y''| = | sin a     cos a    0 | * |y'|
      |z''|   |  0         0       1 |   |z'|
      

      Y:

      |x'''|   | cos b    0    -sin b |   |x''|
      |y'''| = |  0       1      0    | * |y''|
      |z'''|   | sin b    0     cos b |   |z''|
      

      例如,如果您的VP位于(1,1,1),则首先将其移位,使旧原点位于(-1,-1,-1)。相机仍然朝向正x方向,因此您将围绕z旋转225度(现在在旧z轴上点样)然后在y周围旋转45度以直接在旧原点上进行旋转。

      但是,您不要旋转相机,而是旋转相机周围的整个空间,因此您必须将角度乘以-1。

      您可以在http://en.wikipedia.org/wiki/Rotation_matrix

      找到更多信息

      如果您不知道矩阵乘法,那么第一章就会显示它。