已知屏幕上2点(x1,y1),(x2,y2),让(x1,y1)围绕(x2,y2)旋转一定的角度n°,求旋转后(x2,y2)的位置

解决方案 »

  1.   

    第1步:以(x2,y2)为园心作一个园,半径是r=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))。
       则,园的方程是:(x-x2)*(x-x2)+(y-y2)*(y-y2)=r*r
    第2步:求点(x1,y1)与园心的连线和X轴所成的夹角。
      

  2.   

    不是(x1,y1)绕(x2,y2)旋转吗?应该是求旋转之后(x1,y1)的坐标吧。
    NewX=x2 + (x1 - x2)*cos(n/3.14) - (y1 - y2)*sin(n/3.14)
    NewY=y2 + (x1 - x2)*sin(n/3.14) + (y1 - y2)*cos(n/3.14)注意上面是右手系的逻辑坐标,和普通绘图时的设备坐标不太一样,使用时注意
      

  3.   

    哦,错了!
    第2步:求点(x1,y1)与园心(x2,y2)的连线旋转n°后,求(x1,y1)的位置。
      

  4.   

    再请问dlyme 一个问题,为何要将n去除以3.14后求正弦余弦?
      

  5.   

    VB里的正弦余弦函数都是以弧度制为单位的。你说n是角度,所以要除以圆周率从而转换成弧度。