Я хочу иметь возможность изменить опорный кадр Device Motion Manager (для гироскопа), чтобы у меня был вектор силы тяжести на оси Y.
Обычно, когда вы запускаете обновления Device Motion Manager, у вас будет только ось z телефона, выровненная с гравитацией.
Вы можете изменить это, чтобы использовать магнитометр, чтобы выровнять ось x либо с магнитным, либо с истинным северным полюсом. При этом у меня есть ось X, указывающая на север, и ось Z, указывающая вниз.
Что я хочу сделать, так это чтобы моя ось Y (отрицательная) указывала вниз (чтобы она была выровнена с гравитацией), а также чтобы моя ось X указывала на истинный магнитный полюс.
Результат, которого я хочу, таков, что когда мой телефон стоит неподвижно в вертикальной (портретной) ориентации, правая часть телефона будет выровнена по северному полюсу, и все мои показания (крен, тангаж, рыскание) будут читаться как 0. Затем с помощью это, если я поверну свой телефон по оси X, высота изменится, а если я поверну вокруг оси Y, изменится рыскание.
На данный момент я знаю, что могу установить свою собственную систему отсчета, если я умножу на обратную позицию ранее сохраненную позицию (например, я мог бы установить свой телефон в эту ориентацию ВРУЧНУЮ, сохранить эту позицию и просто продолжать умножать новую позицию на обратную этого сохраненного, и все мои показания будут точно такими же, как те, которые я хочу).
Но установить его вручную не вариант, так как мне сделать это программно?
Я не думаю, что есть функция для создания моей собственной системы отсчета отношения, или если бы, по крайней мере, была функция для умножения отношения на матрицу вращения, то я, вероятно, мог бы решить эту проблему. (потому что я бы просто умножил все отношение на изменение высоты тона на 90 градусов).
Надеюсь, я ясно объяснил,
Я буду признателен за любые предложения. Благодарность
PD: Это координаты ориентации iPhone: