从窗口到opengl坐标系直观说明

时间:2014-11-06 21:30:27

标签: opengl

使用鼠标功能时,我试图了解从窗口坐标轴(原点左上角)到OpenGL坐标轴(原点左下角)的地图。在相关书中,这个地图由以下两行描述:

points[count].x = (float) x / (w/2) - 1.0;
points[count].y = (float) (h-y) / (h/2) - 1.0;

我怀疑这两行描绘了一个比例。你能否对这张地图进行直观的数学解释?

1 个答案:

答案 0 :(得分:2)

你指的是什么书? NDC空间中的原点是视口的中心( 0,0 是中心; -1,-1 是左下角; 1, 1 是右上角)。任何其他坐标空间由投影矩阵定义。

我相信本书试图教你的是 NDC -1,-1 是视口的左下角, NDC < / strong> 1,1 是右上角。

更完整的映射将包括视口的X和Y位置:

  • NDC X =(2.0 *(Screen X - Viewport X )/ Viewport W ) - 1.0;

  • NDC Y =(2.0 *(Screen Y - Viewport Y )/ Viewport H ) - 1.0;

This mapping如下所示(右侧的方格是视口):

http://upload.wikimedia.org/wikipedia/commons/2/23/Viewport_transformation.png

您当然还需要一个额外的步骤,因为Y轴在鼠标坐标系中的运行方向相反。这就是为什么您在映射h-y

中看到Y轴翻转的原因