1
我在y = -50平面上有一个四边形。此刻,我想要做的就是获取鼠标点击四边形的坐标。我设法在一定程度上做到了这一点。问题在于绘制四边形时我应用的转换没有考虑到。我可以添加一些常量并使其工作,但我让用户使用glRotatef()围绕x和y轴旋转场景,因此一旦发生旋转,坐标就会变得混乱。Ray gluingProject()采摘
这里是我现在在做什么:
我打电话gluUnProject()两次,第一次与Z = 0,和曾经与Z = 1
gluUnProject(mouseX, WINDOW_HEIGHT - mouseY, 0, modelView, projection, viewport, &x1, &y1, &z1);
gluUnProject(mouseX, WINDOW_HEIGHT - mouseY, 1, modelView, projection, viewport, &x2, &y2, &z2);
标准化光线矢量:
x = x2 - x1;
y = y2 - y1;
z = z2 - z1;
mag = sqrt(x*x + y*y + z*z);
x /= mag;
y /= mag;
z /= mag;
参数方程:
float t = -(camY)/y;
planeX = camX + t*x;
planeY = camY + t*y;
planeZ = camZ + t*z;
其中(camX,camY,camZ)是传递给gluLookAt()的相机位置。
我希望planeX,planeY和planeZ是四边形上点击的坐标,在我用来绘制四边形的同一坐标系中。我怎样才能做到这一点?
您何时抓取modelView矩阵?在`glRotatef()`之前或之后? – genpfault 2010-12-02 16:52:17