1
vector<CGPoint>::iterator i;
vector<CGPoint>* bp = bicyclePad.bikePathPoints;
for(i = bp->begin(); i != bp->end()-3; i++){
    angle = atan2((*i).y/(*i).x) * 180/ PI;
}

atan2 は float と double でのみ使用できると思います。しかし、私はイテレータでそれをやろうとしています。上記を行うにはどうすればよいですか?

4

2 に答える 2

4

atan2次の 2 つの引数を取ります。

angle = std::atan2(i->y, i->x) * 180 / PI;

正常に動作するはずです。正しいオーバーロード (typedef の対象に応じCGFloatて) が選択されます。

i->xand (これはand とi->y厳密に同等です) は (タイプ の) 数値であり、反復子ではないことに注意してください。(*i).x(*i).yCGFloat

于 2012-01-06T16:35:41.477 に答える
2

これはうまくいくはずですatan2(i->y, i->x) * 180 / PI

于 2012-01-06T16:36:34.970 に答える