【问题标题】:Read mouse coordinates click in OpenGL在OpenGL中读取鼠标坐标单击
【发布时间】:2015-06-29 07:43:07
【问题描述】:

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

     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 是屏幕的宽度和高度(我从 reshape 得到它) maxx, maxy, minx, miny...是正坐标

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

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

void mouse(int button, int state, int x, int y){
 switch(button){
       case GLUT_LEFT_BUTTON:
            if(state == GLUT_DOWN)
                      exerciseThree(x, y);
       break;         
 }    

 glutPostRedisplay();
}

【问题讨论】:

  • 能不能把获取鼠标坐标的部分也贴出来?
  • 为什么代码会调用'pow()'系统函数?
  • @user3629249 还有一个参数……正如所写的那样,该行应该会引发语法错误!
  • @duskwuff,对不起这是因为我编辑了问题并忘记打开 pow 函数的括号。它不在真正的代码中。

标签: c opengl math coordinates dev-c++


【解决方案1】:

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

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

两个显着的区别是第一个表达式中的(maxx - minx),而您误读了第二行并认为上面一行中的除数w 是第二行的力量。

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    相关资源
    最近更新 更多