2009-05-15 11 views
1

私は加速度計でサウンドアプリケーションをやっています。加速度計の値を計算することで動きに違った音を出します。ユーザーがx軸プラスマイナスy軸プラスマイナスをどのように動かしているのかわかります。加速度計でこの値を見つけてください。どのように加速度計の方向を見つけることができますか?

指示や援助のコードやプロジェクトをお願いします。

答えて

1

vector additionを実行し、2つのベクトルの合計を計算して、結果のベクトルを取得する必要があります。上記の記事は、それを計算する一般的な方法をすべて説明しています。しかし、プログラムでそれを行うには、Pythagoras定理とTan theta = b/aを適用する必要があります

1

私は磁力計の方向が必要だと思います。上記のベクトル計算。この記事では、ベクトルを(最初のものはちょうどそれが「ハード」だと言って、最も可能性の高いケースの上にグロス)を追加する方法を説明するのより良い仕事をしていません...

http://blog.dotphys.net/2008/09/basics-vectors-and-vector-addition/

+0

彼は磁力計について質問していません、彼は加速度計について話しています。言い換えれば、デバイスが移動する場合、どの方向に移動するのか、どの方向に向くのではないのか。 –

+0

私は知っている - 私はそれが比較するために磁力計を使用する方が簡単だろうと言っているだけです。私は、加速度計だけから得た情報を信じていると信じがたい(たとえ速く集まったとしても)、私には十分な時間を与えることができます... –

1

あなたはベクターを使用して、それを表現する必要があり、下にあるデリゲートメソッドがあります。

私はまだAPIを見ていませんが、あなたの方向ベクトルが加速度計から返されると思います。

デベロッパーメソッドは、必要な値を返すメソッドです。はっきりhere along with sample codeそれを説明する記事を読みやすくもあり

- (void)acceleratedInX:(float)xx Y:(float)yy Z:(float)zz 
{ 
    // Create Status feedback string 
    NSString *xstring = [NSString stringWithFormat: 
    @"X (roll, %4.1f%%): %f\nY (pitch %4.1f%%): %f\nZ (%4.1f%%) : %f", 
    100.0 - (xx + 1.0) * 100.0, xx, 
    100.0 - (yy + 1.0) * 100.0, yy, 
    100.0 - (zz + 1.0) * 100.0, zz 
    ]; 
    self.textView.text = xstring; 

    // Revert Arrow and then rotate to new coords 
    float angle = atan2(xx, yy); 
    angle += M_PI/2.0; 

    CGAffineTransform affineTransform = CGAffineTransformIdentity; 
    affineTransform = CGAffineTransformConcat(affineTransform,  CGAffineTransformMakeRotation(angle)); 
    self.xarrow.transform = affineTransform; 
} 

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { 
    [self acceleratedInX:acceleration.x Y:acceleration.y Z:acceleration.z]; 
} 

: 次のコードは、あなたがtake a look at hereべきチュートリアルから役立つことがあります。

関連する問題