Я использую этот учебник: http://mobile.tutsplus.com/tutorials/android/android-sdk-creating-a-rotating-dialer/ Что дает мне вращающийся номеронабиратель на основе изображения. Однако я пытаюсь расширить его, добавив функциональность. Однако, чтобы добавить эту функциональность, мне нужно получить текущую позицию щелчка. Однако, поскольку он использует матрицу вращения для поворота изображения, я не могу получить единственную позицию для анализа того, где пользователь щелкает. Есть ли способ объединить 9 значений, найденных в матрице вращения, в одну переменную, которая указывает, где пользователь касается?
Получить сингулярную переменную или поворот в градусах из RotationMatrix.getValues()
Ответы (1)
Это больше вопрос о компьютерной графике, чем об Android. Используя однородные координаты, вращение по часовой стрелке вокруг начала координат будет представлено как (я использую Нотация Octave/MATLAB здесь, чтобы выразить это):
rotationMatrix = [ cos(theta) sin(theta) 0; -sin(theta) cos(theta) 0; 0 0 1 ]
Предполагая, что матрица просто вращается вокруг начала координат, вы можете вызвать java.lang.Math.acos
и передать первое значение в массиве, возвращенном Matrix.getValues
, чтобы получить тета. Это значение в радианах, поэтому, если вам нужны градусы, вам нужно преобразовать его.
OTOH, в зависимости от того, что вы делаете, вы можете просто вызвать Matrix.invert
, чтобы получить инверсию, и умножить точку, содержащую координаты касания, на эту инверсию Matrix
, чтобы «отменить» преобразования.
person
Aaron Klotz
schedule
22.06.2012