На рис. 3.10 показаны некоторые из использованных окон; все они являются концентрическими и имеют фиксированное форматное соотношение, но с каждым последующим кадром их размер уменьшается. Представьте мысленно, что нарисовано в порте просмотра для каждого из этих окон.

Скелет программы, позволяющей достичь этого эффекта приближения, показан в листинге 3.3. Для каждого нового кадра экран очищается, окно делается все меньше (с фиксированными центром и форматным соотношением), а рисунок внутри окна рисуется в постоянном порту просмотра.

5 Ф. Хилл

Дополнительные инструменты для рисования

Листинг 3.3. Создание анимации

float сх - 0.3, су - 0.2: // center of the window // центр окна

float Н. w - 1.2. aspect - 0.7:

// window properties

// свойства окна

set the viewport

II устанавливаем порт просмотра

for(int frame - 0: frame < NumFrames: frame++)
{
// for each frame

// для каждого кадра

clear the screen

II очищаем экран

// erase the previous figure

// удаляем предыдущий рисунок

w *- 0.7: // reduce the window width // уменьшаем ширину окна

H - W * aspect; // maintain the same aspect ratio // сохраняем прежнее форматное соотношение

setwindowCcx - W. сх + w. су - H, су + Н); //set the next window // устанавливаем следующее окно

hexSwi rl(); // draw the object // рисуем объект

}
Приближение к завихряющимся шестиугольникам

Рис. 3.10. Приближение к завихряющимся шестиугольникам Получение плавной анимации Предыдущее приближение не является вполне удовлетворительным, поскольку рисование новой фигуры занимает определенное время. Все, что видит пользователь, - это повторяющийся цикл из следующих двух действий"opengl1_154.html">⇐ Предыдущая| |Следующая ⇒