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/ |