Введение в программирование с использованием OPENGL
Автор: kksoool • Март 22, 2022 • Лабораторная работа • 624 Слов (3 Страниц) • 211 Просмотры
Министерство Образования и Науки РФ
Новосибирский Государственный Технический Университет
Кафедра ПМТ
Лабораторная работа №1
по дисциплине «Компьютерная графика»
ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ
С ИСПОЛЬЗОВАНИЕМ OPENGL
Факультет: | ПМИ |
Группа: | ПМ-34 |
Вариант: | 3 |
Выполнил: | |
Преподаватель: | Вагин Д. В. Задорожный А. Г. |
Новосибирск
2016
Цель работы
Ознакомиться с основами использования библиотеки OpenGL и работе с примитивами.
Текст задания
- Отобразить в окне множество примитивов – незамкнутых ломаных (вершины которых задаются кликами мыши);
- Для завершения текущего набора примитивов и начала нового зарезервировать специальную клавишу;
- Предоставить возможность изменения цвета и координат вершин текущего набора примитивов;
- Текущее множество примитивов выделять среди других;
- Использовать контейнер vector из библиотеки STL для хранения набора примитивов и множества вершин каждого примитива, а для хранения атрибутов рекомендуется использовать стандартный класс struct;
- Предусмотреть возможность удаления примитивов и наборов примитивов;
- Продублировать команды в меню, созданном с помощью библиотеки GLUT.
Используемые структуры хранения данных
Для реализации объектов программы были использованы следующие структуры:
- Класс «точка», описывающий 2D-координаты вершин примитивов.
class point
{
public:
GLint x, y;
point(GLint p1, GLint p2);
};
- Структура «линия», определяющая незамкнутую ломаную множеством точек и принадлежностью к некоторому набору примитивов.
struct line
{
public:
vector <point> coordinates;
int group;
};
- Класс «цвет», отражающий принадлежность цвета, заданного в цветовой модели RGB, к определенного набору примитивов.
class colour
{
public:
GLint red, blue, green;
int group;
colour(GLint r, GLint b, GLint g, int gr);
};
- Класс «тип линии», отражающий принадлежность типа линии и толщины линии к определенному набору примитивов
class linetype
{
public:
float widht;
unsigned short type;
int group;
linetype(float _widht, unsigned short _type, int _gr);
};
Руководство пользователя
Управление данной программой реализовано с помощью мыши и клавиатуры. Любые изменения с примитивами и наборами примитивов невозможны в режиме отрисовки текущего примитива.
Кнопка мыши | Назначение |
Левая | Фиксирование текущей позиции курсора как следующей (новой) вершины текущей или новой ломаной линии |
Правая | Вызов меню |
Клавиша | Назначение |
z | Завершение отрисовки текущего примитива |
Пробел (space) | Добавление нового набора примитивов |
Стрелка вверх | Переключение между наборами примитивов в порядке возрастания очередности добавления |
Стрелка вниз | Переключение между наборами примитивов в порядке убывания очередности добавления |
u (U) | Увеличение интенсивности компоненты красного цвета в текущем наборе примитивов |
i (I) | Увеличение интенсивности компоненты зеленого цвета в текущем наборе примитивов |
o (O) | Увеличение интенсивности компоненты синего цвета в текущем наборе примитивов |
j (J) | Уменьшение интенсивности компоненты красного цвета в текущем наборе примитивов |
k (K) | Уменьшение интенсивности компоненты зеленого цвета в текущем наборе примитивов |
l (L) | Уменьшение интенсивности компоненты синего цвета в текущем наборе примитивов |
w (W) | Перемещение вверх текущего набора примитивов |
s (S) | Перемещение вниз текущего набора примитивов |
a (A) | Перемещение влево текущего набора примитивов |
d (D) | Перемещение вправо текущего набора примитивов |
delete | Удаление текущего набора примитивов |
backspace (←) | Удаление примитива в текущем наборе в порядке убывания очередности добавления |
...