繁体   English   中英

在OpenGL中将Window坐标转换为Axis坐标

[英]Converting Window coordinates to Axis coordinates in OpenGL

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

我有一个像这样定义的视图:

glMatrixMode(GL_PROJECTION);
glOrtho(AXIS_X_MIN, AXIS_X_MAX, AXIS_Y_MIN, AXIS_Y_MAX, AXIS_Z_MIN, AXIS_Z_MAX);

和这样定义的窗口:

glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT);

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

尝试:

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;

如果您不想手工计算,可以随时查看这篇小文章,该文章利用了GLU库中的函数在内部进行此操作。

http://steinsoft.net/index.php?site=Programming/Code%20Snippets/OpenGL/no8

gluUnProject —将地图窗口坐标转换为对象坐标。 老实说,我几乎不知道它是如何工作的。 您可以在此处查看: OpenGL-gluUnProject

另外,如果您尝试这样做,它应该可以工作:

float coorX = mouseX * width / WINDOW_WIDTH + AXIS_X_MIN;  
float coorY = mouseY * heigth/ WINDOW_HEIGHT + AXIS_Y_MIN;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM