已知图片上一些点的位置,图片旋转一定角度后(角度不定,但肯定小于45度),
在旋转后的图片上我已经检测出2个定位点的位置,并知道旋转前的位置。
如何通过旋转前的2个点,和旋转后2个点之间的位置,计算出其他点的位置?

解决方案 »

  1.   

    很容易P1 : x1 + j y1  ,  P2: x2 + j y2,  P0: 原点, A :角度 , j : 复数 sqrt(-1)
    P1', P2' 为变换后的点 
    变换为:
    (P1 - P0)* exp(j A) = P1' - P0    ----- (1)
    (P2 - P0)* exp(j A) = P2' - P0    ------(2)(2) - (1) 得:
    (P2 - P1)*exp(j A) = P2' - P1'exp(j A) = cos(A) + j sin(A)  = (P2' - P1') / (P2 - P1)  ----(3)
    (3) 式可得到旋转角度 A,  (1)(2) 式中可以得到原点 P0所有点的变幻为:
    P' - P0 = (P - P0)*exp(jA) = ((x-x0) + j (y-y0)) * (cos(A) + j sin(A)) 
      

  2.   

    思路我已经清楚,但是平面几何我都忘了。
    现在需要解决2个计算的公式就可以了。
    1、一个直角三角形,已知3个顶点p1,p2,p3的坐标,其中p2为直角,求p1的角度。
    2、一个等边3角形性,p1是2条等边组成的角,并且已经知道角度,p1,p2坐标都知道,求p3的坐标。
    最好用代码写出来。