Обитатель форума
201 / 184 / 54
Регистрация: 28.10.2012
Сообщений: 543
1

Преобразование координат

04.09.2014, 08:45. Показов 1023. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Помогите преобразовать координаты с помощью gluUnProject (или альтернатив) в перспективной проекции. В орто преобразует нормально, а в перспективе нет.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
    if (m_bRightBtn)
    {
        GLdouble posX, posY, oldX, oldY, dummy;
 
        GLint    viewport[4];
        GLdouble modelview[16];
        GLdouble projection[16];
 
        glGetDoublev(  GL_MODELVIEW_MATRIX, modelview );
        glGetDoublev(  GL_PROJECTION_MATRIX, projection );
        glGetIntegerv( GL_VIEWPORT, viewport );
 
        if (m_bIsPerspective)
        {
            gluUnProject(mouse_x, mouse_y, 1, modelview, projection, viewport, &oldX, &oldY, &dummy);
            gluUnProject(pos.first, pos.second, 1, modelview, projection, viewport, &posX, &posY, &dummy);
 
            m_dTranslateX += (posX - oldX);
            m_dTranslateY -= (posY - oldY);
        }
        else
        {
            GLdouble identity[16]=
            {
                1,0,0,0,
                0,1,0,0,
                0,0,1,0,
                0,0,0,1
            };
 
            gluUnProject(mouse_x, mouse_y, 0, identity, projection, viewport, &oldX, &oldY, &dummy);
            gluUnProject(pos.first, pos.second, 0, identity, projection, viewport, &posX, &posY, &dummy);
 
            m_dTranslateX += (posX - oldX);
            m_dTranslateY -= (posY - oldY);
        }
    }
 
    mouse_x = pos.first;
    mouse_y = pos.second;
 
    InvalidateRect(m_hAppWindow, NULL, false);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.09.2014, 08:45
Ответы с готовыми решениями:

Преобразование оконных координат в левые
Вот я хочу написать морской бой,и нужно что бы при нажатии мышки проверялось поле.Но при...

Преобразование координат мыши в мировые координаты
Привет всем! Начал писать 3d игру и возникла проблема: преобразование координат. Дело в том, что я...

(OpenGL)Преобразование координат с помошью gluUnProject()
Уважаемые форумчане, делаю проект определение изоморфичности двух графов на OpenGL с помошью...

Луч выбора (преобразование экранных координат в координаты сцены)
Хочу поделиться знанием связанным с получением луча выбора (преобразование экранных координат в...

2
3417 / 1604 / 236
Регистрация: 26.02.2009
Сообщений: 7,851
Записей в блоге: 5
06.09.2014, 01:29 2
Afflicted, почему вы при орто используете identity, а в перспективе modelview?
Третий параметр gluUnProject тоже разный.
Может стОит уравнять шансы?

Было бы не плохо рассказать что конкретно вы хотите преобразовать. Ведь под курсором может находится множество объектов на разной глубине. И если в орто проекции глубина не влияет на другие 2 координаты на экране, то с перспективной всё немного сложнее.
0
Обитатель форума
201 / 184 / 54
Регистрация: 28.10.2012
Сообщений: 543
06.09.2014, 10:43  [ТС] 3
Четвёртым параметром функции gluUnProject идёт modelview-матрица, но так как нам нужно преобразование в видовые, а не объектные координаты, то мы передаём туда единичную матрицу.

Нужно преобразовать координаты мыши для движения объекта (glTranslate)
pos.first, pos.second - положение по Х и по Y соответственно
0
06.09.2014, 10:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2014, 10:43
Помогаю со студенческими работами здесь

Преобразование глобальных координат точки в локальную систему координат, задаваемую четырехугольником
Добрый вечер! Есть произвольный четырехугольник на плоскости. Известны глобальные координаты...

Преобразование координат точки при повороте системы координат
Здравствуйте! Не могу понять, из чего получается формула преобразования координат точки при...

Преобразование координат
Всем добрый день. Прошу Вас, пожалуйста, помочь мне в решении одной из задач на тему...

Преобразование координат
Здравствуйте, вот если у нас есть три координаты и мы их преобразуем на плоскоть, то формулы будут...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru