1

さて、
写真にこのような円があります。
赤い線を好きなだけ回転させたい。

円は 0 ~ 300 度で始まります。

で何かやり始めた

CGFloat wAngle = Degrees2Radians([_Weight.text intValue]/300.0*360);
_Arrow.layer.transform = CATransform3DMakeRotation (wAngle + M_PI, 0, 0, 1);

しかし、このスニペットでは、0 の値が下ではなく上にありました。
おそらく私は三角法の天才ではないので... :)

ここに画像の説明を入力

矢印を適切に回転させる正しい方法は何ですか?
角度の値はどのように設定しますか?

ありがとう。

4

2 に答える 2

2

度とラジアンを変換する必要はありません。あなたには相対的な価値があります:

CGFloat relativeAngle = [_Weight.text intValue] / 300.0;

だからそれを使用してください:

_Arrow.layer.transform = CATransform3DMakeRotation(relativeAngle * M_PI*2, 0, 0, 1);

開始位置が間違っている場合は、ビューの初期位置を変更してください。(または、間違った角度を新しい角度に合計し(relativeAngle * M_Pi*2 + correction)ます。

// what PI means in degrees
M_PI * 2 = 360°  
M_PI     = 180°  
M_PI_2   = 90°  
M_PI_4   = 45°  
于 2012-11-30T11:24:09.587 に答える
0

このような相対角度を持つことができます

// transform your degrees (0->300) to radians
// (considering your starting direction is at M_PI*3/2)
CGFloat relativeAngle = - [_Weight.text intValue] * M_PI / 150.0;

_Arrow.layer.transform = CATransform3DMakeRotation(relativeAngle, 0, 0, 1);
于 2012-11-30T11:42:10.837 に答える