以Android为例,在使用Matrix进行绘图时有如下变换方法
public boolean preScale(float sx, float sy, float px, float py)
public boolean preTranslate(float dx, float dy)
public boolean preRotate(float degrees, float px, float py)
public boolean preSkew(float kx, float ky, float px, float py)
在我们进行图片变换的时候,需要做各种各样的操作,其中的原理需要我们细细体会一下,今天来总结下图形变换的核心原理
首先我们计(w,v)(w,v)为源图像的像素点位置,(x,y)(x,y)为目标像素点的位置。我们当前有一个变化因子记为TT,这三者之前存在着这样的映射关系:
(x,y,1)=(w,v,1)T
T是一个3×33×3的矩阵
T = ⎣⎡100010001⎦⎤
| 变换名称 |
仿射矩阵 |
坐标公式 |
| 恒等变换 |
⎣⎡100010001⎦⎤ |
x=w y=v |
| 尺度变换 |
⎣⎡Cx000Cy0001⎦⎤ |
$x=C_x w $ y=Cyv
|
| 旋转变换 |
⎣⎡cosθ−sinθ0sinθcosθ0001⎦⎤ |
x=wcosθ−vsinθ y=vsinθ+wcosθ
|
| 平移变换 |
⎣⎡10tx01ty001⎦⎤ |
$x = w + t_x $ y=v+ty
|
| 偏移变换 |
⎣⎡1C20C110001⎦⎤ |
x=wC1+v y=wC2+v
|
以缩放为例,下图为缩放图像
♥

公式如下
(w,v,1)∗⎣⎡200020001⎦⎤=(2w,2v,1)
(0,0)坐标变成(0,0)
(0,1)坐标变成(0,2)
(1,1)坐标变成(2,2)
(1,0)坐标变成(2,0)