C 在OpenGL中读取鼠标坐标并单击

C 在OpenGL中读取鼠标坐标并单击,c,opengl,math,coordinates,dev-c++,C,Opengl,Math,Coordinates,Dev C++,当我在屏幕上点击一个点并用一个点标记它时,我试图读取鼠标坐标,但它不起作用 float cx = 0, cy = 0; glPushMatrix(); glPointSize(6.0f); //Draw the points glBegin(GL_POINTS); cx = (((x * (maxx + minx))) / width) + minx; cy = (((-1 * pow((y - height), width

当我在屏幕上点击一个点并用一个点标记它时,我试图读取鼠标坐标,但它不起作用

     float cx = 0, cy = 0;

 glPushMatrix(); 
    glPointSize(6.0f);
    //Draw the points
    glBegin(GL_POINTS);
        cx = (((x * (maxx + minx))) / width) + minx;
        cy = (((-1 * pow((y - height), width) * (maxy - miny)) / height ) + miny;

        glVertex2f(cx , cy);
    glEnd();


glPopMatrix();
这是一个大学练习,从屏幕获得坐标的公式是:

Px和Py是mouseFunc传递给此函数的坐标。 w和h是屏幕的宽度和高度(我从重塑中获得) maxx,maxy,minx,miny。。。是正交坐标

那么,我的代码有什么问题

鼠标功能(我已经测试过鼠标点击是否有效,是否有效):


您没有正确执行您引用的公式。试一试

cx = x * (maxx - minx) / width + minx;
cy = (height - y) * (maxy - miny) / height + miny;

两个显著的差异是第一个表达式中的
(maxx-minx)
,以及您误读第二行并认为上面一行的除数
w
是第二行的幂。

您没有正确实现您引用的公式。试一试

cx = x * (maxx - minx) / width + minx;
cy = (height - y) * (maxy - miny) / height + miny;

两个显著的差异是第一个表达式中的
(maxx-minx)
,以及您误读第二行并认为上面一行的除数
w
是第二行的幂。

您没有正确实现您引用的公式。试一试

cx = x * (maxx - minx) / width + minx;
cy = (height - y) * (maxy - miny) / height + miny;

两个显著的差异是第一个表达式中的
(maxx-minx)
,以及您误读第二行并认为上面一行的除数
w
是第二行的幂。

您没有正确实现您引用的公式。试一试

cx = x * (maxx - minx) / width + minx;
cy = (height - y) * (maxy - miny) / height + miny;


两个显著的区别是第一个表达式中的
(maxx-minx)
,你误读了第二行,认为上面一行的除数
w
是第二行的幂。

你也可以发布你得到鼠标坐标的部分吗?为什么代码会调用'pow()“system function?”@user3629249,并且也只有一个参数……如前所述,该行应该抛出语法错误@duskwuff,很抱歉,因为我编辑了问题,忘了打开pow函数的模板。它不在真实的代码中。你也可以发布你得到鼠标坐标的部分吗?为什么代码会调用'pow()'系统函数?@user3629249,并且也有一个参数……如前所述,该行应该抛出语法错误@duskwuff,很抱歉,因为我编辑了问题,忘了打开pow函数的模板。它不在真实的代码中。你也可以发布你得到鼠标坐标的部分吗?为什么代码会调用'pow()'系统函数?@user3629249,并且也有一个参数……如前所述,该行应该抛出语法错误@duskwuff,很抱歉,因为我编辑了问题,忘了打开pow函数的模板。它不在真实的代码中。你也可以发布你得到鼠标坐标的部分吗?为什么代码会调用'pow()'系统函数?@user3629249,并且也有一个参数……如前所述,该行应该抛出语法错误@duskwuff,很抱歉,因为我编辑了问题,忘了打开pow函数的模板。这不是真正的代码。谢谢你的风向标!;)谢谢你的风向标!;)谢谢你的风向标!;)谢谢你的风向标!;)