}

Ввод и взаимодействие с пользователем

Типичный результат работы программы представлен на рис. 3.20. Хотя тот вариант программы рисования, который мы рассмотрели выше, достаточно прост и его возможности далеки от совершенства, функции программы при желании можно расширить, причем это выполняется без особого труда. Например, можно заменить растровый шрифт на штриховой, добавить возможность выбора шрифтов, настройку атрибутов (ширины и типа), предоставить пользователю возможность выбирать режим вычерчивания фигур (с заливкой или контурный), включить другие типы фигур - произвольные многоугольники, аппроксимированные круги, кривые и т.д. Однако обеспечить построение гладких кривых в программе рисования, подобно тому, как это делается в коммерческих программных продуктах, довольно сложно. Почему это так, вы узнаете в следующем разделе. Полный текст рассмотренной программы представлен в Приложении А.

Рис. 3.20. Результат работы программы рисо вания

3.9. Интерактивные программы анимации Программы, которые мы рассматривали до сих пор, формировали статическое изображение, т.е. выведенные на экран объекты нельзя было изменять. Но для пользователя гораздо больший интерес представляют динамические картинки, в которых отдельные объекты могут двигаться или изменяться в ответ на команды пользователя (или по ходу какого-нибудь внешнего по отношению к программе процесса). Например, можно "оживить" символы надписи и заставить их двигаться по экрану или показать, как меняется изображение некоторой сцены при перемещении наблюдателя. Ниже мы рассмотрим, как организовать в программе анимацию на примере простого вращающегося объекта.

3.9.1. Вращающийся квадрат Рассмотрим двухмерную точку, описываемую парой координат: х = собЭ, У = БШЭ.

Эта точка при изменении значения угла Э будет перемещаться вдоль окружности единичного радиуса. Три точки (-Бтб, собЭ), (-собЭ, -зтЭ) и (бшЭ, -собЭ) также лежат на окружности единичного радиуса и вместе с первой образуют вершины квадрата, вписанного в эту окружность (рис. 3.21).


⇐ Предыдущая| |Следующая ⇒