黑莓加速度计计算

时间:2013-05-02 20:20:45

标签: blackberry accelerometer blackberry-jde

我正在使用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 个答案:

答案 0 :(得分:1)

我至少看到两个问题:

1。 Math.cos() and Math.sin()期望弧度中的角度输入,而非度数。使用此代码:

double roll = MathUtilities.atan2(X, Z) * 180.0 / Math.PI;

您已将roll转换为度数。

2. 其次,您要从矢量坐标中减去中心坐标。我相信你应该添加,就像这样:

int newx1 = (int)(Math.cos( roll ) * (double)length) + xcenter;
int newy1 = (int)(Math.sin( roll ) * (double)length) + ycenter;