二维矩阵变换

矩阵变换是一种线性变换,线段变换后仍是线段,并且原点不会改变

数学中的矩阵计算

矩阵计算包括加法、减法、乘法、共轭、转置等,在平面图形中主要介绍点乘。矩阵的乘法满足以下运算律:


结合律:

左分配律:

右分配律:

齐次坐标

齐次坐标使用(x, y, w)描述,等价与二维坐标(x/w, y/w),如果w = 1,就可以当二维坐标使用,w的值必须大于等于0。如果w趋近于0,那么它表示的点将趋近无穷远,所以在齐次坐标系中可以有无穷的概念,齐次坐标的存在,使得用矩阵乘法来描述顶点变换成为可能。

来源于WebGL编程指南

平移

对于一点V(x, y)在平面上向x方向平移dx,向y方向平移dy,如果矩阵的加法表示:
V = , M =
则平移后V’ = V + M = ,对应点V’(x+dx, y+dy)

如果用点乘表示则:

V = , M =
点V经过矩阵M变换后表示:
V’ = M·V = · = ,所以变换后的点V’(x+dx, y+dy)

缩放

直线的缩放是点的缩放,假如有点V(x, y),经过缩放矩阵M = 变换,则得到点V’
V’ = M ·V = · = ,得到点V’(sxx, syy)

旋转

71080-20171116101008734-1171446672.png

旋转是基于原点的旋转,假如有点V(x, y),经过旋转矩阵M = 变换后,得到点V’
V’ = M·V = · = ,得到点V’(xcosθ - ysinθ, x*sinθ+ycosθ)

变形

可以将以上三种矩阵合在一起对平面图形进行矩阵变换,M =
a (m11):水平方向的缩放
b (m12):水平方向的倾斜偏移
c (m21):竖直方向的倾斜偏移
d (m22):竖直方向的缩放
e (_dx_):水平方向的移动
f (_dy_):竖直方向的移动

总结

平移矩阵:M =
缩放矩阵:M =
旋转矩阵:M =