Rodrigues.m 706 B

12345678910111213141516
  1. % Rodrigues.m
  2. %
  3. % Implements Rodrigues' formula for creating a rotation matrix
  4. function [mat] = Rodrigues(vec, angle)
  5. mat = zeros(3,3);
  6. mat(1,1) = (1-cos(angle))*vec(1)*vec(1) + cos(angle);
  7. mat(1,2) = (1-cos(angle))*vec(1)*vec(2) - sin(angle)*vec(3);
  8. mat(1,3) = (1-cos(angle))*vec(1)*vec(3) + sin(angle)*vec(2);
  9. mat(2,1) = (1-cos(angle))*vec(2)*vec(1) + sin(angle)*vec(3);
  10. mat(2,2) = (1-cos(angle))*vec(2)*vec(2) + cos(angle);
  11. mat(2,3) = (1-cos(angle))*vec(2)*vec(3) - sin(angle)*vec(1);
  12. mat(3,1) = (1-cos(angle))*vec(3)*vec(1) - sin(angle)*vec(2);
  13. mat(3,2) = (1-cos(angle))*vec(3)*vec(2) + sin(angle)*vec(1);
  14. mat(3,3) = (1-cos(angle))*vec(3)*vec(3) + cos(angle);
  15. end