отрицательное значение угла android

#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

Вот почему вы видите отрицательное значение.