Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

OpenGL, C++, преобразование координат, зумирование

26K
24 декабря 2007 года
#Максим
9 / / 03.05.2007
Всем здравствуйте.
Подскажите, пожалуйста, кто знает:

Нужно сделать масштабирование изображения таким образом, чтобы увеличение/уменьшение происходило относительно точки, указанной в данный момент курсором. Делаю в событиях FormMouseWheelUp/Down:
Код:
GLdouble wx,wy,wz, wx1,wy1,wz1;
  GLint    viewport[4];    
  GLdouble projection[16];
  GLdouble modelview[16];  

  glGetIntegerv(GL_VIEWPORT,viewport);  // параметры матриц 1
  glGetDoublev(GL_PROJECTION_MATRIX,projection);
  glGetDoublev(GL_MODELVIEW_MATRIX,modelview);

gluUnProject(XX,YY,0,
modelview,projection,viewport, &wx,&wy,&wz); // координаты 1

glScaled(1.1, 1.1, 1); // масштабирую (для Down 1/1.1 соответственно)

  glGetIntegerv(GL_VIEWPORT,viewport); // параметры матриц 2
  glGetDoublev(GL_PROJECTION_MATRIX,projection);
  glGetDoublev(GL_MODELVIEW_MATRIX,modelview);

gluUnProject(XX,YY,0,
modelview,projection,viewport, &wx1,&wy1,&wz1); // координаты 2

glTranslated(wx1-wx,wy1-wy,0); // сдвиг на прежние координаты


По оси X все работает на УРА, по оси Y эффект обратный. Для проверки снимал GL-координаты в событии MouseMove - оси сдвигаются куда нужно. А зрительно эффект по осям разный:
для Up по X - отдаление от курсора, по Y - почему-то приближение;
для Down по Х - приближение к курсору, по Y - наоборот.

Что не так? Или, может, другие функции нужно использовать?
26K
25 декабря 2007 года
#Максим
9 / / 03.05.2007
Понял, в чем причина и не понимаю - откуда такое и как с этим бороться:
сдвигается сама ось Y. У меня там перекрестье (0,0) нарисовано, так по Х ноль остается в перекрестье, а по Y смещается!!
26K
28 декабря 2007 года
#Максим
9 / / 03.05.2007
всего лишь нужно было учесть, то, что оконная координата Y перевернута:) тема закрыта.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог