Вы можете фактически установить (только) вертикальное положение без измерения ускорения во времени.Это достигается путем измерения угла между направлением к центру земли и направлением к северному магнитному полюсу.
Это изменяется только (значительно), когда изменяется высота (высота) телефона.Вы используете accelerometer
и magnetometer
, чтобы получить два массива с плавающей точкой [3], трактовать их как векторы, делать их единичными векторами, а затем угол между любыми двумя единичными векторами будет arccos (AxM).
Обратите внимание, что это точечный продукт, т.е.math.acos(A[0]*B[0]+A[1]*B[1]+A[2]*B[2])
Любое изменение этого угла соответствует изменению высоты.Также обратите внимание, что это должно быть откалибровано для реальных единиц, и отношение изменения угла к высоте будет различным на разных долготах;Но это метод получения абсолютного значения высоты;хотя, конечно, угол также искажается при ускорении или при наличии поблизости магнитов:)