Android getOrientation() возвращает азимут, положительный или отрицательный?

Предположение: телефон держится горизонтально (параллельно земле).

Я использую getRotationMatrix() и getOrientation (float[] R, float[] values) для получения азимута. В этом предположении азимут просто values[0].

документация говорит:

Все три угла выше в радианах и положительны в направлении против часовой стрелки.

Затем я проверил, когда ось Y моего телефона указывает на север, азимут действительно 0.

Однако возникает проблема: когда ось Y моего телефона указывает на Запад, т.е. я повернула телефон против часовой стрелки, чтобы он указывал с севера на запад, азимут отрицательно!

Разве угол не должен быть положительным при повороте против часовой стрелки с севера?

Где что-то не так?


person Sibbs Gambling    schedule 12.08.2013    source источник


Ответы (1)


Нет, если положительное направление Z указывает на небо, то когда ось Y указывает на запад, тогда угол положительный. Но координата, используемая в getOrientation, положительное направление Z указывает вниз на землю, поэтому теперь то, что кажется против часовой стрелки, становится по часовой стрелке, поэтому Запад отрицательный.

person Hoan Nguyen    schedule 13.08.2013
comment
Имеет смысл. Итак, если ось Y моего телефона указывает вверх, то Запад должен быть отрицательным, верно? - person Sibbs Gambling; 13.08.2013
comment
Если вы имеете в виду, что телефон держится вертикально с осью Y вверх, то нет смысла говорить о направлении оси Y как о Востоке, Западе, Севере или Юге. Если ссылаться на направление компаса, восток положительный, а запад отрицательный. - person Hoan Nguyen; 13.08.2013
comment
Извините за опечатку! Я имею в виду, что мой телефон z указывает вверх. Я держу телефон как компас. - person Sibbs Gambling; 13.08.2013
comment
Подумайте о человеке, вращающем петлю против часовой стрелки, если вы встанете напротив этого человека, вы увидите, что вращение происходит по часовой стрелке. Да, z-координата устройства, возвращаемая датчиками, противоположна z-координате при расчете азимута, поэтому это сбивает с толку. Когда экран поднят, Запад отрицательный. - person Hoan Nguyen; 13.08.2013
comment
Значит, используется не правая, а левая система координат: x, y, -z? - person Xyz; 27.03.2020