Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
5 / 5 / 5
Регистрация: 05.02.2013
Сообщений: 197
1

glViewport/gluOrtho2D

11.11.2013, 20:51. Показов 1670. Ответов 1
Метки нет (Все метки)

Никак не могу понять в чём ошибка. Имеется следующий код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        if (w > h)
            b = (int)(h / 2);
        else
            b = (int)(w / 2);
 
        for (int i = 0; i <= 360; i += n)
        {
            std::cout << b * cos(180 * ((2 * M_PI * i) / n) / M_PI) << ":" << b * sin(180 * ((2 * M_PI * i) / n) / M_PI) << std::endl;
 
            p.x = b * cos(180 * ((2 * M_PI * i) / n) / M_PI)/* + b*/;
            p.y = b * sin(180 * ((2 * M_PI * i) / n) / M_PI)/* + b*/;
 
            points.push_back(p);
        }
v

Который должен рисовать правильный n-угольник. Результат работы для n = 8 ( Картинка 1 ).
Проблема в том, что нужно нарисовать фигуру по середине экрана.

C++
1
2
3
4
5
6
7
8
9
glViewport(0, 0, w, h);
 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
 
    gluOrtho2D(0, w, h, 0); 
 
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
Думаю проблема кроется в этом месте.
Но никак не могу понять в чём проблема.

w - ширина экрана
h - высота
b - радиус
a - кол-во углов
n = 360/a;

Пытался сдвинуть ВСЮ фигуру на + b. Результат - картинка 2.
Подскажите пожалуйста что делаю не так.
0

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

Миниатюры
glViewport/gluOrtho2D   glViewport/gluOrtho2D  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.11.2013, 20:51
Ответы с готовыми решениями:

Как работает glViewPort?
Собственно интересует, как оно работает. Вот к примеру, у меня есть экран размером 4096x4096 , и...

OpenGL мерцание, функция gluOrtho2D
При отображении на экран в реалтайме графика 2d, получается мерцание экрана. Простой вывод линий в...


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

Или воспользуйтесь поиском по форуму:
1
5 / 5 / 5
Регистрация: 05.02.2013
Сообщений: 197
11.11.2013, 21:15  [ТС] 2
C++
1
2
3
4
5
6
7
8
for (int i = 0; i < a; i++)
        {
            double angle = i * 2 * M_PI / a;
            p.x = w/2 + b * cos(angle);
            p.y = h/2 + b * sin(angle);
        
            points.push_back(p);
        }
Можно закрывать
0
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.