2

ユーザーがハードコードされた宛先を「ポイント」できるようにする iPhone 4 用のアプリを作成しようとしています。宛先がある場所にドットが表示されます。

まず、コンパスを使用して水平コンパスを作成します (これにより、左右の回転がカバーされます)。

// Heading
nowHeading = heading.trueHeading;

// Shift image (horizontal compass)
float shift = bearing - nowHeading;
destinationImage.center = CGPointMake(shift+160, destinationImage.center.y);

画面の幅が 320 ピクセルなので、ドットを 160 ピクセルずらします。私の質問は、このコードを拡張して上下に処理するにはどうすればよいですか? つまり、テーブルで電話を下​​に向けると、ドットが表示されません..画面に描画するには、目的地を(写真を撮るように)ポイントする必要があります。私はすでにアクセラレータを実装しています。しかし、これらのコンポーネントを統合して問題を解決する方法がわかりません。

4

2 に答える 2

1

方位は、カメラの視野に依存する必要があります。iPhone 4の場合、水平角度ビューは47.5なので、320ポイント/47.5 = 1度あたりxxxポイントです。これを使用して、水平方向にシフトします。また、加速度計に適応フィルターを追加する必要があります。AppleのAccelerometerGraphプロジェクトから取得できます。

1つの軸(方位)に回転があり、加速度計から他の2つの軸の回転を取得する必要があります。2軸のatan2は、3番目の回転を示します。UIAccelerationに移動し、それが役立つ場合は、デバイスを物理的に貫通する軸を想像してdouble xAngle = atan2(acceleration.y, acceleration.z);ください。逆さまに回転させたら、垂直方向の視野で水平方向に行ったことを繰り返すことができます。たとえば、iPhoneの場合は60です。

これは大まかな実装の1つになりますが、スムーズな動きを実現することは困難です。あなたができることの1つは、ジャイロを使用してより速い応答を得て、加速度計で定期的に信号を修正することです。今後の問題については、このトークを参照してください:Androidデバイス上のセンサーフュージョン。こちらがカルマンフィルター専用のウェブサイトです。クォータニオンをあえて使用する場合は、AndrewJ.Hansonの「VisualizingQuaternions」をお勧めします。

于 2011-05-14T17:26:40.180 に答える
0

拡張現実のスタイルをやろうとしているようですね。もしそうなら。ここにいくつかのライブラリとサンプルコードが提案されている場合:

拡張現実

于 2011-05-14T15:45:01.903 に答える