我有一个圆圈的旋转,从0到360再回到0到360,依此类推。现在我想要累积度数,以便我得到0到360到720等等。
所以我有2个变量
var rotation = <goes from 0-360>
var cumulativeRotation = <should go from 0-+360>
知道旋转,应该计算cumulativeRotation。
我的第一个想法是记住previousRotation并将其从旋转中减去并将其添加到cumulativeRotation,但是当你从360回到0时,你打破了圆圈
有一种简单的方法可以解决这个问题吗?
答案 0 :(得分:0)
为什么不简单地迭代cumulativeRotation
,并从中计算rotation
,将其除以模数360?
答案 1 :(得分:0)
拥有单独的财产有什么问题?这听起来不错,只要你严格管理它。
- (void)setCumulativeRotation:(NSInteger)cumulativeRotation
{
if (cumulativeRotation > 719 || cumulativeRotation < 0)
cumulativeRotation = 0;
_cumulativeRotation = cumulativeRotation;
}
你也可以覆盖.rotation
的setter来跟踪它通过0(或360)的次数,尽管没有办法可以稳健地处理旋转设置为任意值的情况: / p>
- (void)setRotation:(NSInteger)rotation
{
if ( _rotation > rotation)
{
// counter-clockwise
if (rotation < 0)
self.numberOfRevolutions--;
} else if (_rotation < rotation)
{
// clockwise
if (rotation > 719)
self.numberOfRevolutions++;
}
_rotation = rotation;
}
那样的东西?