
- •Уральский государственный технический университет – упи имени первого Президента России б.Н. Ельцина
- •Программное обеспечение мультимедиа
- •Содержание лекции
- •Введение
- •1. Создание двумерных изображений
- •1.1. Растровая графика
- •1.2. Векторная графика
- •2. Создание трёхмерных изображений
- •2.1.Программные библиотеки и стандарты
- •2.2. Программируемость
- •3. Анимация изображения
- •3.1.Формирование графических моделей
- •3.2.Неиерархические модели
- •3.3. Иерархические модели
- •3.4.Метод «жёсткого» программирования
- •.5.Анимация
- •3.6.Объекты и иерархия
- •3.7.Граф сцены
- •4. Звуковое сопровождение
- •4.1.Семплирование
3.3. Иерархические модели
Понятие иерархии играет особую роль в объекто-ориентированных методологиях. Такие модели позволяют расширить возможность средств графического API и превратить их в объектно-ориентированную систему, что открывает путь к использованию графических приложений в распределённой сетевой среде.
Предположим, что перед нами стоит задача сформировать модель автомобиля, которую затем можно было бы использовать в программе анимации. Такую модель можно составить из пяти компонентов: кузова и четырёх колёс (рис.17.2). Каждый из компонент автомобиля, в свою очередь состоит из примитивов графической системы.
Рис.5.2. Модель автомобиля
В программе, которая будет формировать движение автомобиля нужно учитывать, что при повороте колеса на 360 автомобиль смещается на расстояние 2r, где r – радиус колеса. В состав программы должна входить функция, которая будет формировать колесо, и функция, которая будет формировать кузов. Обеим функциям передаётся информация о скорости и направлении движения модели. Существует два вида связей, которые желательно отобразить в модели. Одна связь определяет, что невозможно отделить движение автомобиля от движения отдельного колеса. Если автомобиль движется вперёд, колесо должно вращаться. Но, кроме того, следует учесть и тот факт, что все колёса автомобиля одинаковы, просто они по-разному расположены по отношению к кузову и имеют разную ориентацию.
Отношения между компонентами в модели можно представить наглядно – в виде графа. С точки зрения математики граф состоит из множества узлов и рёбер. Рёбра связывают пары узлов, причём не исключён вариант, когда некоторый узел связывается сам с собой. С рёбрами можно ассоциировать направление связи, и в этом случае граф называется ориентированным. Ребро ориентированного графа исходит из одного узла и заходит в другой.
Мы будем работать с древовидными графами. Деревом называется конечный связный ориентированный граф, не имеющий циклов. Каждый узел дерева, кроме одного – корня, – имеет точно одно заходящее в него ребро. Следовательно, каждый узел имеет точно один родительский узел, с который его связывает заходящее ребро. Но любой узел может иметь одно, ни одного или несколько исходящих рёбер, а следовательно один, ни одного или нескольких дочерних узлов. На рис. 17.3 показано дерево, представляющее отношения между компонентами нашей модели автомобиля. Корнем дерева является объект кузов, а все четыре объекта, представляющие колёса, – его дочерними узлами. В рассматриваемой модели с каждым узлом может быть связано описание соответствующего геометрического объекта. Информация о положении и ориентации каждого колеса может быть связана либо с соответствующим узлом графа, либо с заходящим в него ребром.
В некоторых моделях используется по нескольких экземпляров идентичных объектов. Именно такой вариант мы наблюдаем в нашей модели автомобиля – все четыре колеса в ней идентичны. Следует учесть, что все колёса автомобиля одинаковы, но они по разному расположены в пространстве по отношению к кузову и имеют разную ориентацию.
Рис.5.3 Дерево представления модели автомобиля
Модель можно представить в виде ориентированного графа двумя способами. В узлах графа описание графического объекта, а информация о положении и ориентации колеса может быть связана с заходящим ребром графа.
Рис. 5.4 Ориентированный ациклический граф модели автомобиля