图片在http://218.75.127.234/Q.jpg意思是一个画图环境转了-90度,然后哪个原先的(x,y)点和后来的(x1,y1)是什么关系
各位帮我写一个用x,y来求x1,y1的公式,多谢

解决方案 »

  1.   

    如果你能旋转,就一定知道旋转点(x0,y0)吧!
    你可以先求(X,Y)与旋转点X0,Y0相对于X坐标的角度值
    在求(X1,Y1)与旋转点X0,Y0相对于X坐标的角度值,
    两值相减就的其关系
      

  2.   

    只有你前提知道X,Y坐标,
    并且知道旋转角度
    才可以求出XY旋转后的坐标!
    其实
    算法很简单的!
      

  3.   

    要求两个坐标系共一个原点,如果不是就平移到一起,角度从旧坐标系的X正向开始逆时针方向的角度;
    // 仿射变换。
    //dx1,dy1-->点在旧坐标系中的坐标;
    //dAngle--->旋转角度,以弧度为单位,从旧坐标系的x正向逆时针到新坐标系X正向的角度;
    //pdx2,pdy2-->返回的点在新坐标系中的坐标。
    void CoordTransformation(double dx1, double dy1, double dAngle, double *pdx2, double *pdy2)
    {
    double a1, b1; a1 = cos(dAngle);
    b1 = sin(dAngle);
    *pdx2 =  a1*dx1+b1*dy1;
    *pdy2 = -b1*dx1+a1*dy1;
    }// 仿射变换反变换。
    //dx1,dy1-->点在新坐标系中的坐标;
    //dAngle--->旋转角度,以弧度为单位,从旧坐标系的x正向逆时针到新坐标系X正向的角度;
    //pdx2,pdy2-->返回的点在旧坐标系中的坐标。
    void CoordAntiTransformation(double dx1, double dy1, double dAngle, double *pdx2, double *pdy2)
    {
    double a1, b1; a1 = cos(dAngle);
    b1 = sin(dAngle);
    *pdx2 = a1*dx1-b1*dy1;
    *pdy2 = b1*dx1+a1*dy1;
    }