强推中国大学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.放缩变换具有可乘性
待更