1

我正在使用 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);

任何线索我做错了什么?

提前致谢!

4

1 回答 1

1

我至少看到两个问题:

1. Math.cos() 和 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;
于 2013-05-02T22:14:59.320 回答