Dynamic-Calibration/utils/Rot.m

31 lines
1.1 KiB
Mathematica
Raw Normal View History

2019-12-18 11:25:45 +00:00
function R = Rot(theta,axis)
axis = abs(axis);
if isnumeric(theta)
if axis(1) == 1 && axis(2) == 0 && axis(3) == 0
R = [1 0 0; 0 cos(theta) -sin(theta); 0 sin(theta) cos(theta)];
elseif axis(1) == 0 && axis(2) == 1 && axis(3) == 0
R = [cos(theta) 0 sin(theta); 0 1 0; -sin(theta) 0 cos(theta)];
elseif axis(1) == 0 && axis(2) == 0 && axis(3) == 1
R = [cos(theta) -sin(theta) 0; sin(theta) cos(theta) 0; 0 0 1];
else
% should return error
R = [];
end
else
if axis(1) == 1 && axis(2) == 0 && axis(3) == 0
R = [sym([1 0 0]);
sym(0) cos(theta) -sin(theta);
sym(0) sin(theta) cos(theta)];
elseif axis(1) == 0 && axis(2) == 1 && axis(3) == 0
R = [cos(theta) sym(0) sin(theta);
sym([0 1 0]);
-sin(theta) sym(0) cos(theta)];
elseif axis(1) == 0 && axis(2) == 0 && axis(3) == 1
R = [cos(theta) -sin(theta) sym(0);
sin(theta) cos(theta) sym(0);
sym([0 0 1])];
else
% should return error
R = [];
end
end