home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / octa21eb.zip / octave / SCRIPTS.ZIP / scripts.fat / quatern / qtrsvmat.m < prev    next >
Text File  |  1999-04-29  |  847b  |  25 lines

  1. function Aib = qtrsvmat(qib)
  2. # function Aib = qtrsvmat(qib)
  3. # construct 3x3  transformation matrix from quatern qib
  4. # Aib is equivalent to rotation of th radians about axis vv, where
  5. #    [vv,th] = quatern(qib)
  6.  
  7. if(!is_vec(qib) | length(qib) != 4)
  8.   error(sprintf("qtrsvmat: q(%d,%d) must be a quatern",rows(qib),columns(qib)))
  9. elseif(max(abs(imag(qib))) != 0)
  10.   qib
  11.   error("qtrsvmat: input values must be real.");
  12. endif
  13.  
  14. Aib = [ (2.*(qib(1)^2 + qib(4)^2) -1.), ...
  15.       (2.*(qib(1)*qib(2)-qib(3)*qib(4))), ...
  16.       (2.*(qib(1)*qib(3)+qib(2)*qib(4))); ...
  17.     (2.*(qib(1)*qib(2)+qib(3)*qib(4))), ...
  18.       (2.*(qib(2)*qib(2)+qib(4)*qib(4))-1.), ...
  19.       (2.*(qib(2)*qib(3)-qib(1)*qib(4))); ...
  20.     (2.*(qib(1)*qib(3)-qib(2)*qib(4))), ...
  21.       (2.*(qib(2)*qib(3)+qib(1)*qib(4))), ...
  22.       (2.*(qib(3)*qib(3)+qib(4)*qib(4))-1.)];
  23. endfunction
  24.  
  25.