之前工作上需要做一个这个小算法,我在网上查了下基本都是矩阵平移缩放旋转等原理讲解,比较复杂,但是我这里只平移和缩放不需要用矩阵,解出下面组方程的a、b、c、d就好了
x=ax'+b
y=cy'+d
解这个方程需要两组对应点,下面直接给出带入求解结果:
a = (p2.x - p1.x) / (float)(p_2.x - p_1.x);
b = (p1.x*p_2.x - p2.x*p_1.x) / (float)(p_2.x - p_1.x);
c = (p2.y - p1.y) / (float)(p_2.y - p_1.y);
d = (p1.y*p_2.y - p2.y*p_1.y) / (float)(p_2.y - p_1.y);
其中p1和p2是一组对应点,p_1和p_2是另一组,另外如果加上图像旋转的话方程就变成下面:
x = x'a-y'b+h
y = x'c+y'd+k
这个方程六个未知数所以需要三组点,而且这个方程直接解会比较麻烦可以用矩阵求得。