rv2q.m
上传用户:skyjin520
上传日期:2016-12-06
资源大小:20k
文件大小:1k
源码类别:

交通/航空行业

开发平台:

Matlab

  1. function q = rv2q(rv)
  2.     F1 =(   2 * 1); %/* define: Fk=2^k*k! */
  3.     F2 =(F1*2 * 2);
  4.     F3 =(F2*2 * 3);
  5.     F4 =(F3*2 * 4);
  6.     F5 =(F3*2 * 5);
  7. n2 = rv(1)*rv(1)+rv(2)*rv(2)+rv(3)*rv(3);
  8. if(n2<0.017^2) %/* 0.017^2 */
  9. n4=n2*n2;
  10. c = 1.0 - n2*(1.0/F2) + n4*(1.0/F4);
  11. f = 0.5 - n2*(1.0/F3) + n4*(1.0/F5);
  12. else
  13. n_2 = sqrt(n2);
  14. c = cos(n_2);
  15. f = sin(n_2)/n_2*0.5;
  16.     end
  17. q = [c; f*rv];
  18. %     norm = sqrt(rv'*rv);
  19. %     if norm>1.e-20
  20. %         f = sin(norm/2)/(norm/2);
  21. %     else
  22. %         f = 1;
  23. %     end
  24. %     q = [cos(norm/2); f/2*rv];