PMG
https://forum.pmg.org.ru/

glut, изменение координат точек мышкой.
https://forum.pmg.org.ru/viewtopic.php?f=1&t=7632
Страница 1 из 1

Автор:  AHTuBuPyC [ 07 янв 2010 16:21 ]
Заголовок сообщения:  glut, изменение координат точек мышкой.

Есть программа, строящая B-сплайн по заданному массиву точек (Nurbs функциями). Необходимо добавить возможность менять координаты точек мышью. Нужно использовать функцию gluUnProject. Кто с таким сталкивался? Как это реализовать?

Автор:  bad_duck [ 08 янв 2010 11:55 ]
Заголовок сообщения:  Re: glut, изменение координат точек мышкой.

а при чем тут gluUnProject? Как я понял нужно мышкой выделить точку на экране и выделить соответствующую 3д точку.
Если так то нужно использовать gluProject
Вот пример
Код:
double sx,sy,sz;
int px,py;
if(mouse.lbut)
{               
   double model_view[16], projection[16];
   int viewport[4];
   glGetDoublev(GL_MODELVIEW_MATRIX, model_view);     
   glGetDoublev(GL_PROJECTION_MATRIX, projection);   
   glGetIntegerv(GL_VIEWPORT, viewport);

   for(int i=0;i<model.allpoints;i++)   
   {                
       gluProject(model.points1[i].x, model.points1[i].y, model.points1[i].z,  model_view, projection, viewport, &sx, &sy, &sz);                                          
       px=int(sx);      
       py=int(-sy)+WindowH-20-Wheight;   //тут я не понимаю откуда возникает поправка -20 (при  том в разных приложениях она своя),
                                         //так как все высоты (заголовка, рамок и т.д.) я учитываю в Wheight.
                     
       if(PointInRect(px, py))   //тут в своей функции проверяем находится ли она в выделенном мышкой прямоугольнике, или просто проверить равны ли px и py координатам мышки
           model.pselnow[i]=1;  // model.pselnow это bool массив для отметки выделения точек
       else
           model.pselnow[i]=0;
       //ну и всё, дальше делаешь что надо со своей 3д точкой
   }
}


Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/