私は 3D 空間 (X、Y、Z) の点を扱ってきましたが、これらの点のうちの 2 点間のピッチとヨーを計算できるようにしたいと考えています。
私の現在のコード:
pitch = (float) (1/Math.tan((Y1 - Y2) / (Z1 - Z2)));
yaw = (float) (1/Math.tan((X1 - X2) / (Z1 - Z2)));
ここで、X1、X2、Y1、Y2、Z1、Z2 はすべて実行時まで不明であり、その時点でランダムに生成された 2 つのポイントから収集されます。
何らかの理由で、私の結果は大幅に間違っています。さまざまな組み合わせを試し、数え切れないほどのことをグーグル検索しましたが、何も思いつきませんでした.
いくつかの制約は次のとおりです。
- ピッチは 90 以下、または -90 以上 (90 => ピッチ => -90) にする必要があります。
- ロールがないので当てはまらない
- すべての座標は、プログラムで宣言されるまで不明です
- ピッチは Z 軸に沿って開始します。Z 軸は前方/後方であり、上向きのピッチングが正です。
- Y が上、Z が前後、X が横
- ヨーは Z 軸の真下を向き始めます
3D 角度を扱うのは初めてで、私の例のように、2 つの異なる 2D 平面でピッチとヨーを別々に計算できることを読みましたが、うまくいきません。
どんな助けでも大歓迎です。