%ROT Rotation % returns a 4x4 homogeneous transformation matrix describing the rotation about an arbitrary axis by angle theta. % % Syntax: T = rot(axis,theta) % % Inputs: % axis - vector to rotate about % theta - angle to rotate % % Outputs: % T - homogeneous rotation transformation % % See also: ROTX, ROTY, ROTZ % Author: Travis Hydzik % Last revision: 20 October 2004 function T = rot(axis,theta) axis = axis/norm(axis); c = cos(theta); s = sin(theta); t = 1 - cos(theta); T = [ (t*axis(1)^2 + c) (t*axis(1)*axis(2) - s*axis(3)) (t*axis(1)*axis(3) + s*axis(2)) 0 (t*axis(1)*axis(2) + s*axis(3)) (t*axis(2)^2 + c) (t*axis(2)*axis(3) - s*axis(1)) 0 (t*axis(1)*axis(3) - s*axis(2)) (t*axis(2)*axis(3) + s*axis(1)) (t*axis(3)^2 + c) 0 0 0 0 1 ];