2017-09-19 9 views
0

xyz座標でそれぞれ6x6の立方体があるとしましょう。2つの3D点を使用して3次元空間で垂直座標を見つける

中間の立方体(0,0,0)から他の辺に移動すると(私は(0,1,0)と言いましょう)、方向に従った中立立方体に対角線である他の4つの成分を探したいと思います(0,1,0)。

1次元を移動すると、これは簡単です(私の脳はそれを把握できます)...コンポーネントは(-1,0,0)、(+ 1、 (0,0、-1)。

今、誰かがサイズに移動するのを助けてくれるかもしれませんが、2つ(1,1,0)または3つの座標変化(1,1、-1)?

ありがとう、 Rodrigo

答えて

0

ありがとう、これはまさに私がやったことです。ここ

は私の解決策である。

は(MATLABで)私はすべての可能性のユニット値の数を作成した:私の基準に基づいて

pos_vals=[ 0 0 0 ; -1 0 0 ; 1 0 0 ; 0 1 0 ; 0 -1 0 ; -1 -1 0 ; 1 1 0 ; -1 1 0 ; 1 -1 0; 0 0 1 ; -1 0 1 ; 1 0 1 ; 0 1 1 ; 0 -1 1 ; -1 -1 1 ; 1 1 1 ; -1 1 1 ; 1 -1 1 ; 0 0 -1 ; -1 0 -1 ; 1 0 -1 ; 0 1 -1 ; 0 -1 -1 ; -1 -1 -1 ; 1 1 -1 ; -1 1 -1 ; 1 -1 -1];

そして、例えばvec_o​​finterest =(1、[座標

for idx_posvals=1:size(pos_vals,1) gg(idx_posvals)=dot(vec_ofinterest,pos_vals(idx_posvals,:)); if gg(idx_posvals) == 0 pos_vals(idx_posvals,:) end end

グラム:1,0)]、 私は、次の操作を行います私に8つの解決策(言及した逆数を含む)。 -1 1 0 1 -1 0 0 0 1 -1 1 1 1 -1 1 0 0 -1 -1 1 -1 1 -1 -1

これは解決されたようです。誰かが見つけて誤りがある場合は、私に知らせてください。 Rodrigo

+0

かなり信頼できる方法。制限された27個のベクトルのセットに対しては、 'index => perpのリストインデックスをマッピングしてテーブルを事前に計算することができます。ベクトル – MBo

0

3D空間には垂直ベクトルが無数にあります。

あなたが値0, +-1でそのコンポーネントを制限したい場合は、次のアプローチを検討してください。

あなたのベクトル成分はA=(ax, ay, az)です。 6つの垂線の一方がB1=(0, 1, 1)あるベクトルA=(1,1,-1)ためだから

(bx, by, bz) = (0, -az, ay) 

get A components 
nullify arbitrary component (if one of other components is not zero) 
exchange two another components 
negating one of them 

は、例えば:と垂直ベクトルの内積B=(bx, by, bz)はBの成分を形成するためにゼロ

ax * bx + ay * by + az * bz = 0 

なければなりません

ベクターの場合あなたはPERPのペア要素を修正したい場合は

(-1, 1, 0) 
(1, -1, 0) 
(0, 0, 1) 
(0, 0, -1) 

:与えられた制約を持つ4つのバリエーションがあります。ベクトル - ドットプロダクト公式で必要な値を代入し、Bの未知の成分を解くだけです

関連する問題