Перевести трехмерную позицию, взятую из 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)
Все, что вам нужно, это триг, чтобы выработать θ
на основе показаний гироскопа