如果您不喜欢上述内容,这里有一个更简单的方法来获得合理的结果!
将 iPad 放在你面前,让 LR 向左/向右倾斜,TA 向你/远离你倾斜。所以LR从-90跑到90,TA从-90跑到90。(TA负向你的肚子。)
在您的屏幕上显示这两个数字,并四处移动设备,这样您就可以确定自己拥有该权利。在它起作用之前,您将无法做任何事情。
solutionAngle 就像一个时钟指针,顺时针方向,距离你 12。
遍历这个决策链:
如果 LR 和 TA 都为零,则机器是平的。采取适当的行动。
如果 LR 为平 (0),则答案是 0 或 180,具体取决于 TA 的符号。
如果 TA 为平 (0),则答案是 90 或 270,具体取决于 LR 的符号。
否则:
adjustmentAngle = arctan( sin(TA) / sin(LR) )
//(注意,应该从 -90 到 +90)
if (LR > 0) finalResult = 90 - 调整角度
如果 ( LR 270 + 调整角度
我认为会做到的!希望对您有所帮助!
IMO......一定要随着时间的推移平滑结果,以获得良好的感觉。
.
设置角度...
“我目前唯一不确定的(关于你自己的想法)是如何将它应用到我的播放器上?我是否只是让播放器旋转值等于调整角度?”。 .嗨乔希,是的,只需将旋转设置为您使用上述计算的最终角度!幸好就是这么简单。
如果您必须在度数和弧度之间进行前后转换,只需粘贴每个人都使用的以下代码行:
#include <math.h>
static inline float degreestoradians (double degrees) {return degrees * M_PI/180;}
static inline float radianstodegrees (double degrees) {return degrees * 180/M_PI;}
.
坐标轴在哪里?...
PS,这是您可能想要收藏的非常方便的图表:
http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAcceleration_Class/Reference/UIAcceleration.html
.
从加速度计转换为角度...
“加速度计不提供角度的原始数据。如何从原始数据中获取”
没错,我忘了说对不起。这是一个日常问题...
distanceFactor = square root of (x^2 + y^2 + z^2)
angle X axis = acos ( x / distanceFactor )
angle y axis = acos ( y / distanceFactor )
angle z axis = acos ( z / distanceFactor) )
在继续之前,您必须通过在屏幕上写下三个角度然后移动它来进行测试,换句话说,“物理单元测试”您编写的部分!
这是来自 SO 的众多答案之一:UIAccelerationValue angle
顺便说一句,您可能会看到,您可以通过在“adjustmentAngle”表达式中简单地取原始 x 与原始 y 值的比率而不是两个正弦的比率来获得粗略的结果……但无论如何暂时不用担心。
最后!
重要提示 读者应注意,令人惊叹的新 Core Motion 系统可根据您的需要为您处理很多此类问题。看看吧!!!!!!
希望对你有帮助!