2011-07-23 14 views
-2

私はイメージ平面に投影している3D点のセットを持っています。3D点の投影のための回転の正しい符号、matlab

回転行列に問題があります。 助けがあれば助かります。私の質問は「

- 以下 正しいRの%のR×n個

のR * N = [0、1.0000 -0.0000、】用

% adjusted plane through points XYZ=[X,Y,Z]p*3 % where p is no of points 


%n*(XYZ)-d=0; Given plane parameters 

-0,946467797198737 0,322785394989535 0,00288056369821191 28,3620026340107 

% finding rotation matrix for [ 0 0 1]% xy plane projection 


[U, S, V]= svd(n); 
C= [U(:, 2: 3), n]; 

R= rref([C, eye(3)]); 
R= R(:, 4: 6); 

%テスト、MATLABで私のコードでありますサインについて正しい標識を得るための方法は? 私は答えて遊んでいません。(R * n)。問題は、あなたに正しい答えを与えるそのようなRを得ることです。

+0

どのような言語ですか? – Mat

+0

ここで '-0,946467797198737 0,322785394989535 0,00288056369821191 28,3620026340107 'から来ています...でも、何ですか' -0.0000 - 0 1.0000'これはあなたが今得ている答えですか? –

答えて

0

実際、あなたの問題はそれほど悪くないかもしれません。

多かれ少なかれ、単位ベクトルはまだz軸です。計算を進めるだけで、この種の詳細は無視されます(実際に計算にどのように影響するか分かりませんが、不正確な計算を組み合わせると、バランスがとれてしまうこともよくあります)。

しかし、あなたが本当にしたい(または必要性)場合、詳細に掘り下げ、ちょうど微調整のようなあなたの計算:

>>> x= [-1e-13 1e-13 1]'; 
>>> x(abs(x)< 1e-12)= 0 
x = 
    0 
    0 
    1 

更新
signあなたが心配すべきはdet(R)あり、これます次のような小切手を追加する必要があります:

>>> if 0> sign(det(R)), R= -1* R; end 
+0

私は答えで遊びたくありません。(R * n)。問題は、あなたに正しい答えを与えるそのようなRを得ることです。 – Shahgee

+0

@shahbaba:浮動小数点計算は本質的に不正確です。したがって、最終的には、等しいとみなす値の範囲について独自の判断になります。浮動小数点計算では正確な結果は得られません。ありがとう – eat

+0

@食べる問題は、私はXYZとRを掛けるとき、私は間違った回転を取得します。だから私はそれを正しいものにすることができます。 – Shahgee