大家好,想请教鼠标旋转图片时,那个角度怎么算啊,假定现在有这个三角形,三个点分别为图片的中心点A,鼠标按下时的点B,鼠标当前的点C,这三个点,可以算出一个小于等于180度的角度,但是大于180度怎么办啊,指教啊,最好有例子代码,谢谢!

解决方案 »

  1.   

    既然是以中心点A为基点进行旋转,那就算出A->B角度j1,A->C角度j2,j2-j1就是对原始图片的旋转角度,范围都是0~360度。
    double GetAngle(int nAX, int nAY, int nBX, int nBY)
    {
    double dX = nBX - nAX;
    double dY = nBY - nAY;
    double dDist = sqrt(dX*dX+dY*dY);

    if(dDist == 0.0)
    {
    return 0.0;
    }

    double dAngle = acos(fabs(dX)/dDist);

    if( (dX<=0) && (dY>=0) )
    {
    dAngle = PI-dAngle;
    }
    else if( (dX<=0) && (dY<=0) )
    {
    dAngle = PI+dAngle;
    }
    else if( (dX>=0) && (dY<=0) )
    {
    dAngle = 2*PI-dAngle;
    } return dAngle;
    }