2.18. В развитие предыдущего упражнения подумайте о том, как смоделировать игру в бильярд (это задача посложнее, чем простой "попрыгунчик"). Придется просчитывать взаимодействие множества шаров со столом и друг с другом.
Подсказка. Начните с двух шаров и подумайте над тем, как выяснить, столкнутся ли они.
2.19. В сообщениях о некоторых дисплеях на ЭЛТ анонсируется, что они способны воспроизводить любые четыре из 64 цветов. Какую информацию о буфере кадра и качестве дисплея несет такое сообщение?
2.20. Разработайте программу анализа выпуклости двухмерного многоугольника.
2.21. Для многих новичков, только приступивших к работе с OpenGL, большую сложность представляет множество вариантов базовых функций, как, например, glVer-tex*(). В таких языках, как С++, можно использовать одно и то же имя функции при работе с разными типами аргументов - заботу о выборе подходящего варианта реализации функции берет на себя компилятор. Разработайте библиотеку функций С++, которые должны выполнять роль посредника между прикладной программой и OpenGL и таким образом облегчить жизнь прикладному программисту - позволить ему пользоваться единственным именем функции и неявно специфицировать ее вариант через типы аргументов.
Упражнения ГЛАВА
Ввод и взаимодействие с пользователем Вданной главе мы рассмотрим интерактивные графические программы. В этот класс входит огромное количество самых разнообразных приложений - от систем проектирования до программ управления большими системами, в которых используется графический интерфейс, систем виртуальной реальности и компьютерных игр.
Обсуждение этой темы я разделил на три части. Сначала я познакомлю читателей с устройствами ввода, которые используются одной из взаимодействующих "сторон", - пользователем графической программы. Устройства ввода мы рассмотрим с двух точек зрения: как способ описания физических устройств их реальными характеристиками и как способ представления этих устройств в прикладной программе. Затем мы рассмотрим сетевую среду и графические приложения типа "клиент/сервер", работающие в такой среде. Идеи организации подобных приложений мы будем использовать для создания подсистемы ввода информации, управляемой событиями. В последней части главы будет рассмотрена интерактивная графическая программа, изменяющая изображение в соответствии с командами пользователя. Эта программа продемонстрирует возможности организации эффективного взаимодействия человека и компьютера.