0

我在屏幕上有一个轮子,它可以旋转。当用户在滚轮上滑动时,它应该根据滑动方向开始旋转。我完成了除了旋转方向(顺时针或逆时针)之外的所有功能。任何人都可以帮助我找到用户在滚轮上滑动的方向。

谢谢

4

2 回答 2

0

旋转是

解决方案1:

顺时针

  • 如果 touch point.y 高于车轮中心并且滑动是从小的 touch point.x 到更大的 x。或者
  • 如果 point.y 低于车轮中心并且滑动是从更大的 point.x 到更小的 x。

逆时针:
对面:

  • 如果 point.y 低于车轮中心并且滑动是从小的 touch point.x 到更大的 x。或者
  • 如果 point.y 高于车轮中心并且滑动是从较大的 point.x 到较小的 x。

有更好的解决方案,具有更复杂的数学,但一个是一个简单的解决方案。

更新这一个也很简单,而且更好!

解决方案2:

计算车轮中心 (x,y) 与接触 (x,y) 之间的角度:

 double angleRad =   atan2(dy/dx), where dy = touch.y - wheel.y, and dx analog.

对每个触摸事件执行此操作:如果角度增加,则顺时针,否则逆时针

于 2013-01-22T17:20:26.283 回答
0
_direction = 1;
if(_startPoint.y < rotarCenter.y) {

    if(_startPoint.x > endTouchPoint.x)
        _direction = -1;
}
else if(_startPoint.y > rotarCenter.y) {

    if(_startPoint.x < endTouchPoint.x)
        _direction = -1;
}

if(_startPoint.x < rotarCenter.x && endTouchPoint.x < rotarCenter.x) {

    if(_startPoint.y < endTouchPoint.y)
        _direction = -1;
    else
        _direction = 1;
}
else if(_startPoint.x > rotarCenter.x && endTouchPoint.x > rotarCenter.x) {

    if(_startPoint.y > endTouchPoint.y)
        _direction = -1;
    else
        _direction = 1;
}
于 2013-01-23T07:04:45.063 回答