31 lines
1.1 KiB
Matlab
Executable File
31 lines
1.1 KiB
Matlab
Executable File
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 |