旋转线像平衡板

时间:2012-11-30 10:30:52

标签: objective-c ios trigonometry catransform3d

那么,
我在照片中有这样一个圆圈。
我想把我的红线旋转到我想要的程度。

圆圈从0到300度开始。

我开始用

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

但在此代码段中,0值位于顶部,而不是底部 可能是因为我不是三角学的天才...... :)

enter image description here

正确旋转箭头的正确方法是什么?
如何设置角度值?

感谢。

2 个答案:

答案 0 :(得分: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°  

答案 1 :(得分: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);