ОТОБРАЖЕНИЕ ДВУХМЕРНЫХ СЦЕН
СРЕДСТВАМИ ГРАФИЧЕСКОЙ БИБЛИОТЕКИ
OPENGL
Задания и программы лабораторных работ по дисциплине
"Геометрическое моделирование и компьютерная графика"
Для студентов направления 09.03.03 – «Прикладная информатика»,
профиль «Прикладная информатика в экономике»
Составитель: д.т.н., профессор Косников Ю.Н.
Пенза 2016
Задание 1. Система координат и примитивы OpenGL
Цель выполнения задания: изучить на практике отображение простых геометрических фигур в пределах нормализованного объема видимости.
Изучаемые команды
Командыинициализации: auxInitWindowPosition, auxInitWindowSize, glutInitWindowPosition, glutInitWindowSize.
Команды настройки цветов фона и изображения: glClearColor, glClear(GL_COLOR_BUFFER_BIT), glColor.
Команды рисования геометрических примитивов: glVertex, glBegin – glEnd.
Команды задания стиля вычерчивания: glLineWidth, glEnable(GL_LINE_SMOOTH), glEnable(GL_POINT_SMOOTH).
Варианты заданий приведены в таблице 1.
Таблица 1
N варианта | Фигура | Геометрический примитив |
Два раздельных треугольника | Отрезок (GL_LINES), треугольник (GL_TRIANGLES) | |
«Песочные часы» – два треугольника с общей вершиной | Связанные отрезки (GL_LINE_STRIP), треугольник (GL_TRIANGLES) | |
Два связанных треугольника | Замкнутый контур (GL_LINE_LOOP) | |
Смежные треугольник и прямоугольник | Полигон (GL_POLYGON) | |
Два смежных треугольника | Треугольник (GL_TRIANGLES) | |
«Созвездие» из пяти разноцветных точек и «метеор» – вектор с крупной точкой | Точка (GL_POINTS), отрезок (GL_LINES) | |
Неправильный четырехугольник с точкой в вершине | Четырехугольник (GL_QUADS), точка (GL_POINTS) | |
Четырехугольник с диагональю | Связанные треугольники (GL_TRIANGLE_STRIP) | |
Четырехугольник с диагональю | Треугольник (GL_TRIANGLES) | |
Два смежных четырехугольника | Связанные четырехугольники (GL_QUAD_STRIP) | |
Четырехугольник с диагональю | Связанные треугольники (GL_TRIANGLE_FAN) | |
Четырехугольник с диагональю | Связанные отрезки (GL_LINE_STRIP) | |
Параллелограмм с точками на углах | Точка (GL_POINTS), полигон (GL_POLYGON) | |
«Домик» – смежные треугольник и квадрат | Треугольник (GL_TRIANGLES), четырехугольник (GL_QUADS) | |
Треугольник и квадрат с общей вершиной | Замкнутый контур (GL_LINE_LOOP), четырехугольник (GL_QUADS) | |
Треугольник, вписанный в прямоугольник | Треугольник (GL_TRIANGLES), связанные отрезки (GL_LINE_STRIP) | |
Смежные пятиугольник и треугольник | Полигон (GL_POLYGON) | |
«Флажок» – вытянутый прямоугольник и треугольник | Четырехугольник (GL_QUADS), треугольник (GL_TRIANGLES) | |
«Флажок» – вектор и невыпуклый пятиугольник | Отрезок (GL_LINES), полигон (GL_POLYGON) | |
«Кораблик» – трапеция и вектор | Четырехугольник (GL_QUADS), отрезок (GL_LINES) | |
«Молоток» – трапеция и вытянутый прямоугольник | Полигон (GL_POLYGON), четырехугольник (GL_QUADS) | |
«Окно» – прямоугольник и многоугольник | Замкнутый контур (GL_LINE_LOOP), полигон (GL_POLYGON) | |
«Лопата» – выпуклый пятиугольник и вытянутый прямоугольник | Полигон (GL_POLYGON), отрезок (GL_LINES) | |
«Дупель один-один» – два смежных квадрата с точками в центрах | Четырехугольник (GL_QUADS), точка (GL_POINTS), | |
Пятиугольник с двумя диагоналями | Треугольник (GL_TRIANGLES), отрезок (GL_LINES) | |
«Веселый Роджер» – вытянутая по верти-кали трапеция и ниже – косой крест из двух прямоугольников | Четырехугольник (GL_QUADS), полигон (GL_POLYGON) | |
«Рюмка» – равнобокая трапеция на 6-угольной ножке | Полигон (GL_POLYGON), замкнутый контур (GL_LINE_LOOP), | |
«Часы» – квадрат, два узких прямоугольника разной длины и крупная точка в центре | Связанные отрезки (GL_LINE_STRIP), четырехугольник (GL_QUADS), точка (GL_POINTS) | |
«Наполовину пустая бутылка» – прямоугольник и замкнутая ломаная линия из 8 сегментов | Четырехугольник (GL_QUADS), полигон (GL_POLYGON) | |
«Квадратная гайка» – правильный квадрат с отверстием (многоугольником) внутри | Полигон (GL_POLYGON), связанные отрезки (GL_LINE_STRIP) | |
«Крыша дома» – параллелограмм, сопряженный с треугольником | Треугольник (GL_TRIANGLES), четырехугольник (GL_QUADS) | |
Правильный шестиугольник с диагоналями и точкой большого размера в центре | Связанные треугольники – «веер» (GL_TRIANGLE_FAN), точка (GL_POINTS) |
Программа выполнения задания
|
|
|
|
1. Спроектировать изображение, выбрав координаты вершин, которые ограничивают примитивы. Координаты х и у вершин не должны превышать ±1, координата z берется равной нулю. Выбрать размеры окна вывода. Определить цвет фона (не черный) и цвет изображения – разный для каждого фрагмента изображения.
2. В программу-заготовку добавить команды задания окна и рисования изображения. Использовать формат команды задания вершин glVertex3f. Получить изображение заданных фигур на экране. Предъявить результаты преподавателю.
3. Изменяя координаты х и у вершин в диапазоне (-5,+5), определить границы объема видимости по соответствующим координатам, а также направления координатных осей и точку их начала.
|
|
4. Задать координату z одной из вершин равной +0.5, затем -0.5. Объяснить наблюдаемый эффект. Задать координату z одной из вершин равной +5, затем -5. Объяснить наблюдаемый эффект.
5. Ответить на контрольные вопросы преподавателя.