Я пытаюсь повернуть актера, используя жест щипка. Актер на самом деле вращается, но бывают случаи, когда вращение «застревает». Я зарегистрировал deltaRotDeg (дельта поворота в градусах), и бывают случаи, когда значения прыгают. Например, он вращается на -42,25918 градусов, а затем подскочит до 317,7408 градусов. Я следил за математикой вращения здесь http://www.codeproject.com/Articles/319401/Simple-Gestures-on-Android
И вот мой код. Моя математика неверна или что-то не так в коде?
public ActorGestureListener gestureListener = new ActorGestureListener() {
@Override
public void pinch(InputEvent event, Vector2 initialPointer1, Vector2 initialPointer2, Vector2 pointer1, Vector2 pointer2) {
Actor actor = event.getListenerActor();
if(actor.getName().equals("valve")){
Vector2 a = initialPointer2.sub(initialPointer1);
Vector2 b = pointer2.sub(pointer1);
a = a.nor();
b = b.nor();
float deltaRot = (float)(Math.atan2(b.y,b.x) - Math.atan2(a.y,a.x));
float deltaRotDeg = (float)((deltaRot*180)/Math.PI);
world.getValve().rotate(deltaRotDeg);
}
}