haitian

11-28-2005, 09:14 PM

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!

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!