Иерархическая модель в OpenGL реализуется с помощью таблицы отображения. Чтобы определить общую структуру системы и составляющих ее модулей, можно использовать функцию glNewList. Отдельные символьные структуры или другие модули вводятся в модуль с помощью функции glCallList, перед которой указывается соответствующий набор преобразований, задающих положение, ориентацию и размер введенного компонента.
ЛИТЕРАТУРА
Примеры моделирования с помощью OpenGL приводятся в книге [400].
УПРАЖНЕНИЯ
14.1. Обсудите модельные представления, которые подошли бы нескольким разным системам. Обсудите также, как в каждой системе можно реализовать графические представления.
14.2. Разработайте пакет двухмерной схемы производства. Разработчику должны быть доступны меню форм элементов мебели, чтобы с помощью мыши можно было выбирать и размещать объект в любой точке в пределах одной комнаты (одноуровневая иерархия). Преобразования экземпляров можно ограничить трансляцией и вращением.
14.3. Расширьте пакет из предыдущего примера, чтобы формы элементов мебели можно было масштабировать.
14.4. Разработайте пакет двухмерной схемы производства, представляющего меню форм мебели. Следует использовать двухуровневую иерархию, чтобы элементы мебели можно было размещать в различных рабочих областях, а рабочие области - систематизировать в пределах большей области. Формы мебели можно располагать в рабочих областях, используя только преобразования трансляции и вращения.
14.5. Расширьте пакет из предыдущего примера, чтобы формы элементов мебели можно было масштабировать.
14.6. Напишите набор процедур для создания и отображения на экран символов для разработки логических схем. Набор символов как минимум должен включать логические элементы И, ИЛИ и НЕ, изображенные на рис. 14.1.
14.7. Разработайте пакет моделирования логических схем, позволяющий размещать электрические символы в цепи. Используйте набор символов из предыдущего примера, а для помещения в сеть экземпляра одной из форм используйте только трансляцию. Компонент, помещенный в сеть, должен отрезками соединяться с другими указанными компонентами.
14.8. Напишите набор процедур для редактирования модулей, созданных в программе-приложении. Процедуры должны разрешать следующие типы редактирования: объединение, вставка, замена и удаление элементов модулей.
14.9. Составьте программу удаления выделенного объекта при данных координатах границ всех отображенных объектов модели.
14.10. Напишите процедуру отображения и удаления заданного модуля модели.
14.11. Разработайте процедуру избирательно выносящую модули из изображения модели или возвращающую модули на экран.
14.12. Напишите процедуру визуального выделения выбранного модуля. Например, выбранный модуль должен отображаться другим цветом или вмещаться в прямоугольный контур.
14.13. Разработайте процедуру визуального выделения выбранного модуля модели - модуль должен мигать (мерцать).