В OpenGL существует две матрицы, последовательно применяющиеся в преобразовании координат точки. Одна из них - это матрица моделирования (modelview matrix), а другая - матрица проектирования (projection matrix). Первая из них служит для задания положения объекта и его ориентации, а вторая отвечает за выбранный способ проектирования. Также еще существует матрица преобразования текстурных координат (texture mtàtrix).
Все координаты (включая текстурные) внутри OpenGL хранятся при помощи однородных координат, т. е. виде четырехмерных векторов (х, у, z, w). Преобразования также описываются при помощи матриц однородных преобразований следующим образом:
(4.1)
Существует набор различных процедур, умножающих текущую матрицу (матрицу моделирования или проектирования) на матрицу выбранного геометрического преобразования. Текущая матрица задается при помощи процедуры
void glMatrixMode ( Gbenum mode );
Параметр mode может принимать значения GL_MODELVffiW, GL_PROJECTION или GL_TEXTURE, позволяя выбирать в качестве текущей матрицы матрицу моделирования, матрицу проектирования шщ матрицу преобразования текстуры.
Процедура
void glLoadldenity ();
устанавливает текущую матрицу равной единичной.
Обычно задание соответствующей матрицы начинается с установки ее в единичную, а затем в последовательном применении матриц геометрических преобразований.
Преобразование переноса задается процедурой
void glTranslate {fd}(TYPE x, TYPE y, TYPE z) ;
обеспечивающей сдвиг объекта на величину (х, у, z). Преобразование поворота задается процедурой
Основы библиотеки OpenGL
void glRotate {fd}(TYPE angle, TYPE x, TYPE y, TYPE z);
обеспечивающей поворот на угол angle в направлении против часовой стрелки вокруг прямой с направляющим вектором (х, у, z). Преобразование масштабирования задается процедурой
void glScale {fd)(TYPE x, TYPE y, TYPE z);
Если последовательно указано несколько преобразований, то в результате текущая матрица будет,последовательно умножена на матрицы соответствующих преобразований.