Android: понимание функции remapCoordinateSystem - PullRequest
3 голосов
/ 28 февраля 2011

Я пытался понять эти 2 строки кода

SensorManager.getRotationMatrix(RTmp, I, grav, mag); 
SensorManager.remapCoordinateSystem(RTmp, SensorManager.AXIS_X,SensorManager.AXIS_MINUS_Z, Rot);

Я прочитал документацию remapCoordinateSystem(), однако я потерян.

Может кто-нибудь объяснить мне, что именно делают getRotationMatrix и remapCoordinateSystem? Специально SensorManager.AXIS_X, SensorManager.AXIS_MINUS_Z?

Ответы [ 3 ]

3 голосов
/ 25 июля 2011

Я полагаю, getRotationMatrix() возвращает матрицу вращения, которая преобразует координату устройства в мировую координату , как упомянуто в документации Android , а не в "мир" в "device ".

Вычисляет матрицу наклона I, а также матрицу вращения R, преобразовывая вектор из системы координат устройства в мировую систему координат , котораяопределяется как прямой ортонормированный базис, где

1 голос
/ 14 ноября 2012

Я думаю, что функция getRotationMatrix() была четко объяснена @Noname. Я пытаюсь ответить на ваши вторые и третьи вопросы с учетом remapCoordinateSystem() и SensorManager.AXIS_X, SensorManager.AXIS_MINUS_Z.

То, что делает remapCoordinateSystem(), фактически изменяет систему координат, устанавливая новые X, Y, Z-AXIS, где SensorManager.AXIS_X, SensorManager.AXIS_MINUS_Z - система координат вашего телефона. Из вашего кода я считаю, что вы делаете дополненную реальность в портретной ориентации. Вот почему вы устанавливаете ось Y на SensorManager.AXIS_MINUS_Z FYI. Если вы хотите сделать то же самое в альбомной ориентации, вы установите систему координат следующим образом:

SensorManager.remapCoordinateSystem(RTmp, SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X, Rot);

Надеюсь, это поможет.

0 голосов
/ 28 февраля 2011

На такой вопрос, совершенно вне контекста, обычно сложно ответить. Также вам следует ознакомиться с форматированием (например, 4 пробела означают код):

SensorManager.getRotationMatrix(RTmp, I, grav, mag);
SensorManager.remapCoordinateSystem(RTmp, SensorManager.AXIS_X,SensorManager.AXIS_MINUS_Z, Rot);

Тем не менее:

Я бы сказал, что вы на правильном пути, используя документацию. Как вы видите, getRotationMatrix извлекает текущую матрицу вращения, необходимую для преобразования «мировой системы координат» в текущую систему координат устройства. Дополнительно remapcoordinateSystem преобразует данную систему координат в соответствии с заданной матрицей вращения. Но, как указано выше, вне контекста трудно сказать, ПОЧЕМУ кто-то делает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...