Определение угла и скорости для события касания пользователя по кругу на Android

Математика снова пришла мне в голову и победила меня. Мне нужна ваша помощь, чтобы перегруппироваться и снова атаковать.

Что у меня есть:

enter image description here

У меня есть вид поверхности и круг в виде растрового изображения. Мне нужно повернуть растровое изображение, когда пользователь перемещает палец по краю круга. Чем быстрее пользователь скользит, тем больше мне нужно повернуть изображение. Кажется простым, но не совсем легким в реализации.

Что мне нужно

Мне нужно вычислить угол, на который нужно повернуть изображение при событии onDraw. Из того, что я думал до сих пор, мне нужны две вещи: - угол между новой точкой касания и старой. Я выполнил простую функцию, которая позаботится об этом:

     private int getAngleBetweenTwoTouchedPoints(double oldX, double oldY, double newX, double newY)
     {
         return (int) Math.abs(Math.atan2(newY - oldY, newX - oldX));
     }

угол, возвращаемый этим, изменяется от 0 до 1, и я считаю, что это правильно. Увеличивая угол поворота матрицы изображения на это значение, я получаю медленное вращение, в основном на 1 единицу. Значит, есть шанс поработать, но пока не очень. Итак, второе, что мне может понадобиться, это скорость, с которой пользователь проводит пальцем по экрану. В общем, что-то вроде этого:

RotationAngle + = angleBetweenTouches + speed

Скорость, или скорость, как я видел, это проблема в моем случае, учитывая, что я двигаюсь не только по X или Y, а по кругу. . Понятия не имею, как это рассчитать. Я видел справку по VelocityTracker в Android, но не знаю, чем она может помочь.

Итак, напомним: мне нужно иметь возможность вращать изображение, когда пользователь перемещает палец по границе изображения. Еще проще, когда пользователь прекращает скольжение, пиксель изображения, который был ниже пальца в начале слайда, должен быть таким же, когда слайд останавливается.

Любая помощь приветствуется. Спасибо

6
задан Alin 28 April 2011 в 07:25
поделиться