累积圆圈旋转

时间:2015-03-20 10:54:17

标签: ios objective-c iphone swift

我有一个圆圈的旋转,从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时,你打破了圆圈

有一种简单的方法可以解决这个问题吗?

2 个答案:

答案 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;
}

那样的东西?