3D点投影的正确旋转符号,matlab

3D点投影的正确旋转符号,matlab,matlab,rotation,Matlab,Rotation,我有一组三维点,我投影到图像平面 我对旋转矩阵有问题。 任何帮助都会很好。 下面是我在matlab中的代码 % 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 % fin

我有一组三维点,我投影到图像平面

我对旋转矩阵有问题。 任何帮助都会很好。 下面是我在matlab中的代码

% 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);
%测试是否正确R%R*n

R*n=[-0.0000,-0,1.0000]'

我的问题是关于符号的。有什么方法可以得到正确的符号吗?
我不想玩弄答案。问题是要得到这样的答案。

好吧,实际上你的问题可能并不像看上去那么糟糕

大致上,沿
z
-轴仍然有一个单位向量。继续你的计算,忽略这些细节(除非你真的知道它们会如何影响你的计算,请注意,通常不准确的计算组合往往会平衡它们自己)

但是,如果您真的想(或需要)深入研究细节,只需微调您的计算,如:

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

-0946467797198737 032278594989535 0002880563669821191 283620026340107
来自哪里。。。还有,什么是-
0.0000-01.0000
这就是你现在得到的答案吗?我不想玩这个答案。(R*n)。问题是得到这样的R,这给了你正确的答案。@沙哈巴:好吧,浮点计算本质上是不准确的,因此,最终是你自己对你认为相等的价值范围的判断。浮点计算不会给出精确的结果。谢谢@eat问题是当我将R乘以XYZ时,我得到了错误的旋转。那么我怎样才能使它正确呢。
>>> if 0> sign(det(R)), R= -1* R; end