[英]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.