72 Глава 3. Проективные операторы
проективной геометрии. Они позволяют передать процессору данные в чис-
ленном виде: в виде одномерных (координаты точек и векторов) или дву-
мерных (компоненты матриц проективных операторов) массивов чисел.
Мы отдельно рассмотрим геометрический, аналитический и программный
подход к решинию задачи.
Постановка задачи
Квадрат ABCD с вершинами A(3, 3), B(3, 5), C(5, 3), D(5, 3) движется из
своего исходного положения в точку H(−2, 1), при этом происходит равно-
мерное масштабирование квадрата до его полного вырождения в точке H
(см. рис. 3.4, стр. 71).
3.3.1 Геометрическая версия алгоритма
С геометрической точки зрения нужно решить задачу на построение (не
самую сложную). Нам достаточно соединить вершины исходного квадра-
та с точкой полного коллапса отрезками прямых и каждый такой отрезок
разбить на n равных частей (это, напомню, делается при помощи цирку-
ля и линейки по теореме Фалеса). После этого точки на прямых и будут
вершинами квадрата в его промежуточных стадиях.
3.3.2 Аналитическая версия алгоритма
Выполним десять кадров движения.
a
b
H
G
b
k
x
y
0
Рис. 3.5: Векторы смещений, участву-
ющие в анимации.
В каждом кадре происходят одно-
типные операции (что позволит нам
в следующем разделе построить про-
граммный цикл), которые состоят
в следующем.
Пусть G — центр квадрата. Совер-
шенно нетрудно вычислить его ко-
ординаты:
G(4, 4)
(см. рис. 3.5, стр. 72). Тогда в каж-
дом кадре сначала происходит сме-
щение T
b
плоскости на вектор
b = GO =(−4, −4) .
При этом центр квадрата совмещается с началом координат.
Затем происходит равномерное масштабирование плоскости с коэффициен-
том, зависящим от номера кадра: в первом кадре это 0.9, во втором — это
0.8 ит.д.
И, наконец, отмасштабированный квадрат возвращается в точку, промежу-
точную между G и H.