Определить начальное положение iOS-устройства в 3D-пространстве — Core Motion

Используя Coremotion, мы можем get the change in position of device using attitude, rotation using gyro. Но чтобы узнать фактическое положение устройства в 3D-пространстве, нам потребуется начальное положение устройства. Чтобы, соответственно, userAcceleration, данные гироскопа можно было применить для получения нового фактического положения после изменений. Как получить начальное фактическое положение устройства. Я хочу определить такое положение, как «наклон на 45 градусов влево лицом вверх» или «наклон на 45 градусов вправо с поворотом на 30 градусов по оси Y».


person Ankit Thakur    schedule 30.09.2016    source источник


Ответы (1)


Вы можете использовать акселерометры CoreMotion для оценки начального положения вашего устройства с помощью некоторых уравнений.

let x = data.acceleration.x 
let y = data.acceleration.y
let z = data.acceleration.z

let roll = atan (y / sqrt(pow(x,2.0) + pow(z, 2.0)));
let pitch = atan (x / sqrt(pow(y, 2.0) + pow(z, 2.0)));
let yaw = atan (sqrt(pow(x, 2.0) + pow(z, 2.0))/z);

Каким-то образом Yaw все еще находится относительно начальной позиции вашего устройства. Чтобы решить эту проблему, вам следует искать с помощью компаса.

person Nicolas Anjoran    schedule 30.09.2016