如果知道一个平行四边形的3各定点的坐标要把这个平行四边形变换成矩形的,用仿射变换,那6各系数如何求出
最好能给一些算法的代码,谢谢了~

解决方案 »

  1.   

    已知平行四边形的三个顶点P1, P2, P3
    按照仿射坐标系的定义来说,空间任意一点P的仿射坐标{u,v } 满足:
        P  = u * (P2-P1) + v * (P3-P1) + P1
    展开得到的方程为:
      P.x = u * (P2-P1).x  + v * (P3-P1).x + P1.x
      P.y = u * (P2-P1).y  + v * (P3-P1).y + P1.y为了方便,我们让:
       c11 = (p2-p1).x    c12 = (p3-p1).x   c13 = p1.x
       c21 = (p2-p1).y    c22 = (p3-p1).y   c23 = p1.y
    既:
       p.x = u * c11 + v * c12 + c13
       p.y = u * c21 + v * c22 + c23而我们所需要的六个参数d11, d12, d13, d21, d22, d23,他们能满足:
      u = d11 * p.x + d12 * p.y + d13
      v = d21 * p.x + d22 * p.y + d23我们让delta = 1.0/ (c11 * c22 - c12 * c21)
      d11 = c22 * delta    d12 = -c21 * delta   d13 = (c12*c23-c13*c22) * delta
      d21 = c12 * delta    d22 = -c11 * delta   d23 = (c11*c23-c21*c13) * delta在这六个系数作用下
    P1 对应为 {0, 0}
    P2 对应为 {1, 0}
    P3 对应为 {0, 1}
      

  2.   

    非常感谢~
    问一下,那个delta是怎么设置的
    P1,P2,P3经过仿射变换后怎么能够成为如 P1(0,0),P2(m,0),p(0,n)这样的
    就是说矩形的面积和原来四边形的一样。