
- •Лекция 1 Основные понятия OpenGl
- •1.2 Однородные координаты и матрицы
- •1.3 Поворот точки вокруг прямой заданной точкой а(a,b,c) и направляющим вектором e(l,m,n), , на угол φ.
- •1.4 Система координат
- •1.5 Вершины
- •Лекция 2 Освещение объектов
- •2.1Основные понятия
- •2.2 Задание цвета объекта
- •2.3 Освещение объектов
- •2.3.1 Свойства диффузного отражения
- •2.3.2 Свойства зеркального отражения
- •Лекция 3
- •3.1 Контекст воспроизведения
- •3.2 Стандартные функции библиотеки OpenGl
- •3.3 Функции библиотеки glu
- •3.4 Рекомендации по созданию графических приложений
- •Лекция 4
- •Свойства материалов
- •Установка источников света
- •Модель освещения
- •Смешение цветов
- •4.5 Задание теста глубины
- •Лекция 5 Наложение текстуры на объект
- •Задание параметров текстуры
- •Задание параметров текстуры
- •Взаимодействие текстуры с объектом
- •Привязка координат текстуры к объекту
- •Подготовка текстуры из bmp файла, для случая, когда размеры файла известны
- •Пример инициализации двухмерной текстуры
- •Лекция 6. Буфер трафарета
- •6.1 Тест трафарета
- •6.2 Логические операции с графическими объектами
- •6.2.1 Описание метода вычитания графических объектов
- •Лекция 7. Сплайновые поверхности
- •7.1 Кривые Безье
- •7.2 Отображение кривых Безье в OpenGl
- •7.3 Отображение поверхностей Безье в OpenGl
- •Лекция 8. Выбор графических объектов на экране
- •8.1 Идея метода
- •Лекция 9. Экспорт трехмерных изображений из 3d Studio max
- •9.1 Формат файла gms
- •9.2 Импортирование изображений объектов в программу
- •9.3 Загрузка файла формата gms в Delphi
- •Лекция 10 Вспомогательные функции
- •10.1.Работа с таймером
- •10.2 Обработка нажатия клавиши
- •10.3 Вывод текста на экран
- •Литература
Лекция 1 Основные понятия OpenGl
OpenGL – графический стандарт - разработан и утверждён ведущими компьютерными и программистскими фирмами (IBM, Microsoft и др.)
1.2 Однородные координаты и матрицы
В компьютерной графике вершины задаются четырьмя координатами, что связано с использованием однородных координат. Использование этих координат позволяет привести все виды пространственных преобразований графических объектов к единой форме. (К матричным преобразованиям.)
В однородной системе координат положение точки P(x,y,z) задаётся, как P(wx,wy,wz,w) или P(x,y,z,1). Где w – задаёт масштаб.
Переход из одной ортогональной системы координат к другой, как известно, задаётся системой
(1)
где αi, βi, γi, λi – некоторые заданные коэффициенты.
Уравнение (1) можно рассматривать не только, как положение точки в новой системе координат, но и как изменение положения точки в своей системе координат.
Любое преобразование, задаваемое системой (1), можно разложить на последовательно выполняемые простейшие преобразования:
- вращения (rotate) [R];
- растяжения (scale) [S];
- переноса (translate) [T].
Рассмотрим эти преобразования.
Перенос [T] . Вектор переноса (λ,μ,ν)
.
В
OpenGL glTranslatef(λ,μ,ν);
Растяжение [S].
.
В
OpenGL
glScalef(α,β,γ);
В этих операторах префикс gl говорит об принадлежности этих операторов к библиотеки OpenGL, а суффикс f – говорит о том, что все параметры задаются в формате вещественных чисел (glFloat).
Вращение [R].
Рассмотрим, вначале, поворот точки вокруг оси z на угол φ
Эти уравнения получены с.о.
Матрица поворота вокруг оси аппликат (z) имеет вид
В
OpenGL
GlRotetef(φ,0,0,1);
Матрица поворота вокруг оси абсцисс (x) имеет вид
В
OpenGL
GlRotetef(φ,1,0,0);
Матрица поворота вокруг оси ординат (y) имеет вид
В
OpenGL
GlRotetef(φ,0,1,0);
1.3 Поворот точки вокруг прямой заданной точкой а(a,b,c) и направляющим вектором e(l,m,n), , на угол φ.
Поворот точки относительно оси можно реализовать последовательностью следующих операций:
Перенос точки А в начало координат
Совмещение прямой с одной из осей координат
Поворот на заданный угол φ вокруг этой оси
Вернуть прямую в прежнее положение
Вернуть точку А в исходное положение
Это преобразование можно записать в виде матрицы
[M] = [T] [Rx] [Ry] [Rz] [Ry]-1 [Rx] -1[T] -1 (1)
Для случая прохождения линии через начало координат, матрица поворота точки вокруг линии заданной направляющим вектором на угол φ имеет вид
Для того, что бы воспользоваться операторами OpenGL, необходимо определить угол ψ поворота системы координат вокруг оси y и угол χ поворота вокруг оси x
–направляющмй
вектор
.
Аналогичным образом находим угол χ
В OpenGl получить результирующую матрицу преобразования
[M] = [T] [Rx] [Ry] [Rz] [Ry]-1 [Rx] -1[T] -1
можно с.о.
glPushMatrix
glTranslatef(-a,-b,-c);
glRotetef(ψ,0,1,0);
glRotetef(χ,1,0,0);
glRotetef(φ,0,0,1);
glRotetef(-χ,1,0,0);
glRotetef(-ψ,0,1,0);
glTranslatef(a-b,c);
glPopMatrix