Hello,all
Now ,I meet with a problem about mouse position, the problem is as follows:
First ,I draw a plane in the scene, now I want to press mouse button down on the plane to draw a point at the right position on this plane, I think the points on the radial which is from the camera to the mouse position should be drawn at the same pixel on the screen .here is my main program:
gluPerspective(45.0, (GLfloat)cx/(GLfloat)cy, 8.0f,40.0); //projection matrix
gluLookAt(0.0,15.0,15.0,0.0,0.0,0.0,0.0,1.0,0.0); //view transformation
// glRotatef(-40.0, 1.0, 0.0, 0.0);
glGetDoublev(GL_MODELVIEW_MATRIX, dmatModelview);
glGetDoublev(GL_PROJECTION_MATRIX, dmatProjection);
glGetIntegerv(GL_VIEWPORT, viewport);
y = viewport[3] - point1.y;
glReadPixels(point1.x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &fWindowZ);
gluUnProject((GLdouble) point1.x, (GLdouble) y, (GLdouble) fWindowZ,dmatModelview, dmatProjection, viewport,&dWorldX, &dWorldY, &dWorldZ)
first ,I comment the glRotate() command,
then I define a line which pass (0.0,0.0,0.0) and (dWorldX,dWorldY-15.0,dWorldZ-15.0);
a plane y=-15.01,and solve the equations ,and I get the point of intersectin(x,y,z);
then make (x,y+15.0,z+15.0) as the mouse button down position ,and I can draw a point on the plane at the button down position. but when I add the glRotate ,make the vector(0,15.0,15.0)as
1 0 0 0 0
0 cos40 -sin40 0 15.0
0 sin40 cos40 0 * 15.0
0 0 0 1 1
and similarly generate interpoint as above .But I can’t draw a point at the right position. i am so confused ,would you please help me ?thank you very much!