Изменения

Перейти к: навигация, поиск

Матрица преобразования

7662 байта добавлено, 17:10, 19 февраля 2016
Композиция преобразований
Будем рассматривать двумерный случай.
 
Матрица преобразования - это некоторая матрица <tex> 3 \times 3 </tex>. Мы будем рассматривать матрицы вида
<tex> \left(\begin{array}{ccc}
a & b & t_x\\
c & d & t_y\\
0 & 0 & 1
\end{array}\right) </tex>
 
Допустим есть какое-то преобразование <tex> F </tex>, и <tex> F(P) = P' </tex> (к точке <tex> P </tex> применили преобразование <tex> F </tex> и получили точку <tex> P' </tex>).
 
Тогда матрица преобразования <tex> F </tex>, умноженная на однородные координаты <tex> P </tex>, даёт однородные координаты <tex> P' </tex>.
 
В каком-то смысле, любое линейное преобразование одновременно является матрицей, так же как точка {{---}} это набор координат.
 
 
Посмотрим как меняются координаты при преобразовании.
 
<tex> F \left(\begin{array}{c}
x\\
y\\
1
\end{array}\right) =
</tex>
<tex> \left(\begin{array}{ccc}
a & b & t_x\\
c & d & t_y\\
0 & 0 & 1
\end{array}\right) \cdot
</tex>
<tex> \left(\begin{array}{c}
x\\
y\\
1
\end{array}\right) =
</tex>
<tex> \left(\begin{array}{c}
a x + b y + t_x\\
c x + d y + t_y\\
1
\end{array}\right)
</tex>.
 
То есть новые координаты как-то линейно зависят от старых.
 
Рассмотрим частные случаи преобразований.
 
=== Параллельный перенос ===
Задаёт преобразование <tex> x \rightarrow x + a t_x ,\ y \rightarrow y + b t_y </tex>.
Обозначается <tex> T_{\overrightarrow v} </tex>, где <tex> \overrightarrow v = (at_x, bt_y) </tex> {{---}} вектор параллельного переноса.
<tex> T_{(at_x, bt_y)} = \left(\begin{array}{ccc}1 & 0 & at_x\\0 & 1 & bt_y\\
0 & 0 & 1
\end{array}\right) </tex>
'''Пример'''
Задача: Найдите новые координаты точки <tex> (6, 9) </tex> после параллельного переноса пространства плоскости на вектор <tex> \overrightarrow v = (1, 2) </tex>.
Решение: <tex> T_{(a, b)} (\left(\begin{array}{c}
7\\
11\\
1
\end{array}\right)
</tex>
 
Вполне ожидаемый ответ.
 
 
=== Масштабирование вдоль осей ===
 
Задаёт преобразование <tex> x \rightarrow s_x x ,\ y \rightarrow s_y y </tex>.
 
Будем обозначать как <tex> S_{s_x, s_y} </tex>. Числа <tex> s_x </tex> и <tex> s_y </tex> называются коэффициентами масштабирования.
 
<tex> S_{s_x, s_y} = \left(\begin{array}{ccc}
s_x & 0 & 0\\
0 & s_y & 0\\
0 & 0 & 1
\end{array}\right) </tex>
 
'''Пример'''
 
Задача: Найдите новые координаты точки <tex> (3, 5) </tex> после масштабирования по оси <tex> O_x </tex> с коэффициентом 2 (по оси <tex> O_y </tex> масштаб остаётся таким же).
 
Решение: <tex> S_{2, 1} (\left(\begin{array}{c}
3\\
5\\
1
\end{array}\right)) =
</tex>
<tex>
\left(\begin{array}{ccc}
2 & 0 & 0\\
0 & 1 & 0\\
0 & 0 & 1
\end{array}\right) \cdot
</tex>
<tex>
\left(\begin{array}{c}
3\\
5\\
1
\end{array}\right) =
</tex>
<tex>
\left(\begin{array}{c}
2 \cdot 3\\
1 \cdot 5\\
1
\end{array}\right) =
</tex>
<tex>
\left(\begin{array}{c}
6\\
5\\
1
\end{array}\right)
</tex>
 
 
=== Поворот относительно начала координат ===
 
Обозначается <tex> R^\alpha </tex>, где <tex> \alpha </tex> {{---}} угол поворота.
Как обычно, <tex> \alpha > 0 </tex> при повороте против часовой стрелки, и <tex> \alpha < 0 </tex> при повороте по часовой стрелке.
 
<tex> R^\alpha = \left(\begin{array}{ccc}
\cos \alpha & - \sin \alpha & 0\\
\sin \alpha & \cos \alpha & 0\\
0 & 0 & 1
\end{array}\right) </tex>
 
'''Пример'''
Задача: Найдите новые координаты точки <tex> (5, 1) </tex> после поворота плоскости на <tex> 90 </tex> °.
 
Решение: <tex> R^{90} = \left(\begin{array}{ccc}
0 & -1 & 0\\
1 & 0 & 0\\
0 & 0 & 1
\end{array}\right)
</tex>
 
<tex> R^{90} (\left(\begin{array}{cc}
5\\
1\\
1
\end{array}\right)) =
</tex>
<tex>\left(\begin{array}{ccc}
0 & -1 & 0\\
1 & 0 & 0\\
0 & 0 & 1
\end{array}\right) \cdot
</tex>
<tex> \left(\begin{array}{cc}
5\\
1\\
1
\end{array}\right) =
</tex>
<tex> \left(\begin{array}{cc}
-1\\
5\\
1
\end{array}\right)
</tex>
 
 
'''Замечание'''
 
<tex> R^{180} = \left(\begin{array}{ccc}
-1 & 0 & 0\\
0 & -1 & 0\\
0 & 0 & 1
\end{array}\right) </tex>, то есть центральная симметрия относительно начала координат меняет координаты точки на противоположные.
 
 
=== Тождественное преобразование ===
 
Это преобразование, оставляющее все точки неподвижными.
 
Его матрица: <tex> I = \left(\begin{array}{ccc}
1 & 0 & 0\\
0 & 1 & 0\\
0 & 0 & 1
\end{array}\right)
</tex>
 
= Композиция преобразований =
 
<tex> (g \circ f) x  = g (f (x)) </tex>
 
 
Задача: к точке <tex> (3, 5) </tex> применили осевую симметрию относительно <tex> O_x </tex>, и затем применили параллельный перенос на <tex> \overrightarrow{(2, 1)} </tex>. Какие новые координаты у точки?
 
Решение: обозначим нашу точку за <tex> P </tex>, новую точку за <tex> P' </tex>
 
Посчитаем двумя способами.
 
1) <tex> P' = S_{1, -1}(T_{\overrightarrow{(3, 2)}}(P)) =
\left(\begin{array}{ccc}
1 & 0 & 2\\
0 & 1 & 1\\
0 & 0 & 1
\end{array}\right) \cdot </tex>
<tex> (\left(\begin{array}{ccc}
1 & 0 & 0\\
0 & -1 & 0\\
0 & 0 & 1
\end{array}\right) \cdot </tex>
<tex> \left(\begin{array}{c}
3\\
5\\
1
\end{array}\right)) = </tex>
<tex> \left(\begin{array}{ccc}
1 & 0 & 2\\
0 & 1 & 1\\
0 & 0 & 1
\end{array}\right) \cdot </tex>
<tex> \left(\begin{array}{c}
3\\
-5\\
1
\end{array}\right) = </tex>
<tex> \left(\begin{array}{c}
5\\
-4\\
1
\end{array}\right) </tex>
 
 
 
