画面上のマウスクリックから3D空間への光線を追跡しようとしています。私が理解していることから、デフォルトの位置と向きは次のようになります。
このコードから:
GLint viewport[4];
GLdouble modelview[16];
GLdouble projection[16];
GLfloat winX, winY;
GLdouble near_x, near_y, near_z;
GLdouble far_x, far_y, far_z;
glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
glGetDoublev( GL_PROJECTION_MATRIX, projection );
glGetIntegerv( GL_VIEWPORT, viewport );
winX = (float)mouse_x;
winY = (float)viewport[3] - (float)mouse_y;
gluUnProject(winX, winY, 0.0, modelview, projection, viewport, &near_x, &near_y, &near_z);
gluUnProject(winX, winY, 1.0, modelview, projection, viewport, &far_x, &far_y, &far_z);
私の質問は、すべてのマウス クリックが 3D 空間でのカメラの位置と角度からのものであるように見えるように、ニア プレーンとファー プレーンの位置と角度をどのように変更するのかということです。
具体的には、(0,0,1) -> (0,0,-tan(65°)) [-tan (65°) ~= -2.145] これらの点を通るビュー ラインに対して、近距離および遠距離の両方の面が垂直になります。