在OpenGL中将窗口坐标转换为轴坐标

rfs*_*raz 2 c++ opengl window coordinates

我在OpenGL中创建一个简单的程序,用鼠标绘制矩形.我的目标是单击某处,拖动鼠标并创建一个矩形,就像在绘画或任何其他设计程序中一样.

我的视图定义如下:

glMatrixMode(GL_PROJECTION);
glOrtho(AXIS_X_MIN, AXIS_X_MAX, AXIS_Y_MIN, AXIS_Y_MAX, AXIS_Z_MIN, AXIS_Z_MAX);
Run Code Online (Sandbox Code Playgroud)

和这样定义的窗口:

glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT);
Run Code Online (Sandbox Code Playgroud)

如何将从0到WINDOW_WIDTH以及从0到WINDOW_HEIGHT的窗口坐标转换为轴坐标和相应的象限?

tib*_*bur 5

尝试:

double x = x_mouse / (double) WINDOW_WIDTH 
           * (AXIS_X_MAX - AXIS_X_MIN) + AXIS_X_MIN;
double y = (1 - y_mouse / (double) WINDOW_HEIGHT)
           * (AXIS_Y_MAX - AXIS_Y_MIN) + AXIS_Y_MIN;
Run Code Online (Sandbox Code Playgroud)