0085730_32E51_mosin_v_g_matematicheskie_osnovy
.pdf3.3. Пример алгоритма покадровой анимации |
71 |
нужного нам плоского преобразования η в матричной форме необходимо сначала преобразовать плоскость так, чтобы прямая l совпала с одной из осей. Проще всего совместить ее с горизонтальной осью Ox, для этого достаточно сместить плоскость на вектор b = (0, −2). После этого можно будет выполнить горизонтальное отражение Qx, и, наконец, обратное смещение на вектор −b = (0, 2).
η = T−bQxTb = |
0 |
1 |
2 |
0 |
−1 |
0 |
0 |
1 |
−2 |
= |
|
1 |
0 |
0 |
1 |
0 |
0 |
1 |
|
0 |
|
|
0 |
0 |
1 0 |
0 |
1 0 |
0 |
1 |
|
10 0
= 0 −1 4 .
00 1
Теперь можно вычислить координаты результирующего треугольника просто при помощи матричного умножения.
A = η (A) = |
0 |
−1 |
4 |
|
3 |
= |
1 |
|
|
таким образом |
A (2, 1). |
|
|
|
1 |
0 |
0 |
|
2 |
|
2 |
|
|
|
|
|
0 |
0 |
1 1 1 |
|
|
|
||||||
B = η (B) = |
0 |
−1 4 |
|
5 |
= |
−1 |
и, значит, B (2, −1). |
|||||
|
|
1 |
0 0 |
|
2 |
|
|
2 |
|
|
|
|
|
0 |
0 1 1 |
|
1 |
|
|
||||||
|
|
1 |
0 |
0 |
|
4 |
= |
4 |
|
|
|
|
C = η (C) = |
0 |
−1 |
4 |
3 |
1 |
следовательно, |
C (4, 1). |
|||||
|
|
0 |
0 |
1 |
|
1 |
|
1 |
|
|
|
3.3Пример алгоритма покадровой анимации
y |
|
B |
C |
A |
D |
H |
|
0 |
x |
Рис. 3.4: Квадрат ABCD, коллапси- |
|
рующий в точку H. |
|
В этом разделе мы, пользуясь полученными выше знаниями о плоских преобразованиях выполним покадровое движение плоской фигуры.
Такую задачу мы можем рассматривать с различных точек зрения.
Если перед нами — чистый лист бумаги, то покадровое движение изображения по нему мы с вами будем осуществлять не более, чем интуитивно, пользуясь представлениями о геометрической природе объекта изображения и навыками геометрических построений.
Однако, если перед нами стоит задача осуществить программную реализацию целого класса однотипных преобразований, то нам понадобится механизм формализации данных о точках плоскости и ее преобразованиях. Такой механизм мы получили, пользуясь средствами линейной алгебры и
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 |
Аналитическая версия алгоритма |
||
|
|
|
Выполним десять кадров движения. |
|
y |
|
В каждом кадре происходят одно- |
|
|
|
типные операции (что позволит нам |
|
|
|
в следующем разделе построить про- |
|
|
G |
граммный цикл), которые состоят |
|
|
в следующем. |
|
|
a |
|
|
|
|
Пусть G — центр квадрата. Совер- |
|
|
|
|
|
|
bk |
b |
шенно нетрудно вычислить его ко- |
|
|
ординаты: |
|
H |
|
|
|
|
|
|
|
|
0 |
x |
G(4, 4) |
|
|
|
(см. рис. 3.5, стр. 72). Тогда в каж- |
|
|
|
дом кадре сначала происходит сме- |
Рис. 3.5: Векторы смещений, участву- |
щение Tb плоскости на вектор |
||
ющие в анимации. |
b = GO = (−4, −4) . |
||
|
|
При этом центр квадрата совмещается с началом координат.
Затем происходит равномерное масштабирование плоскости с коэффициентом, зависящим от номера кадра: в первом кадре это 0.9, во втором — это 0.8 и т. д.
И, наконец, отмасштабированный квадрат возвращается в точку, промежуточную между G и H.
3.3. Пример алгоритма покадровой анимации |
73 |
Вектор bk соответствующей трансляции также зависит от номера кадра:
bk = −b + (k/10)a ,
где a — это вектор, соединяющий центр квадрата с точкой H (нетрудно подсчитать, что в нашем случае a = (−6, −3)).
1-й кадр
Здесь сначала происходит смещение плоскости на вектор b = (−4, −4) для совмещения центра исходного квадрата с началом координат. Затем плоскость равномерно масштабируется с коэффициентом 0, 9. После этого плоскость смещается на вектор b1:
b1 = −b + |
1 |
· a = (4, 4) + |
1 |
(−6, −3) = (3.4, 3.7) . |
10 |
10 |
Следовательно, оператор η1, который действует в первом кадре, обладает следующей матрицей:
η1 = Tb1 S0.9Tb = |
0 |
|
|
0 |
|
−4 |
|
|||||
= |
0 |
1 |
3.7 |
0.9 |
0 |
1 |
= |
|||||
|
|
1 |
0 |
3.4 |
|
0.9 |
0 |
0 |
1 |
0 |
4 |
|
|
0 |
0 |
1 0 |
0 |
1 0 |
0 |
−1 |
|
||||
= |
00 |
0.9 |
−0.1 . |
|
|
|
|
|
|
|||
|
|
|
.9 |
0 |
0.2 |
|
|
|
|
|
|
|
|
0 |
0 |
1 |
|
|
|
|
|
|
При помощи матричного умножения вычислим координаты вершин квадрата в первом кадре:
A1 |
= η1(A) = |
0 |
0.9 |
−0.1 |
3 |
= |
2.8 . |
|
|
0.9 |
0 |
0.2 |
3 |
|
2.5 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты первой вершины A1 в первом кадре таковы: A1(2.5, 2.8). Аналогично поступим со второй вершиной:
B1 |
= η1(B) = |
0 |
0.9 |
−0.1 |
5 |
= |
4.6 . |
|
|
0.9 |
0 |
0.2 |
3 |
|
2.5 |
|
|
0 |
0 |
1 1 |
1 |
Значит, декартовы координаты второй вершины B1 в первом кадре таковы: B1(2.5, 4.6). Далее — аналогичным образом поступим с третьей вершиной:
C1 |
= η1(C) = |
0 |
0.9 |
−0.1 |
5 |
= |
4.6 . |
|
|
0.9 |
0 |
0.2 |
5 |
|
4.3 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты третьей вершины C1 в первом кадре таковы: C1(4.3, 4.6). Наконец, аналогично поступим с четвертой вершиной:
D1 |
= η1(D) = |
0 |
0.9 |
−0.1 |
3 |
= |
2.8 . |
|
|
0.9 |
0 |
0.2 |
5 |
|
4.3 |
|
|
0 |
0 |
1 1 |
1 |
74 |
Глава 3. Проективные операторы |
Поэтому, декартовы координаты четвертой вершины D1 в первом кадре таковы: D1(4.3, 2.8). Окончательно, координаты вершин квадрата в первом кадре:
A1(2.5, 2.8) , B1(2.5, 4, 6) , C1(4.3, 4.6) , D1(4.3, 2.8) .
2-й кадр
Здесь сначала происходит смещение плоскости на вектор b = (−4, −4) для совмещения центра исходного квадрата с началом координат. Затем плоскость равномерно масштабируется с коэффициентом 0.8. После этого плоскость смещается на вектор b2:
b2 = −b + |
2 |
· a = (4, 4) + |
2 |
(−6, −3) = (2.8, 3.4) . |
10 |
10 |
Следовательно, оператор η2, который действует во втором кадре, обладает следующей матрицей:
η2 = Tb2 S0.8Tb =
= |
0 |
1 |
3.4 |
0 |
0.8 |
0 |
0 |
1 |
−4 |
= |
||
|
|
1 |
0 |
2.8 |
|
0.8 0 |
0 |
1 |
0 |
4 |
|
|
|
0 |
0 |
1 0 |
0 |
1 0 |
0 |
−1 |
|
||||
= |
0 |
0.8 |
−0.2 . |
|
|
|
|
|
||||
|
|
0.8 |
0 |
0.4 |
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
|
|
|
|
|
|
При помощи матричного умножения вычислим координаты вершин квадрата во втором кадре:
A2 |
= η2(A) = |
0 |
0.8 |
−0.2 |
3 |
= |
2.6 . |
|
|
0.8 |
0 |
0.4 |
3 |
|
2 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты первой вершины A2 во втором кадре таковы: A2(2, 2.6). Аналогично поступим со второй вершиной:
B2 |
= η2(B) = |
0 |
0.8 |
−0.2 |
5 |
= |
4.2 . |
|
|
0.8 |
0 |
0.4 |
3 |
|
2 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты второй вершины B2 во втором кадре таковы: B2(2, 4.2). Далее — аналогично поступим с третьей вершиной:
C2 |
= η2(C) = |
0 |
0.8 |
−0.2 |
5 |
= |
4.2 . |
|
|
0.8 |
0 |
0.4 |
5 |
|
3.6 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты третьей вершины C2 во втором кадре таковы: C2(3.6, 4.2). Далее —аналогично поступим с четверотой вершиной:
D2 |
= η2(D) = |
0 |
0.8 |
−0.2 |
3 |
= |
2.6 . |
|
|
0.8 |
0 |
0.4 |
5 |
|
3.6 |
|
|
0 |
0 |
1 1 |
1 |
3.3. Пример алгоритма покадровой анимации |
75 |
Следовательно, декартовы координаты четвертой вершины D2 во втором кадре таковы: D2(3.6, 2.6). Окончательно, координаты вершин квадрата во втором кадре:
A2(2, 2.6) , B2(2, 4, 2) , C2(3.6, 4.2) , D2(3.6, 2.6) .
3-й кадр
Здесь сначала происходит смещение плоскости на вектор b = (−4, −4) для совмещения центра исходного квадрата с началом координат. Затем плоскость равномерно масштабируется с коэффициентом 0.7. После этого плоскость смещается на вектор b3:
b3 = −b + |
3 |
· a = (4, 4) + |
3 |
(−6, −3) = (2.2, 3.1) . |
10 |
10 |
Следовательно, оператор η3, который действует в третьем кадре, обладает следующей матрицей:
η3 = Tb3 S0.7Tb = |
0 |
|
|
0 |
|
−4 |
|
|||||
= |
0 |
1 |
3.1 |
0.7 |
0 |
1 |
= |
|||||
|
|
1 |
0 |
2.2 |
|
0.7 |
0 |
0 |
1 |
0 |
4 |
|
|
0 |
0 |
1 0 |
0 |
1 0 |
0 |
−1 |
|
||||
= |
0 |
0.7 |
−0.3 . |
|
|
|
|
|
|
|||
|
|
0.7 |
0 |
0.6 |
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
|
|
|
|
|
|
При помощи матричного умножения вычислим координаты вершин квадрата в третьем кадре:
A3 |
= η3(A) = |
0 |
0.7 |
−0.3 |
3 |
= |
2.4 . |
|
|
0.7 |
0 |
0.6 |
3 |
|
1.5 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты первой вершины A3 в третьем кадре таковы: A3(1.5, 2.4). Аналогично поступим со второй вершиной:
B3 |
= η3(B) = |
0 |
0.7 |
−0.3 |
5 |
= |
3.8 . |
|
|
0.7 |
0 |
0.6 |
3 |
|
1.5 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты второй вершины B3 в третьем кадре таковы: B3(1.5, 3.8). Далее — аналогично поступим с третьей вершиной:
C3 |
= η3(C) = |
0 |
0.7 |
−0.3 |
5 |
= |
3.8 . |
|
|
0.7 |
0 |
0.6 |
5 |
|
2.9 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты третьей вершины C3 в третьем кадре таковы: C3(2.9, 3.8). Далее — аналогично поступим с четверотой вершиной:
D3 |
= η3(D) = |
0 |
0.7 |
−0.3 |
3 |
= |
2.4 . |
|
|
0.7 |
0 |
0.6 |
5 |
|
2.9 |
|
|
0 |
0 |
1 1 |
1 |
76 |
Глава 3. Проективные операторы |
Следовательно, декартовы координаты четвертой вершины D3 в третьем кадре таковы: D3(2.9, 2.4). Окончательно, координаты вершин квадрата в третьем кадре:
A3(1.5, 2.4) , B3(1.5, 3.8) , C3(2.9, 3.8) , D3(2.9, 2.4) .
4-й кадр
Здесь сначала происходит смещение плоскости на вектор b = (−4, −4) для совмещения центра исходного квадрата с началом координат. Затем плоскость равномерно масштабируется с коэффициентом 0.6. После этого плоскость смещается на вектор b4:
b4 = −b + |
4 |
· a = (4, 4) + |
4 |
(−6, −3) = (1.6, 2.8) . |
10 |
10 |
Следовательно, оператор η4, который действует в четвертом кадре, обладает следующей матрицей:
η4 = Tb4 S0.6Tb =
= |
0 |
1 |
2.8 |
0 |
0.6 |
0 |
0 |
1 |
−4 |
= |
||
|
|
1 |
0 |
1.6 |
|
0.6 0 |
0 |
1 |
0 |
4 |
|
|
|
0 |
0 |
1 0 |
0 |
1 0 |
0 |
−1 |
|
||||
= |
0 |
0.6 |
−0.4 . |
|
|
|
|
|
||||
|
|
0.6 |
0 |
0.8 |
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
|
|
|
|
|
|
При помощи матричного умножения вычислим координаты вершин квадрата в четвертом кадре:
A4 |
= η4(A) = |
0 |
0.6 |
−0.4 |
3 |
= |
2.2 . |
|
|
0.6 |
0 |
0.8 |
3 |
|
1 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты первой вершины A4 в четвертом кадре таковы: A4(1, 2.2). Аналогично поступим со второй вершиной:
B4 |
= η4(B) = |
0 |
0.6 |
−0.4 |
5 |
= |
3.4 . |
|
|
0.6 |
0 |
0.8 |
3 |
|
1 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты второй вершины B4 в четвертом кадре таковы: B4(1, 3.4). Далее — аналогично поступим с третьей вершиной:
C4 |
= η4(C) = |
0 |
0.6 |
−0.4 |
5 |
= |
3.4 . |
|
|
0.6 |
0 |
0.8 |
5 |
|
2.2 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты третьей вершины C4 в четвертом кадре таковы: C4(2.2, 3.4). Далее — аналогично поступим с четвертой вершиной:
D4 |
= η4(D) = |
0 |
0.6 |
−0.4 |
3 |
= |
2.2 . |
|
|
0.6 |
0 |
0.8 |
5 |
|
2.2 |
|
|
0 |
0 |
1 1 |
1 |
3.3. Пример алгоритма покадровой анимации |
77 |
Следовательно, декартовы координаты четвертой вершины D4 в четвертом кадре таковы: D4(2.2, 2.2). Окончательно, координаты вершин квадрата в четвертом кадре:
A4(1, 2.2) , B4(1, 3.4) , C4(2.2, 3.4) , D4(2.2, 2.2) .
5-й кадр
Здесь сначала происходит смещение плоскости на вектор b = (−4, −4) для совмещения центра исходного квадрата с началом координат. Затем плоскость равномерно масштабируется с коэффициентом 0.5. После этого плоскость смещается на вектор b5:
b5 = −b + |
5 |
· a = (4, 4) + |
5 |
(−6, −3) = (1, 2.5) . |
10 |
10 |
Следовательно, оператор η5, который действует в пятом кадре, обладает следующей матрицей:
η5 = Tb5 S0.5Tb =
= |
0 |
1 |
2.5 |
0 |
0.5 |
0 |
0 |
1 |
−4 |
= |
||
|
|
1 |
0 |
1 |
|
0.5 |
0 |
0 |
1 |
0 |
4 |
|
|
0 |
0 |
1 0 |
0 |
1 0 |
0 |
−1 |
|
||||
= |
0 |
0.5 |
0.5 . |
|
|
|
|
|
|
|||
|
|
0.5 |
0 |
−1 |
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
|
|
|
|
|
|
При помощи матричного умножения вычислим координаты вершин квадрата в пятом кадре:
A5 |
= η5(A) = |
0 |
0.5 |
0.5 |
3 |
= |
2 . |
|
|
0.5 |
0 |
−1 |
3 |
|
0.5 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты первой вершины A5 в пятом кадре таковы: A5(0.5, 2). Аналогично поступим со второй вершиной:
B5 |
= η5(B) = |
0 |
0.5 |
0.5 |
5 |
= |
3 . |
|
|
0.5 |
0 |
−1 |
3 |
|
0.5 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты второй вершины B5 в пятом кадре таковы: B5(0.5, 3). Далее — аналогично поступим с третьей вершиной:
C5 |
= η5(C) = |
0 |
0.5 |
0.5 |
5 |
= |
3 . |
|
|
0.5 |
0 |
−1 |
5 |
|
1.5 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты третьей вершины C5 в пятом кадре таковы: C5(1.5, 3). Далее — аналогично поступим с четвертой вершиной:
D5 |
= η5(D) = |
0 |
0.5 |
0.5 |
3 |
= |
2 . |
|
|
0.5 |
0 |
−1 |
5 |
|
1.5 |
|
|
0 |
0 |
1 1 |
1 |
78 |
Глава 3. Проективные операторы |
Следовательно, декартовы координаты четвертой вершины D5 в пятом кадре таковы: D5(1.5, 2). Окончательно, координаты вершин квадрата в пятом кадре:
A5(0.5, 2) , B5(0.5, 3) , C5(1.5, 3) , D5(1.5, 2) .
6-й кадр
Здесь сначала происходит смещение плоскости на вектор b = (−4, −4) для совмещения центра исходного квадрата с началом координат. Затем плоскость равномерно масштабируется с коэффициентом 0.4. После этого плоскость смещается на вектор b6:
b6 = −b + |
6 |
· a = (4, 4) + |
6 |
(−6, −3) = (0.4, 2.2) . |
10 |
10 |
Следовательно, оператор η6, который действует в шестом кадре, обладает следующей матрицей:
η6 = Tb6 S0.4Tb = |
0 |
|
|
0 |
|
−4 |
|
|||||
= |
0 |
1 |
2.2 |
0.4 |
0 |
1 |
= |
|||||
|
|
1 |
0 |
0, 4 |
|
0.4 |
0 |
0 |
1 |
0 |
4 |
|
|
0 |
0 |
1 0 |
0 |
1 0 |
0 |
−1 |
|
||||
= |
0 |
0.5 |
−0.6 . |
|
|
|
|
|
|
|||
|
|
0.5 |
0 |
1.2 |
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
|
|
|
|
|
|
При помощи матричного умножения вычислим координаты вершин квадрата в шестом кадре:
A6 |
= η6(A) = |
0 |
0.4 |
−0.6 |
3 |
= |
1.8 . |
|
|
0.4 |
0 |
1.2 |
3 |
|
0 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты первой вершины A6 в шестом кадре таковы: A6(0, 1.8). Аналогично поступим со второй вершиной:
B6 |
= η6(B) = |
0 |
0.4 |
−0.6 |
5 |
= |
2.6 . |
|
|
0.4 |
0 |
1.2 |
3 |
|
0 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты второй вершины B6 в шестом кадре таковы: B6(0, 2.6). Далее — аналогично поступим с третьей вершиной:
C6 |
= η6(C) = |
0 |
0.4 |
−0.6 |
5 |
= |
2.6 . |
|
|
0.4 |
0 |
1.2 |
5 |
|
0.8 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты третьей вершины C6 в шестом кадре таковы: C6(0.8, 2.6). Далее — аналогично поступим с четвертой вершиной:
D6 |
= η6(D) = |
0 |
0.4 |
−0.6 |
3 |
= |
1.8 . |
|
|
0.4 |
0 |
1.2 |
5 |
|
0.8 |
|
|
0 |
0 |
1 1 |
1 |
3.3. Пример алгоритма покадровой анимации |
79 |
Следовательно, декартовы координаты четвертой вершины D6 в шестом кадре таковы: D6(0.8, 1.8). Окончательно, координаты вершин квадрата в шестом кадре:
A6(0, 1.8) , B6(0, 2.6) , C6(0.8, 2.6) , D6(0.8, 1.8) .
7-й кадр
Здесь сначала происходит смещение плоскости на вектор b = (−4, −4) для совмещения центра исходного квадрата с началом координат. Затем плоскость равномерно масштабируется с коэффициентом 0.3. После этого плоскость смещается на вектор b7:
b7 = −b + |
7 |
· a = (4, 4) + |
7 |
(−6, −3) = (−0.2, 1.9) . |
10 |
10 |
Следовательно, оператор η7, который действует в седьмом кадре, обладает следующей матрицей:
η7 = Tb7 S0.3Tb = |
|
0 |
|
|
0 |
|
−4 |
|
|||||
= |
0 |
1 |
−1.9 |
0.3 |
0 |
1 |
= |
||||||
|
|
1 |
0 |
|
0.2 |
|
0.3 |
0 |
0 |
1 |
0 |
4 |
|
|
0 |
0 |
|
1 0 |
0 |
1 0 |
0 |
−1 |
|
||||
= |
0 |
0.3 |
−0.7 . |
|
|
|
|
|
|
||||
|
|
0.3 |
0 |
|
1.4 |
|
|
|
|
|
|
|
|
|
0 |
0 |
|
1 |
|
|
|
|
|
|
При помощи матричного умножения вычислим координаты вершин квадрата в седьмом кадре:
A7 |
= η7(A) = |
0 |
0.3 |
−0.7 |
3 |
= |
−1.6 . |
|
|
0.3 |
0 |
1.4 |
3 |
|
0.5 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты первой вершины A7 в седьмом кадре таковы: A7(−0.5, 1.6). Аналогично поступим со второй вершиной:
B7 |
= η7(B) = |
0 |
0.3 |
−0.7 |
5 |
= |
−2.2 . |
|
|
0.3 |
0 |
1.4 |
3 |
|
0.5 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты второй вершины B7 в седьмом кадре таковы: B7(−0.5, 2.2). Далее — аналогично поступим с третьей вершиной:
C7 |
= η7(C) = |
0 |
0.3 |
−0.7 |
5 |
= |
2.2 . |
|
|
0.3 |
0 |
1.4 |
5 |
|
0.1 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты третьей вершины C7 в седьмом кадре таковы: C7(0.1, 2.2). Далее — аналогично поступим с четверотой вершиной:
D7 |
= η7(D) = |
0 |
0.3 |
−0.7 |
3 |
= |
1.6 . |
|
|
0.3 |
0 |
1.4 |
5 |
|
0.1 |
|
|
0 |
0 |
1 1 |
1 |
80 |
Глава 3. Проективные операторы |
Следовательно, декартовы координаты четвертой вершины D7 в седьмом кадре таковы: D7(0.1, 1.6). Окончательно, координаты вершин квадрата в седьмом кадре:
A7(−0.5, 1.6) , B7(−0.5, 2.2) , C7(0.1, 2.2) , D7(0.1, 1.6) .
8-й кадр
Здесь сначала происходит смещение плоскости на вектор b = (−4, −4) для совмещения центра исходного квадрата с началом координат. Затем плоскость равномерно масштабируется с коэффициентом 0.2. После этого плоскость смещается на вектор b8:
b8 = −b + |
8 |
· a = (4, 4) + |
8 |
(−6, −3) = (−0.8, 1.6) . |
10 |
10 |
Следовательно, оператор η8, который действует в восьмом кадре, обладает следующей матрицей:
η8 = Tb8 S0.2Tb =
= |
0 |
1 |
−1.6 |
0 |
0.2 |
0 |
0 |
1 |
−4 |
= |
|||
|
|
1 |
0 |
|
0.8 |
|
0.2 0 |
0 |
1 |
0 |
4 |
|
|
|
0 |
0 |
|
1 0 |
0 |
1 0 |
0 |
−1 |
|
||||
= |
0 |
0.2 |
−0.8 . |
|
|
|
|
|
|
||||
|
|
0.2 |
0 |
|
1.6 |
|
|
|
|
|
|
|
|
|
0 |
0 |
|
1 |
|
|
|
|
|
|
При помощи матричного умножения вычислим координаты вершин квадрата в восьмом кадре:
A8 |
= η8(A) = |
0 |
0.2 |
0.8 |
3 |
= |
1.4 . |
|
|
0.2 0 |
−1.6 |
3 |
|
−1 |
|
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты первой вершины A8 в восьмом кадре таковы: A8(−1, 1.4). Аналогично поступим со второй вершиной:
B8 |
= η8(B) = |
0 |
0.2 |
0.8 |
5 |
= |
1.8 . |
|
|
0.2 |
0 |
−1.6 |
3 |
|
−1 |
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты второй вершины B8 в восьмом кадре таковы: B8(−1, 1.8). Далее — аналогично поступим с третьей вершиной:
C8 |
= η8(C) = |
0 |
0.2 |
−0.8 |
5 |
= |
−1.8 . |
|
|
0.2 0 |
1.6 |
5 |
|
0.6 |
|
|
|
0 |
0 |
1 1 |
1 |
Следовательно, декартовы координаты третьей вершины C8 в восьмом кадре таковы: C8(−0.6, 1.8). Далее — аналогично поступим с четверотой вершиной:
D8 |
= η8(D) = |
0 |
0.2 |
−0.8 |
3 |
= |
−1.4 . |
|
|
0.2 |
0 |
1.6 |
5 |
|
0.6 |
|
|
0 |
0 |
1 1 |
1 |