5

3x3行列として設定された、ワールド座標系(wcs)の中心点ベクトルと3つの直交標定単位ベクトルで定義された平面があります。この平面の座標系に関する回転行列を決定しました。次に、この回転に一致するワールド座標系の対応する回転行列を見つけたいと思います。つまり、wcs内のオブジェクトに適用できる新しい回転行列が、平面に対して計算した回転と一致するようにしたいのです。

平面行列の逆行列(平面が直交しているため転置演算に置き換えられます)を回転行列で乗算して、ワールド座標系で同等の回転を取得することを考えました。これは間違っているようです:

私の平面は、wcsからの小さな摂動に加えて、y軸を中心におよそ90度の回転です:0 0 -1 0 1 0 1 0 0そしてそれを中心とした回転は、単位行列の小さな摂動です。この小さな回転は、wcsの小さな回転にマッピングされると思いますが、どういうわけか、そこに投げ込まれた平面から90度の回転が得られます。数学のどこが間違っていたのでしょうか。また、これを行うための適切な方法は何ですか。

4

1 に答える 1

4

あなたの説明は、あなたが間違ったことを理解するのに十分明確ではないので、最初からそれを行う方法を説明します. これらの指示に従うと、問題を解決する方法を理解できるはずです。

行列の座標変換を理解する鍵は、線形変換とは何か、行列とは何か、関係とは何かを非常に明確にすることです。基本から始めます。私はあなたが知っていることを繰り返すことから始めますので、それで我慢してください. 用語と同じページにいることを確認する必要があるだけです。

線形変換は、F1 つのベクトル空間を別のベクトル空間 (多くの場合、同じもの) にマップする関数です。

有限次元のベクトル空間と基底が与えられると、そのベクトル空間内の任意のベクトルを、関連付けられた座標のセットとして独自の方法で書き留めることができます。得られる表現は、基底に大きく依存します。通常、これを縦の列として書きます。

2 つの有限次元ベクトル空間、関連する基底aとのペアb、およびそれらの間の線形変換が与えられるとF、次のように行列を書き留めることができます。

  1. のそれぞれについてa_i、根拠を列としてa書き留めます。F(a_i)b
  2. これらの列を連結して行列を取得します。

この操作は非常に重要です。

したがって、行列は線形変換と基底の選択のペアに依存します。これを と表します。M = Fab

関数合成は行列の掛け算で表現されます。それはです。(行列乗算の定義の要点は、これを真にすることです。)Fab * Gbc = (F o G)ac

あなたの場合、 からへの線形変換 'F' があります。それを基底 'b' で表現し、基底 'a' で表現したいとします。それはあなたが持っていて、持っていたいです。それを自分自身に送る恒等線形変換としましょう。あとは、行列と行列が何であるかを理解するだけです。R3R3FbbFaaIFaa = Iab * Fbb * IbaIabIba

これで、座標系a(通常の座標) とb. b座標系で何が書かれているか知っていますa。線形演算子を行列で表すための上記の指示に従ってください (重要であることが証明されると私が言ったもの)。すぐに書き留めることができます。行列はこれの逆です。IbaIab

多くの人が、それが本来あるべきだと推測するものとは逆であるという事実に混乱していることに注意してください. しかし、それは経験しやすいものです。ぜひ実際に試してみることをお勧めします。起きる。90 度回転します。あなたが一方を向いている間、世界がもう一方を向いているように見えることに注意してください。座標系が一方向に回転すると、物事の表現が逆になる (つまり、反対方向に回転する) という事実を経験しています。Iab


編集:線形演算子の説明は正しいですが、記載されている問題には、原点ではない点を中心とした回転が含まれます。すべての線形演算子は、原点を原点に送信します。この種の操作では、オリジンを別の場所に送信できます。したがって、線形関数からアフィン関数に移行する必要があります。しかし幸いなことに、アフィン関数はそれほど複雑ではありません。それらは文字通り一定の点と線形のピースです。つまり、行列で表すことができる関数の代わりにMx、点と行列を使用しMた形式の関数になります。p + MxpM

最初に、重要ではあるが一見恣意的な区別を導入することは非常に役立ちます。ポイントはポイントです。ベクトルはポイント間のオフセットであり、あるポイントから別のポイントを差し引いたものとして表すことができます。点とベクトルは実際には異なる種類のものであり、それらを別の方法で考える必要があります。

ここに、私たちが区別する理由があります。Fが点のアフィン関数の場合、 はベクトルをベクトルに写像Fする線形関数です。(定数ビットはベクトルの始点と終点の両方を移動しますが、互いのオフセット量は変更しません。)これにより、アフィン関数の定数部分と線形部分を簡単に分離できます。

アフィン関数を扱っている場合、原点を中心とする座標系のみを扱う特別な理由はなく、多くの場合、そうしない正当な理由があります。したがって、座標系は点とベクトル空間pの基底によって決定されます。a(少し複雑ですが、それほど多くはありません。)その座標系では、任意の点qをベクトルにマッピングし、q - pそのベクトルを base で表すことができますa。ここでも、これらの座標を列として記述するのが通例です。

Fがアフィン関数の場合、あとは の線形部分を計算し、座標系の原点を送るF場所を追加するだけです。F

ある座標系 でアフィン関数を取得し、(p, a)それを別の座標系 に変換する(q, b)場合は、線形ビットを基底aから基底に変換し、結果がbどうなるかを把握するF(p)だけです。

したがって、アフィン関数は基本的に、原点が追加される場所に関する情報を備えた線形関数です。ほとんどの作業は線形関数の行列表現に費やされますが、原点に何が起こるかを理解することを忘れることはできません。

于 2011-05-20T18:05:23.373 に答える