几何变换算法

强推中国大学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 imes s_{x})
(y^{prime}=y imes s_{y})
错切 * (x^{prime}=x+d y)
(y^{prime}=b x+y)
旋转 (x^{prime}=x cos heta-y sin heta)
(y^{prime}=x sin heta+y cos heta)

*:老师ppt没有强调

为什么要引入齐次坐标?

  • 几何变换矩阵运算表示形式不统一

    为了运算统一

  • 对多个点同时进行相同的多次变换时,分别利用矩阵计算各点变换的计算量大

    这个比较好理解,类比acm中的矩阵快速幂,先求出转移矩阵效率高

什么是齐次坐标?

  • 定义:((x,y))点对应的齐次坐标:((x_h,y_h,h)x_h=h*x,y_h=h*y,h eq0)
  • 齐次坐标表示就是用 (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[egin{array}{lll} x^{prime} & y^{prime} & 1 end{array} ight]=left[egin{array}{lll} x & y & 1 end{array} ight] cdot T_{2D}=left[egin{array}{lll} x & y & 1 end{array} ight] cdotleft[egin{array}{lll} a & b & p \ c & d & q \ l & m & s end{array} ight] ]

  • 平移变换

[left[egin{array}{l} x^{prime} \ y^{prime} \ 1 end{array} ight]=left[egin{array}{lll} 1 & 0 & t_{x} \ 0 & 1 & t_{y} \ 0 & 0 & 1 end{array} ight]left[egin{array}{l} x \ y \ 1 end{array} ight]]

  • 旋转变换

[left[egin{array}{l} x^{prime} \ y^{prime} \ 1 end{array} ight]=left[egin{array}{ccc} cos heta & -sin heta & 0 \ sin heta & cos heta & 0 \ 0 & 0 & 1 end{array} ight]left[egin{array}{l} x \ y \ 1 end{array} ight]]

  • 放缩变换

[left[egin{array}{l} x^{prime} \ y^{prime} \ 1 end{array} ight]=left[egin{array}{lll} s_{x} & 0 & 0 \ 0 & s_{y} & 0 \ 0 & 0 & 1 end{array} ight]left[egin{array}{l} x \ y \ 1 end{array} ight]]

转移矩阵统一表示形式的好处

  1. 便于变换合成连续变换时,可以先得到变换的矩阵
  2. 便于硬件实现只需实现矩阵乘法

变换的性质

1.平移和旋转变换具有可加性

2.放缩变换具有可乘性

待更

原文地址:https://www.cnblogs.com/smallocean/p/12483275.html