- 締切済み
4次元データを射影により3次元に縮小する方法
以下のような 3本の位置ベクトルによって示される3次元空間に、4次元 データを射影し、次元縮小する方法を教えてください。 A = [a1 a2 a3 a4]、 B = [b1 b2 b3 b4]、 C = [c1 c2 c3 c4] 射影行列を求め、各データ点との積を求めるのだと思いますが、やり方 が分かりません。 仕事で次元縮小のプログラムを作らなければならないので、大変困っています。どなたか、助けてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.3
4次元空間上の 3点 A(a), B(b), C(c) と O が作る平面上に点 P(p) が存在する条件は det(a b c p) = 0. 正射影なら, これから法線ベクトルがわかるのでなんとかなるんじゃない?
- arrysthmia
- ベストアンサー率38% (442/1154)
回答No.2
どの補空間に沿って射影するのでしょう? 正射影(直交補空間に沿う射影)ならば、 平面ABCの法線ベクトルを、外積 ↑AB×↑AC などで求め、 単位法線ベクトル ↑n を使って、 点 ↑p を ↑p - ↑p・↑n + ↑OA・↑n へ写像すればよい。 定数項 ↑OA・↑n が付くので、一次変換ではありません。 「次元縮小」という言葉が判らないのと、 「プログラムを作らなければならないので」の件が気になります。 ひょっとして、CGでよく使われる 同次座標の「投影変換」のことを言っているのでしょうか? 線型代数で言う「射影」とは違うので、「射影変換」と呼ぶと 紛らわしいのですが。
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
「ABC (と原点 O) を通る超平面上に射影する」ということでしょうか. 3次元のときの方法をベタに拡張すればできるんだけどねぇ. もっときれいな方法はあるかなぁ.
補足
分かっていなくて申し訳ありません。正射影ではないかと思います。 データは、X, Y, Z , Energy の4軸に、強度をもっています。 見せられた外国のソフトの画面キャプチャーでは、 A = [1 0 0 0]、 B = [0 1 0 0]、 C = [0 0 0 1] と入力し、 Projections を実行するとZ軸が無くなり、X, Y, Energy の3軸データに変換されていました。 A, B, C のキャプションに、Orthogonal Viewing Axis とあるので、 A B Cには、直交ベクトルを入力させるものと思います。 3次元データを平面に射影すると2次元データになるので、4次元データ を任意の空間に射影すれば3次元データになるのではないでしょうか。 線形代数の本を買ってきて読み始めたのですが、時間ばかりが・・・ あと、4次元ベクトルの外積を求める方法がわかりません。教えて頂けませんか。