2015-04-21 5 views
0

Я пытаюсь прочитать координату мыши, когда я нажимаю в точке на экране и отмечаю ее точкой, но It'isn't не работает.Прочитать координаты мыши в OpenGL

 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 перейти к этой функции. ш и ч ширина и высота экрана (я получаю это от RESHAPE) Maxx, Maxy, распутница, 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(); 
} 
+0

Не могли бы вы также разместить часть, в которой вы получаете координаты мыши? –

+0

Почему код, вызывающий системную функцию 'pow()? – user3629249

+0

@ user3629249 И с одним аргументом тоже ... как написано, эта строка должна вызывать синтаксическую ошибку! – duskwuff

ответ

3

Вы не ввели формулу вы правильно цитировал. Попробуйте

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

Два существенных различий являются (maxx - minx) в первом выражении, и ваши искажениях второй линии и мышление делителя w на выше линии является мощностью для второй линии.

+0

Благодарим Weather Vane! ;) –

Смежные вопросы