计算材料

矩阵变换学习笔记

2019-01-03  本文已影响16人  BohrIsLay

二维矩阵变换:

我们把每个点坐标A(x, y)看成一个行向量a(x, y),采用齐次坐标法,即每个顶点坐标增加一个相同的分量1作为矩阵的一行,即(x,y,1)

1.平移:

平移向量P为(a,b),点A(x,y)平移后变为A'(x + a, y + b)

点A的矩阵为[x, y, 1],平移变换矩阵为
\left[ \begin{matrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ a & b & 1 \end{matrix} \right]

点A的矩阵乘以平移变换矩阵得到平移后的矩阵为

\begin{matrix} A & 平移矩阵 & & 平移后的矩阵A'\\ \left[\begin{array}{rr} x & y & 1 \end{array}\right] & \left[\begin{array}{rr} 1 & 0 & 0 \\ 0 & 1 & 0 \\ a & b & 1 \\ \end{array}\right] & = & \left[\begin{array}{rr} x + a & y + b & 1 \end{array}\right] \end{matrix}

2.旋转

旋转中心是坐标原点。旋转角度是β。
矩阵中的θ是图形绕坐标原点逆时针旋转的角度。
旋转变换矩阵
\left[ \begin{matrix} cosθ & sinθ & 0 \\ -sinθ & cosθ & 0 \\ 0 & 0 & 1 \end{matrix} \right]
点A的矩阵[x, y, 1]乘以旋转矩阵得到矩阵A'
\begin{matrix} A & 旋转矩阵 & & 旋转后的矩阵A'\\ \left[\begin{array}{rr} x & y & 1 \end{array}\right] & \left[\begin{array}{rr} cosθ & sinθ & 0 \\ -sinθ & cosθ & 0 \\ 0 & 0 & 1 \end{array}\right] & = & \left[\begin{array}{rr} xcosθ - ysinθ & xsinθ + ycosθ & 1 \end{array}\right] \end{matrix}

3.缩放

缩放中心是坐标原点,点(x,y)缩放到点(my,ny),m、n是缩放因子。
缩放变换矩阵:
\left[ \begin{matrix} m & 0 & 0 \\ 0 & n & 0 \\ 0 & 0 & 1 \end{matrix} \right]
点A(x,y),则点A的矩阵为[x, y ,1];当点A的矩阵乘以缩放变换矩阵可以得到缩放后点的矩阵为:
\begin{matrix} A & 旋转矩阵 & & 旋转后的矩阵A'\\ \left[\begin{array}{rr} x & y & 1 \end{array}\right] & \left[\begin{array}{rr} m & 0 & 0 \\ 0 & n & 0 \\ 0 & 0 & 1 \end{array}\right] & = & \left[\begin{array}{rr} mx & ny & 1 \end{array}\right] \end{matrix}

4.对称
(1)x轴对称

A(x,y) --> A'(x, -y)

对称矩阵

\left[ \begin{matrix} 1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 1 \end{matrix} \right]

(2) y轴对称

A(x, y) --> A'(-x, y)
对称矩阵
\left[ \begin{matrix} 1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 1 \end{matrix} \right]

(3)原点对称

A(x, y) --> A'(-x, -y)
对称矩阵
\left[ \begin{matrix} -1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 1 \end{matrix} \right]

5.错切变换

(1)图形关于X轴方向的错切变换,各点的纵坐标不变:
A(x, y) --> A'(x + cy , y)
关于X轴错切变换矩阵为:
\left[ \begin{matrix} 1 & 0 & 0 \\ c & 1 & 0 \\ 0 & 0 & 1 \end{matrix} \right]

(2)图形关于Y轴方向的错切变换,各点的横坐标不变:
A(x, y) --> A'(x , y + cx)
关于X轴错切变换矩阵为:
关于Y轴错切变换矩阵为:
\left[ \begin{matrix} 1 & c & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{matrix} \right]

6.组合变换

组合变换就是上面所介绍的平移变换,缩放变换,旋转变换, 对称变换,错切变换的相互作用之后产生的变换。

所有的图形变换都是基本变换的组合,这样图形变换就容易多了

参考:
https://blog.csdn.net/a396901990/article/details/44905791

三维矩阵变换

对三维空间的点P=[X Y Z],采用规范齐次坐标则与二维情况类似

1.平移变换

平移向量P为(tx,ty,tz),点A(x,y,z)平移后变为A'(x + tx, y + ty,z + tz)
点A的矩阵为[x, y, z,1],平移变换矩阵为
\left[ \begin{matrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1& 0\\ tx & ty &tz & 1\\ \end{matrix} \right]
点A的矩阵乘以平移变换矩阵得到平移后的矩阵为
\begin{matrix} A & 平移矩阵 & & 平移后的矩阵A'\\ \left[\begin{array}{rr} x & y & z & 1 \end{array}\right] & \left[\begin{array}{rr} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ tx & ty & tz & 1\\ \end{array}\right] & = & \left[\begin{array}{rr} x + tx & y + ty & z + tz & 1 \end{array}\right] \end{matrix}

2.旋转

矩阵中的θ是图形绕坐标轴逆时针旋转的角度。

(1)绕z轴旋转

A(x,y,z)旋转后变为A'(xcosθ - ysinθ, xsinθ + ycosθ, z)
旋转变换矩阵
\left[ \begin{matrix} cosθ & sinθ & 0 & 0\\ -sinθ & cosθ & 0 & 0\\ 0 & 0 & 1& 0\\ 0 & 0 & 0 & 1\\ \end{matrix} \right]

点A的矩阵乘以旋转变换矩阵得到旋转后的矩阵为
\begin{matrix} A & 绕z轴旋转矩阵 & & 旋转后的矩阵A'\\ \left[\begin{array}{rr} x & y & z & 1 \end{array}\right] & \left[\begin{array}{rr} cosθ & sinθ & 0 & 0\\ -sinθ & cosθ & 0 & 0\\ 0 & 0 & 1& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] & = & \left[\begin{array}{rr} xcosθ - ysinθ & xsinθ + ycosθ & z & 1 \end{array}\right] \end{matrix}

(2)绕x轴旋转

A(x,y,z)旋转后变为A'(x, ycosθ - zsinθ, ysinθ + zcosθ)
旋转变换矩阵
\left[ \begin{matrix} 1& 0 & 0 & 0\\ 0 & cosθ & sinθ & 0\\ 0 & -sinθ & cosθ& 0\\ 0 & 0 & 0 & 1\\ \end{matrix} \right]
点A的矩阵乘以旋转变换矩阵得到旋转后的矩阵为
\begin{matrix} A & 绕z轴旋转矩阵 & & 旋转后的矩阵A'\\ \left[\begin{array}{rr} x & y & z & 1 \end{array}\right] & \left[\begin{array}{rr} 1& 0 & 0 & 0\\ 0 & cosθ & sinθ & 0\\ 0 & -sinθ & cosθ& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] & = & \left[\begin{array}{rr} x & ycosθ - zsinθ & ysinθ + zcosθ & 1 \end{array}\right] \end{matrix}

(3)绕y轴旋转

A(x,y,z)旋转后变为A'(xcosθ + zsinθ,y, zcosθ - xsinθ)
旋转变换矩阵
\left[ \begin{matrix} cosθ& 0 & -sinθ & 0\\ 0 & 1 & 0 & 0\\ sinθ & 0& cosθ& 0\\ 0 & 0 & 0 & 1\\ \end{matrix} \right]
点A的矩阵乘以旋转变换矩阵得到旋转后的矩阵为
\begin{matrix} A & 绕y轴旋转矩阵 & & 旋转后的矩阵A'\\ \left[\begin{array}{rr} x & y & z & 1 \end{array}\right] & \left[\begin{array}{rr} cosθ& 0 & -sinθ & 0\\ 0 & 1 & 0 & 0\\ sinθ & 0& cosθ& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] & = & \left[\begin{array}{rr} xcosθ + zsinθ & y & zcosθ - xsinθ & 1 \end{array}\right] \end{matrix}

3.缩放
(1)局部缩放

相对坐标原点的比例变换
A(x,y,z)旋转后变为A'(xSx, ySy, zSz), Sx, Sy, Sz为缩放因子
缩放变换矩阵
\left[ \begin{matrix} Sx& 0 & 0 & 0\\ 0 & Sy & 0 & 0\\ 0 & 0& Sz& 0\\ 0 & 0 & 0 & 1\\ \end{matrix} \right]

点A的矩阵乘以缩放变换矩阵得到旋转后的矩阵为
\begin{matrix} A & 缩放矩阵 & & 缩放后的矩阵A'\\ \left[\begin{array}{rr} x & y & z & 1 \end{array}\right] & \left[\begin{array}{rr} Sx& 0 & 0 & 0\\ 0 & Sy & 0 & 0\\ 0 & 0& Sz& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] & = & \left[\begin{array}{rr} xSx & ySy & zSz & 1 \end{array}\right] \end{matrix}

(2)整体缩放

缩放矩阵为
\left[ \begin{matrix} 1& 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0& 1& 0\\ 0 & 0 & 0 & s\\ \end{matrix} \right]
点A的矩阵乘以缩放变换矩阵得到旋转后的矩阵为
\begin{matrix} A & 缩放矩阵 & & 缩放后的矩阵A'\\ \left[\begin{array}{rr} x & y & z & 1 \end{array}\right] & \left[\begin{array}{rr} 1& 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0& 1& 0\\ 0 & 0 & 0 & s\\ \end{array}\right] & = & \left[\begin{array}{rr} x/s & y/s & z/s & 1 \end{array}\right] \end{matrix}

4.对称变换
(1)关于对称平面变换
1.1关于xoy平面对称变换

\begin{matrix} \left[\begin{array}{rr} x' & y' & z' & 1 \end{array}\right] & = & \left[\begin{array}{rr} x & y & -z & 1 \end{array}\right] \end{matrix}

\begin{matrix} T & = & \left[\begin{array}{rr} 1& 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0& -1& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] \end{matrix}

\begin{matrix} A & 变换矩阵 & & 变换后的矩阵A'\\ \left[\begin{array}{rr} x & y & z & 1 \end{array}\right] & \left[\begin{array}{rr} 1& 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0& -1& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] & = & \left[\begin{array}{rr} x & y & -z & 1 \end{array}\right] \end{matrix}

1.2关于xoz平面对称变换

\begin{matrix} \left[\begin{array}{rr} x' & y' & z' & 1 \end{array}\right] & = & \left[\begin{array}{rr} x & -y & z & 1 \end{array}\right] \end{matrix}

\begin{matrix} T & = & \left[\begin{array}{rr} 1& 0 & 0 & 0\\ 0 & -1 & 0 & 0\\ 0 & 0& 1& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] \end{matrix}

\begin{matrix} A & 变换矩阵 & & 变换后的矩阵A'\\ \left[\begin{array}{rr} x & y & z & 1 \end{array}\right] & \left[\begin{array}{rr} 1& 0 & 0 & 0\\ 0 & -1 & 0 & 0\\ 0 & 0& 1& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] & = & \left[\begin{array}{rr} x & -y & z & 1 \end{array}\right] \end{matrix}

1.3关于yoz平面对称变换

\begin{matrix} \left[\begin{array}{rr} x' & y' & z' & 1 \end{array}\right] & = & \left[\begin{array}{rr} -x & y & z & 1 \end{array}\right] \end{matrix}

\begin{matrix} T & = & \left[\begin{array}{rr} -1& 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0& 1& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] \end{matrix}

\begin{matrix} A & 变换矩阵 & & 变换后的矩阵A'\\ \left[\begin{array}{rr} x & y & z & 1 \end{array}\right] & \left[\begin{array}{rr} -1& 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0& 1& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] & = & \left[\begin{array}{rr} -x & y & z & 1 \end{array}\right] \end{matrix}

(2)关于对称轴变换
2.1关于x轴对称变换

\begin{matrix} \left[\begin{array}{rr} x' & y' & z' & 1 \end{array}\right] & = & \left[\begin{array}{rr} x & -y & -z & 1 \end{array}\right] \end{matrix}

\begin{matrix} T & = & \left[\begin{array}{rr} 1& 0 & 0 & 0\\ 0 & -1 & 0 & 0\\ 0 & 0& -1& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] \end{matrix}

\begin{matrix} A & 变换矩阵 & & 变换后的矩阵A'\\ \left[\begin{array}{rr} x & y & z & 1 \end{array}\right] & \left[\begin{array}{rr} 1& 0 & 0 & 0\\ 0 & -1 & 0 & 0\\ 0 & 0& -1& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] & = & \left[\begin{array}{rr} x & -y & -z & 1 \end{array}\right] \end{matrix}

2.2关于y轴对称变换

\begin{matrix} \left[\begin{array}{rr} x' & y' & z' & 1 \end{array}\right] & = & \left[\begin{array}{rr} -x & y & -z & 1 \end{array}\right] \end{matrix}

\begin{matrix} T & = & \left[\begin{array}{rr} -1& 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0& -1& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] \end{matrix}

\begin{matrix} A & 变换矩阵 & & 变换后的矩阵A'\\ \left[\begin{array}{rr} x & y & z & 1 \end{array}\right] & \left[\begin{array}{rr} -1& 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0& -1& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] & = & \left[\begin{array}{rr} -x & y & -z & 1 \end{array}\right] \end{matrix}

2.3关于z轴对称变换

\begin{matrix} \left[\begin{array}{rr} x' & y' & z' & 1 \end{array}\right] & = & \left[\begin{array}{rr} -x & -y & 1z & 1 \end{array}\right] \end{matrix}

\begin{matrix} T & = & \left[\begin{array}{rr} -1& 0 & 0 & 0\\ 0 & -1 & 0 & 0\\ 0 & 0& 1& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] \end{matrix}

\begin{matrix} A & 变换矩阵 & & 变换后的矩阵A'\\ \left[\begin{array}{rr} x & y & z & 1 \end{array}\right] & \left[\begin{array}{rr} -1& 0 & 0 & 0\\ 0 & -1 & 0 & 0\\ 0 & 0& 1& 0\\ 0 & 0 & 0 & 1\\ \end{array}\right] & = & \left[\begin{array}{rr} -x & -y & z & 1 \end{array}\right] \end{matrix}

三维变换矩阵的功能分块

\left[ \begin{array}{ccc|c} a11& a21 & a31 & Px\\ a12 & a22 & a32 & Py\\ a13 & a23& a33& Pz\\ \hline tx & ty & tz & s\\ \end{array} \right]
左下角三维平移变换部分,左上角三维线性变换部分,右上角透视变换部分,右下角整体比例因子

任何三维变换都可以转换为基本三维变换的组合
比如绕任意轴旋转,可通过平移,旋转等基本三维变换转换为绕某坐标轴旋转;

参考:
https://blog.csdn.net/piaoxuezhong/article/details/70171525

上一篇下一篇

猜你喜欢

热点阅读