在OpenGL中单击鼠标坐标

时间:2015-04-21 22:19:43

标签: 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) * (maxy - miny)) / height ) + miny;

        glVertex2f(cx , cy);
    glEnd();


glPopMatrix();

这是一项大学练习,从屏幕获取坐标的公式是:

Formula to get the coordinate from screen

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

那么,我的代码怎么了?

鼠标功能(我已经测试过,如果鼠标点击工作正常):

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();
}

1 个答案:

答案 0 :(得分:3)

您尚未实施正确引用的公式。尝试

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

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