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