几何变换算法
强推中国大学MOOC万琳老师的网课
老师神颜,爱了爱了
数学基础
可以看这篇博客
https://www.cnblogs.com/wkfvawl/p/11643976.html
主要用到一些基础的线性代数的知识点
齐次坐标
齐次,字面上的意思大概是做一个统一。
基本变换 | 转移式---------- |
---|---|
平移 | \(x^{\prime}=x+T_{x}\) \(y^{\prime}=y+T_{y}\) |
对称(关于x轴)* | \(x^{\prime}=x\) \(y^{\prime}=-y\) |
比例 | \(x^{\prime}=x \times s_{x}\) \(y^{\prime}=y \times s_{y}\) |
错切 * | \(x^{\prime}=x+d y\) \(y^{\prime}=b x+y\) |
旋转 | \(x^{\prime}=x \cos \theta-y \sin \theta\) \(y^{\prime}=x \sin \theta+y \cos \theta\) |
*:老师ppt没有强调
为什么要引入齐次坐标?
-
几何变换矩阵运算表示形式不统一
为了运算统一
-
对多个点同时进行相同的多次变换时,分别利用矩阵计算各点变换的计算量大
这个比较好理解,类比acm中的矩阵快速幂,先求出转移矩阵效率高
什么是齐次坐标?
- 定义:\((x,y)\)点对应的齐次坐标:\((x_h,y_h,h)x_h=h*x,y_h=h*y,h\neq0\)
- 齐次坐标表示就是用 \(n+1\)维向量表示一个 \(n\)维向量
- 以二维坐标系下点 \(p(4,3)\)为例: 齐次坐标表示为\(p(h_x,h_y,h_z)\) 具体可以为\(P(4,3,1), P(8,6,2)\)等
- 规范化:上例规范化齐次坐标表示\(P(4,3,1)\),即 \(h=1\)
- \(h=0\) 表示无穷远的点
二维变换的矩阵
基于齐次坐标的变换可以全部统一为矩阵运算:
\[\left[\begin{array}{lll}
x^{\prime} & y^{\prime} & 1
\end{array}\right]=\left[\begin{array}{lll}
x & y & 1
\end{array}\right] \cdot T_{2D}=\left[\begin{array}{lll}
x & y & 1
\end{array}\right] \cdot\left[\begin{array}{lll}
a & b & p \\
c & d & q \\
l & m & s
\end{array}\right] \]
- 平移变换
\[\left[\begin{array}{l}
x^{\prime} \\
y^{\prime} \\
1
\end{array}\right]=\left[\begin{array}{lll}
1 & 0 & t_{x} \\
0 & 1 & t_{y} \\
0 & 0 & 1
\end{array}\right]\left[\begin{array}{l}
x \\
y \\
1
\end{array}\right]\]
- 旋转变换
\[\left[\begin{array}{l}
x^{\prime} \\
y^{\prime} \\
1
\end{array}\right]=\left[\begin{array}{ccc}
\cos \theta & -\sin \theta & 0 \\
\sin \theta & \cos \theta & 0 \\
0 & 0 & 1
\end{array}\right]\left[\begin{array}{l}
x \\
y \\
1
\end{array}\right]\]
- 放缩变换
\[\left[\begin{array}{l}
x^{\prime} \\
y^{\prime} \\
1
\end{array}\right]=\left[\begin{array}{lll}
s_{x} & 0 & 0 \\
0 & s_{y} & 0 \\
0 & 0 & 1
\end{array}\right]\left[\begin{array}{l}
x \\
y \\
1
\end{array}\right]\]
转移矩阵统一表示形式的好处
- 便于变换合成连续变换时,可以先得到变换的矩阵
- 便于硬件实现只需实现矩阵乘法
变换的性质
1.平移和旋转变换具有可加性
2.放缩变换具有可乘性
待更
不要忘记努力,不要辜负自己
欢迎指正 QQ:1468580561