3
我使用兩種方法在3D空間中旋轉點(矢量)p0
。我有以黑色顯示的世界座標系(WCS)和以藍色顯示的座標系1(CS1),其定義爲圍繞z軸旋轉10度。我首先通過計算點積來計算WCS和CS1之間的方向餘弦。現在我可以使用dcm2quat
和dcm2angle
輕鬆計算四元數和歐拉角。然後,我可以使用四元數和歐拉角來旋轉點p0
。使用四元數和歐拉角的不同結果
p0 = [1 0 0]; % point in world CS
ijk = [1 0 0;0 1 0;0 0 1];
uvw1 = [0.9848 0.1736 0;-0.1736 0.9848 0;0 0 1.0000]; % CS1
DC01 = [dot(uvw1(1,:),ijk(1,:)) dot(uvw1(1,:),ijk(2,:)) dot(uvw1(1,:),ijk(3,:))
dot(uvw1(2,:),ijk(1,:)) dot(uvw1(2,:),ijk(2,:)) dot(uvw1(2,:),ijk(3,:))
dot(uvw1(3,:),ijk(1,:)) dot(uvw1(3,:),ijk(2,:)) dot(uvw1(3,:),ijk(3,:))];
[rz, ry, rx] = dcm2angle(DC01,'ZYX');
q1 = dcm2quat(DC01);
p1_1 = quatrotate(q1,p0);
p1_2 = (rotz(rz*180/pi)*roty(ry*180/pi)*rotx(rx*180/pi)*p0').';
但最後的結果是不同的:
p1_1 =
0.9848 -0.1736 0
p1_2 =
0.9848 0.1736 0
據我所知,使用歐拉角可導致萬向節鎖定,使不確定性,但在這種情況下,使用四元數得到的結果是不正確的而從歐拉角獲得的結果是。我錯過了什麼? (藍色),WCS(黑色),p0
(黑色),p1_1
(藍色),p1_2
(紅色)。