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

少なくとも 2 つの問題があります。

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 に答える