#android
#Android
Вопрос:
Я пытаюсь включить движение снаряда для своего игрового приложения.Когда пользователь прикасается к imageview, он вычисляет начальный угол на основе движения imageview.Но в logcat я вижу, что эти значения угла отрицательны.Кто-нибудь может объяснить, почему это так.Я хочу использовать r, чтобы просто установить значение угла от 0 до 90 градусов.
Ниже приведен мой код для вычисления угла:-
float dy = motion.getY()-mImage.getPivotY();
float dx = motion.getX()-mImage.getPivotX();
double r = Math.atan2(dy, dx);
int angle = (int)Math.toDegrees(r);
где движение имеет тип MotionEvent.
Комментарии:
1. Это не связано с различными моделями координат между стандартной математикой и экраном?
Ответ №1:
Вертикальные координаты экрана, такие как возвращаемые motion.getY()
и mImage.getPivotY()
определяющие начало координат как верхнюю часть экрана, перемещающуюся положительно сверху вниз.
Стандартное математическое соглашение противоположно этому. Вам нужно будет учесть это в своем уравнении. В этом случае с помощью -dy
.
В качестве объяснения возьмем ваше исходное уравнение:
float dy = motion.getY()-mImage.getPivotY();
и настройка координат экрана на канонические координаты
float dy2 = (Screen.getHeight() — motion.getY()) — (Screen.getHeight() — Изображение.getPivotY());
Что дает:
float dy2 = mImage.getPivotY() — motion.getY()
Следовательно:
float dy2 = -dy
Вот почему вы видите отрицательное значение.