黑莓加速度计算
问题描述:
我打在SDK7.0的“AccelerometerDemo”,并有关于“旋转”从XYZ数据提取的计算问题。黑莓加速度计算
我要完成什么是有一个虚拟的“钟摆”指向直下。然而,事情正在旋转,并没有像我期望的那样移动。
这里是我的代码部分:
_accChannel.getLastAccelerationData(_xyz);
double roll = MathUtilities.atan2(X, Z) * 180.0/Math.PI;
graphics.setColor(Color.BLACK);
int xcenter = 240;
int ycenter = 400;
int length = 220;
int newx1 = (int)(Math.cos(roll) * (double)length) - xcenter;
int newy1 = (int)(Math.sin(roll) * (double)length) - ycenter;
graphics.drawLine(xcenter, ycenter, newx1, newy1);
任何线索什么,我做错了什么?
在此先感谢!
答
我看到至少两个问题:
1.Math.cos() and Math.sin()预计弧度,不度角输入。通过使用此代码:
double roll = MathUtilities.atan2(X, Z) * 180.0/Math.PI;
已经转换成roll
度。其次,你从矢量坐标中减去中心坐标。我相信你应该加入他们,就像这样:
int newx1 = (int)(Math.cos(roll) * (double)length) + xcenter;
int newy1 = (int)(Math.sin(roll) * (double)length) + ycenter;
传感器自然有在读的“噪音”。您应该将读数过滤到可接受的范围以抑制噪音。 – 2013-05-02 20:22:18
你的意思是说,如果一卷“样品”超过5度而丢弃它?这样只有接近CURRENT角度的读数才被使用? – user386093 2013-05-02 20:33:28
取决于你的意思是“回旋”。如果它像在飓风一样的微风中摇摆,那意味着你读错了或计算错误。如果它停留在相同的地方而不是“颤抖”,那就是传感器噪音。 – 2013-05-02 20:57:17