4

特別なイベントをトリガーするために、ユーザーが iPhone を太陽に向ける必要があるアプリに取り組んでいます。

ジャイロスコープと CoreMotion フレームワークに基づいて、デバイスの 3D 方向四元数を取得できます。これから、ヨー角、ロール角、ピッチ角を取得できます。現在の日時 (GMT) と緯度と経度に基づいて、太陽の方位角と天頂角を計算することもできます。私が次に理解しようとしているのは、これら 2 つの値のセット (電話の向きと太陽の位置) を比較して、デバイスと太陽の位置合わせを正確に検出する方法です。

それを達成する方法についてのアイデアはありますか?

4

1 に答える 1

6

やっと問題を解決できたのですが、

これを実現するために、Apple 開発者リソースで利用可能な拡張現実を使用したサンプル コードを使用しました: pARk

最初のアイデアは、空の位置を単純なベクトル {x, y, z} として取得するために、太陽の球座標をデカルト座標に変換することでした。式はウィキペディアで入手できます:球座標。ここでは太陽からの距離 (球座標の半径) はあまり重要ではないため、1 を使用しました。

デバイスのジャイロスコープと CoreMotion フレームワークを使用して、iPhone の回転行列を取得できました。「pARk」コード サンプルからジオメトリ関数を使用して、カメラの投影行列を計算できます。これに回転行列を掛けてから、結果の行列に太陽のベクトル座標を掛けます。

これにより、太陽のスクリーン座標を持つ単純なベクトルが得られます。これらの x 値と y 値を使用して UIView を表示することで、画面を動かすと太陽が動き回るのを最終的に見ることができます。

この機能のコードは私のGithubで入手できます。自由に使用して共有してください!

于 2014-02-04T10:33:18.243 に答える