PMG

Форумы по созданию игр
Текущее время: 07 окт 2024 09:06

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: glut, изменение координат точек мышкой.
СообщениеДобавлено: 07 янв 2010 16:21 
Не в сети
Новичок

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


Последний раз редактировалось AHTuBuPyC 10 янв 2010 16:35, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: glut, изменение координат точек мышкой.
СообщениеДобавлено: 08 янв 2010 11:55 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 04 июл 2008 10:11
Сообщения: 144
Откуда: Питер
а при чем тут 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д точкой
   }
}



Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB