Is the rotation matrix unique for a given rotation?

Mr.Guo

I found two rotation matrices

rot1 = [    0.8736    0.2915   -0.3897;
           -0.4011    0.8848   -0.2373;
            0.2756    0.3636    0.8898]

rot2 = [    0.9874   -0.1420   -0.0700;
            0.0700    0.7880   -0.6117;
            0.1420    0.5991    0.7880]

when multiplying the vector

wpt = [200 200 200] 

producing the same result

cpt = [155.0812 49.2660 305.8148] 

Can anyone explain this?

FvD

You're actually asking two questions here.

Are rotation matrices unique?

Yes they are, as this answer that Francesco quoted explains well. If they were not unique, then Qv = Rv and thus (Q-R)*v = 0 would be true for any vector. The latter is only true for the null matrix, however.

It may help you to look at the angle-axis representation of your two rotations to see that they are not identical (the format is x,y,z and angle):

>> vrrotmat2vec(rot1)

    0.5304   -0.5873   -0.6114    0.6022

>> vrrotmat2vec(rot2)

    0.9707   -0.1700    0.1700    0.6734

Alternatively, you can look at each of the rows of your rotation matrix, which represent the unit vectors of your rotated spaces, and see that they are different from each other. (source, properties 3 and 4)

Why are these two rotation matrices giving the same result for this vector?

Because a point can be mapped to another point by infinitely many rotations. For any two rotations around the same center, some points* end up moving to the same place. If you will, rot1 and rot2 move your point wpt to cpt along different rotation arcs in 3D space.

The rotation arcs and axes of your point and matrices

Since this plot really isn't helpful in 2D and you seem to have access to MATLAB, you can just generate the figure yourself and pan around it with this code:

vr1 = vrrotmat2vec(rot1);
vr2 = vrrotmat2vec(rot2);
v = [1;1;1];
arc1 = [];
arc2 = [];
for i = 1:50
    a = vrrotvec2mat([vr1(1:3) i*vr1(4)/50]);
    arc1 = [arc1; (a*v)'];
    a = vrrotvec2mat([vr2(1:3) i*vr2(4)/50]);
    arc2 = [arc2; (a*v)'];
end

%% Drawing
% Arcs
plot3(arc1(:,1), arc1(:,2), arc1(:,3))
hold on
plot3(arc2(:,1), arc2(:,2), arc2(:,3))

% Unit vectors
arrow([0 0 0], [1 0 0]);
arrow([0 0 0], [0 1 0]);
arrow([0 0 0], [0 0 1]);

% Rotation axes
arrow([0 0 0], vr1(1:3), 'EdgeColor','b','FaceColor','g');
arrow([0 0 0], vr2(1:3), 'EdgeColor','r','FaceColor','g');

axis square

* I am guessing the points lie on exactly two lines, but I can't back that up.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related