📜  二维图形中的复合变换

📅  最后修改于: 2022-05-13 01:57:14.445000             🧑  作者: Mango

二维图形中的复合变换

先决条件 - 二维变换的基本类型:

  1. 翻译
  2. 缩放
  3. 回转
  4. 反射
  5. 二维物体的剪切

复合变换:
顾名思义,它是组合,在这里我们将两个或多个变换组合成一个单一的变换,相当于在二维对象上一个接一个执行的变换。

例子 :
考虑我们有一个二维对象,我们首先对其应用变换T 1 (二维矩阵条件) ,然后在二维对象上应用变换 T 2 (二维矩阵条件) ,对象得到变换,我们可以通过将T 1 & T 2 (二维矩阵条件)彼此相乘,然后将T 12 (T 1 XT 2 的结果与 2- D 图像以获得转换后的最终图像。

问题 :
考虑我们有一个正方形O(0, 0), B(4, 0), C(4, 4), D(0, 4)在给定缩放因子为 Sx=Sy= 的情况下,我们首先对其应用 T1(缩放变换) 0.5然后我们应用T2(顺时针方向旋转变换)它90 * (角度),最后我们执行T3(关于原点的反射变换)。

答:正方形 O、A、C、D 看起来像:



Square_given(图1)

首先,我们对二维对象进行缩放变换:

缩放条件的表示:

\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}Sx&0\\0&Sx\end{bmatrix}*\begin{bmatrix}x\\y\end{bmatrix}\\

对于坐标 O(0, 0) :
O\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}0.5&0\\0&0.5\end{bmatrix}*\begin{bmatrix}0\\0\end{bmatrix}\\\\[1ex]O\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}0\\0\end{bmatrix}

对于坐标 B(4, 0) :
B\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}0.5&0\\0&0.5\end{bmatrix}*\begin{bmatrix}4\\0\end{bmatrix}\\\\[1ex]B\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}2\\0\end{bmatrix}

对于坐标 C(4, 4) :
C\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}0.5&0\\0&0.5\end{bmatrix}*\begin{bmatrix}4\\4\end{bmatrix}\\\\[1ex]C\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}2\\2\end{bmatrix}

对于坐标 D(0, 4) :
D\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}0.5&0\\0&0.5\end{bmatrix}*\begin{bmatrix}0\\4\end{bmatrix}\\\\[1ex]D\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}0\\2\end{bmatrix}

缩放后的二维对象:

图2

*现在,我们将在图 2 上进行顺时针方向旋转 90 θ 的旋转变换:



二维物体绕原点旋转变换的条件为:

\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}cosθ&sinθ\\-sinθ&cosθ\end{bmatrix}*\begin{bmatrix}x\\y\end{bmatrix}\\\\[1ex] Cos90 = 0 \\ sin90=1

对于坐标 O(0, 0) :
O\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}0&1\\-1&0\end{bmatrix}*\begin{bmatrix}0\\0\end{bmatrix}\\\\[1ex]O\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}0\\0\end{bmatrix}

对于坐标 B(2, 0) :
B\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}0&1\\-1&0\end{bmatrix}*\begin{bmatrix}2\\0\end{bmatrix}\\\\[1ex]B\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}0\\-2\end{bmatrix}

对于坐标 C(2, 2) :
C\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}0&1\\-1&0\end{bmatrix}*\begin{bmatrix}2\\2\end{bmatrix}\\\\[1ex]C\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}2\\-2\end{bmatrix}

对于坐标 D(0, 2) :
D\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}0&1\\-1&0\end{bmatrix}*\begin{bmatrix}0\\2\end{bmatrix}\\\\[1ex]D\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}2\\0\end{bmatrix}

绕原点旋转 90 *角度后的二维对象:

图3

*现在,我们将在图 3 上执行倒数第三个操作,通过反映原点:

反映物体关于原点的条件是

\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}-1&0\\0&-1\end{bmatrix}*\begin{bmatrix}x\\y\end{bmatrix}\\\\[1ex]

对于坐标 O(0, 0) :
O\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}-1&0\\0&-1\end{bmatrix}*\begin{bmatrix}0\\0\end{bmatrix}\\\\[1ex]O\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}0\\0\end{bmatrix}

对于坐标 B'(0, 0) :
B'\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}0&-1\\-1&0\end{bmatrix}*\begin{bmatrix}0\\2\end{bmatrix}\\\\[1ex]B'\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}-2\\0\end{bmatrix}



对于坐标 C'(0, 0) :
C'\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}-1&0\\0&-1\end{bmatrix}*\begin{bmatrix}2\\-2\end{bmatrix}\\\\[1ex]C'\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}-2\\2\end{bmatrix}

对于坐标 D'(0, 0) :
D'\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}-1&0\\0&-1\end{bmatrix}*\begin{bmatrix}0\\-2\end{bmatrix}\\\\[1ex]D'\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}0\\2\end{bmatrix}

反射原点后的最终二维对象,我们得到:

图4

注:以上图4的最终结果,是我们将所有的变换依次应用后得到的。我们也可以通过将所有变换二维矩阵条件组合在一起并相互乘以得到乘法(R)的结果来获得相同的结果。然后,在给定正方形(上方)的每个坐标处应用该二维结果矩阵(R)。因此,您将获得与图 4 中相同的结果。

使用复合变换的解决方案:
*首先我们将缩放变换的二维矩阵条件与旋转变换相乘:

\begin{bmatrix}R_1\end{bmatrix}=\begin{bmatrix}0.5&0\\0&0.5\end{bmatrix}*\begin{bmatrix}0&1\\-1&0\end{bmatrix}\\\\[1ex]\begin{bmatrix}\\R_1\end{bmatrix}=\begin{bmatrix}0&0.5\\-0.5&0\end{bmatrix}

*现在,我们将 Resultant 2-D matrix(R 1 ) 与倒数第三个给定的变换反射条件 (R 2 ) 相乘,得到 Resultant(R) :

\begin{bmatrix}R\end{bmatrix}=\begin{bmatrix}0&0.5\\-0.5&0\end{bmatrix}*\begin{bmatrix}-1&0\\0&-1\end{bmatrix}\\\\[1ex]\begin{bmatrix}\\R\end{bmatrix}=\begin{bmatrix}0&-0.5\\0.5&0\end{bmatrix}

现在,我们将在给定对象(正方形)的每个坐标处应用二维矩阵的 Resultant(R) 以获得最终的变换或修改对象。



第一个变换坐标 O(0, 0) 是:
O\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}0&-0.5\\0.5&0\end{bmatrix}*\begin{bmatrix}0\\0\end{bmatrix}\\\\[1ex]O\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}0\\0\end{bmatrix}

其次,变换后的坐标 B'(4, 0) 是:
B'\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}0&-0.5\\0.5&0\end{bmatrix}*\begin{bmatrix}4\\0\end{bmatrix}\\\\[1ex]B'\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}0\\2\end{bmatrix}

第三个变换坐标 C'(4, 4) 是:
C'\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}0&-0.5\\0.5&0\end{bmatrix}*\begin{bmatrix}4\\4\end{bmatrix}\\\\[1ex]C'\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}-2\\2\end{bmatrix}

第四个变换坐标 D'(0, 4) 是:
D'\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}0&-0.5\\0.5&0\end{bmatrix}*\begin{bmatrix}0\\4\end{bmatrix}\\\\[1ex]D'\begin{bmatrix}\\x'\\y'\end{bmatrix}=\begin{bmatrix}-2\\0\end{bmatrix}

您获得的转换对象的最终结果将与上述相同: