Перевести трехмерную позицию, взятую из CMMotionManager(), чтобы установить угол в 2D CG Coordinate System

Я не знаю, является ли это основной математикой, которую я должен вычислить, или моей неопытностью в отношении значений шага, крена и рыскания. На данный момент у меня есть объект изображения, который движется в зависимости от значений моего акселерометра.

 //Move the ball based on accelerator values
        delta.x = CGFloat(acceleration.x * 10)
        delta.y = CGFloat(acceleration.y * 10)

        ball.center = CGPointMake(ball.center.x + delta.x, ball.center.y + delta.y)

Я могу рассчитать шаг через отношение и получить угол. То, что я хочу сделать, это выстроить мой "шарик" в центре экрана, только когда угол наклона телефона равен определенному углу, скажем, 45 градусов. Как я могу переместить свой шар так, чтобы он выровнялся в центре, основываясь на определенных углах?

1 ответ

Решение

Ваша высота экрана Η пиксели. Ваша ширина экрана W пиксели.

Горизонтальный центр экрана x = W / 2

Я предполагаю, что из вашего вопроса вы хотите, чтобы центр мяча варьировался между (x, 0) когда экран плоский и нижний (x, H) когда экран вертикальный.

Если угол вашего телефона θ варьируется между 0 а также π, затем y = θ / π * H

ball.center = CGPoint(x: W / 2, y: θ / π * H)

Все, что вам нужно, это триг, чтобы выработать θ на основе показаний гироскопа

Другие вопросы по тегам