1

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

我画了一个小架构:

在此处输入图像描述

我试过这段代码:

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”:/

谢谢 :)

4

1 回答 1

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)));

我不明白为什么?因为括号对于乘法来说不是必需的......

于 2012-10-27T23:25:07.293 回答