1

3 つの CG ポイントがあり、角度を計算したいと思います。

私は小さなスキーマを描きました:

ここに画像の説明を入力

私はこのコードで試しました:

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 に答える