用三个CGpoint计算角度

时间:2012-10-27 22:44:22

标签: objective-c ios rotation cgpoint

我有三个CGpoint,我想计算角度。

我画了一个小图案:

enter image description here

我尝试使用此代码:

CGPoint u ;
        u.x = 0;
        u.y = - middleRectY;

        CGPoint v ;
        v.x = x1 -  middelRectX;
        v.y = y1 - middleRectY;

        // formule = u.v / ( ||u|| * ||v||)

        double cosa = (double)((u.x * v.x + u.y * v.y)) / sqrt(u.x * u.x + u.y * u.y) * sqrt(v.x * v.x + v.y * v.y);

        // angle en degré

        double angle = (180.0 / M_PI) * acos(cosa);

        // Signe de l'angle

        int sign = (u.x * v.y - u.y * v.x) > 0 ? 1 : -1;

        rectYellow.transform = CGAffineTransformMakeRotation(angle*sign);

但是我的函数返回“nan”:/

Thx:)

1 个答案:

答案 0 :(得分:0)

我发现了问题!

这只是一个括号问题:

double cosa = ((u.x * v.x) + (u.y * v.y)) / (sqrt((u.x * u.x) + (u.y * u.y)) * sqrt((v.x * v.x) + (v.y * v.y)));

我不明白为什么? 因为乘法不是括号所必需的......