%
clc
clear
t = rand( 3 , 1 )
R = rodrigues(rand( 3 , 1 ))
T = [ 0 - t( 3 ) t( 2 );
t( 3 ) 0 - t( 1 );
- t( 2 ) t( 1 ) 0
];
E = T * R
[U,S,V] = svd(E);
disp( ' S?=?diag(1,1,0) ' )
S
W = [ 0 - 1 0 ;
1 0 0 ;
0 0 1
];
P1 = [U * W * V ' U(:,3)]
P2 = [U * W ' *V ' U(:, 3 )]
disp( ' check R.. ' )
norm(U * W * V ' -R)
norm(U * W ' *V ' - R)
disp( ' check t.. ' )
norm(U(:, 3 ) - t / norm(t))
norm( - U(:, 3 ) - t / norm(t))
clc
clear
t = rand( 3 , 1 )
R = rodrigues(rand( 3 , 1 ))
T = [ 0 - t( 3 ) t( 2 );
t( 3 ) 0 - t( 1 );
- t( 2 ) t( 1 ) 0
];
E = T * R
[U,S,V] = svd(E);
disp( ' S?=?diag(1,1,0) ' )
S
W = [ 0 - 1 0 ;
1 0 0 ;
0 0 1
];
P1 = [U * W * V ' U(:,3)]
P2 = [U * W ' *V ' U(:, 3 )]
disp( ' check R.. ' )
norm(U * W * V ' -R)
norm(U * W ' *V ' - R)
disp( ' check t.. ' )
norm(U(:, 3 ) - t / norm(t))
norm( - U(:, 3 ) - t / norm(t))