2

私がやろうとしているのは、相対座標系を設定することです。ポイントAのXYZ座標を取得します。次に、ポイントB上でその位置を変換してポイントCの位置を取得する必要があります。ポイントBは、3つの軸すべてで回転および変換できますが、ポイントAは変換するだけで、変換しません。回転します。

基本的に、2つの長方形があり、1つは左下隅が原点にあり、もう1つは左下隅が点Bです。最初の長方形の右上隅が点Aの場合、 2番目の長方形の上隅はポイントCであり、その2番目の長方形がどのように回転または平行移動しても、ポイントCは常に2番目の長方形の右上隅にあります。ただし、ポイントAが下隅に移動した場合、ポイントCは常に2番目の長方形の右下隅にあります。

私は何度も正しい表現を評価しようとしましたが、私が思いついたのは近いと思いました。私はいくつかのバリエーションがありました:

X':Xcos(pitch)-Zcos(pitch)+ Xcos(yaw)+ Ysin(yaw)+ X.pointB

Y':Ycos(ヨー)+ Xsin(ヨー)+ Ycos(ロール)+ Zsin(ロール)+ Y.pointB

Z':Ysin(ロール)+ Zcos(ロール)+ Xsin(ピッチ)+ Zcos(ピッチ)+ Z.pointB

方程式のXYZが点Aの座標である場合、ピッチ、ヨー、およびロールは2番目の長方形の角度(度単位)です。

4

1 に答える 1

3

回転と平行移動を一緒に表す通常の方法は、同次座標ベクトルと 4x4変換行列を使用することです。ベクトルに行列を掛けると、回転と平行移動が同時に実行されます。2 つの行列を乗算すると、2 つの演算を順番に実行する新しい行列が得られます。これは、問題に必要なものです。これはコンピュータ グラフィックスの基本的な数学です (ただし、幾何学や物理学にも役立ちます...)。

ベクトルと行列をこのように表現するのは冗長で無駄にさえ思えるかもしれませんが、数学とプログラミングがより簡単になります。数学がどのように機能するかを理解し、コードが機能するようになったら、必要に応じて戻って冗長データを最適化できます。ただし、努力する価値がないことに気付くかもしれません。


質問の数式は機能しません。ヨー、ピッチ、ロールを適用する順序を決定し、適切な X、Y、および Z回転行列を生成し、それらをその順序で乗算する必要があります (リンクは、個々の回転行列と結合された回転行列の例を提供します)。

並進行列は、回転行列を計算するよりもはるかに簡単です。平行移動行列の乗算は、基本的には平行移動ベクトルを加算するだけですが、回転が問題になると、システムの利点がわかります。平行移動と回転の順序が重要であり、行列を使用すると、毎回簡単に正しく処理できます。


最後に、実際に問題を解決するには:

  • 固定プラットフォーム上のキャラクターの回転/平行移動の組み合わせ行列を計算します。(理想的には、このマトリックスを使用して元のキャラクターを描画する必要があります)
  • 「投影された」プラットフォームの結合された回転/並進行列を計算します (投影されたプラットフォームを描画するためにも使用できます)
  • 2 つの行列を乗算して、「投影された」文字の正しい行列を決定します。

必要な唯一の三角法は、元のロール/ピッチ/ヨー角度のsin()とを取ることに注意してください。cos()

于 2012-08-30T18:10:20.037 に答える