我在屏幕上有一个轮子,它可以旋转。当用户在滚轮上滑动时,它应该根据滑动方向开始旋转。我完成了除了旋转方向(顺时针或逆时针)之外的所有功能。任何人都可以帮助我找到用户在滚轮上滑动的方向。
谢谢
旋转是
解决方案1:
顺时针
逆时针:
对面:
有更好的解决方案,具有更复杂的数学,但一个是一个简单的解决方案。
更新这一个也很简单,而且更好!
解决方案2:
计算车轮中心 (x,y) 与接触 (x,y) 之间的角度:
double angleRad = atan2(dy/dx), where dy = touch.y - wheel.y, and dx analog.
对每个触摸事件执行此操作:如果角度增加,则顺时针,否则逆时针
_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;
}