2) Воспользуемся ассоциативностью умножения матриц (сочетательный закон)
 
<tex> P' = S_{1, -1}(T_{\overrightarrow{(3, 2)}}(P)) =
\left(\begin{array}{ccc}
1 & 0 & 2\\
0 & 1 & 1\\
0 & 0 & 1
\end{array}\right) \cdot </tex>
<tex> (\left(\begin{array}{ccc}
1 & 0 & 0\\
0 & -1 & 0\\
0 & 0 & 1
\end{array}\right) \cdot </tex>
<tex> \left(\begin{array}{c}
3\\
5\\
1
\end{array}\right)) = </tex>
<tex> (\left(\begin{array}{ccc}
1 & 0 & 2\\
0 & 1 & 1\\
0 & 0 & 1
\end{array}\right) \cdot </tex>
<tex> \left(\begin{array}{ccc}
1 & 0 & 0\\
0 & -1 & 0\\
0 & 0 & 1
\end{array}\right)) \cdot </tex>
<tex> \left(\begin{array}{c}
3\\
5\\
1
\end{array}\right) = </tex>
<tex> \left(\begin{array}{ccc}
1 & 0 & 2\\
0 & -1 & 1\\
0 & 0 & 1
\end{array}\right) \cdot </tex>
<tex> \left(\begin{array}{c}
3\\
5\\
1
\end{array}\right) = </tex>
<tex> \left(\begin{array}{c}
5\\
-4\\
1
\end{array}\right) </tex>
 
Заметим, что <tex> \left(\begin{array}{ccc}
1 & 0 & 2\\
0 & -1 & 1\\
0 & 0 & 1
\end{array}\right) </tex> {{---}} тоже какая-то матрица преобразования, в данном случае "осевая симметрия относительно <tex> O_x </tex>, с последующим параллельным переносом на <tex> \overrightarrow{(2, 1)} </tex>"
 
Действительно, <tex> P' = S_{1, -1}(T_{\overrightarrow{(2, 1)}}(P)) = (S_{1, -1} \circ T_{\overrightarrow{(2, 1)}}) P </tex>
 
Тогда матрица для <tex> (S_{1, -1} \circ T_{\overrightarrow{(2, 1)}}) </tex> будет <tex> \left(\begin{array}{ccc}
1 & 0 & 2\\
0 & -1 & 1\\
0 & 0 & 1
\end{array}\right) </tex>.
 
Получается, при композиции преобразований их матрицы перемножаются.
308
правок

Навигация