Задание аффинных преобразований | MetodPro.ru

Реклама на сайте

Задание аффинных преобразований


Начнем с команды, определяющей преобразование масштабирования glScale[f d] (sx, sy, sz). Здесь, может возникнуть недоразумение. Из названия интуитивно кажется, что эта команда должна выполнять масштабирование геометрических примитивов, но мы только настраиваем конвейер и о примитивах даже не упоминали! Все правильно, в OpenGL мы сначала задаем требуемые преобразования, а затем указываем примитивы, которые должны им подвергнуться.

Данная команда формирует матрицу масштабирования относительно начала координат S, перемножает ее с текущей матрицей M,  и заменяет текущую матрицу полученным результатом. То есть выполняет композицию M=M*S. Обратите внимание на то, что схема композиции отличается от рассмотренной нами. Сравним схемы. Наша схема p’= ((p*M1)*M2)*M3. Схема OpenGL p’= M3*(M2*(M1*p)). Очевидно, что основное отличие в порядке включения матриц в композицию. В OpenGL преобразования будут выполняться в порядке обратном порядку их объявления, т.е. трансформация, объявленная первой, будет применена к объекту последней. Такой подход оказывается более удобным при создании сцен, в чем мы убедимся при рассмотрении примера программы.

Еще раз оговорим, что данная команда изменяет текущую матрицу выбранного типа. Обычно это матрица видового преобразования - GL_MODELVIEW, так как мы чаще всего используем геометрические преобразования для сборки модели. Однако если вы выберете текущим типом матрицу проецирования, то произойдет композиция преобразования масштабирования с преобразованием проецирования. Необходимо обладать глубокими знаниями принципов работы геометрического конвейера, чтобы получить осмысленный результат от такого действия.

Остальные команды работают по той же схеме.

glRotate[f d](angle, x, y, z) - рассчитывает матрицу поворота на угол angle относительно вектора, определяемого тройкой (x, y, z), с точкой привязки в начале координат.

glTranslate[f d] (x, y, z) – рассчитывает матрицу переноса на вектор, определяемый тройкой (x, y, z), с точкой привязки в начале координат.



Методические пособия

  • Системы автоматизированного проектирования
  • Социология молодёжи
  • Общая социология
  • Криптография
  • Проектирование трансляторов
  • Компьютерная графика
  • Моделирование систем
  • Информационная безопасность
  • Теория вычислительных процессов
  • Логические основы искусственного интелекта
  • Проектирование распределённых информационных систем