Mercurial > octave-nkf
diff scripts/quaternion/qtransvmat.m @ 3224:1e7532b9173b
[project @ 1998-12-04 22:08:23 by jwe]
author | jwe |
---|---|
date | Fri, 04 Dec 1998 22:08:23 +0000 |
parents | |
children | a892190f4977 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/quaternion/qtransvmat.m Fri Dec 04 22:08:23 1998 +0000 @@ -0,0 +1,24 @@ +function Aib = qtransvmat(qib) +# function Aib = qtransvmat(qib) +# construct 3x3 transformation matrix from quaternion qib +# Aib is equivalent to rotation of th radians about axis vv, where +# [vv,th] = quaternion(qib) + +if(!is_vector(qib) | length(qib) != 4) + error(sprintf("qtransvmat: q(%d,%d) must be a quaternion",rows(qib),columns(qib))) +elseif(max(abs(imag(qib))) != 0) + qib + error("qtransvmat: input values must be real."); +endif + +Aib = [ (2.*(qib(1)^2 + qib(4)^2) -1.), ... + (2.*(qib(1)*qib(2)-qib(3)*qib(4))), ... + (2.*(qib(1)*qib(3)+qib(2)*qib(4))); ... + (2.*(qib(1)*qib(2)+qib(3)*qib(4))), ... + (2.*(qib(2)*qib(2)+qib(4)*qib(4))-1.), ... + (2.*(qib(2)*qib(3)-qib(1)*qib(4))); ... + (2.*(qib(1)*qib(3)-qib(2)*qib(4))), ... + (2.*(qib(2)*qib(3)+qib(1)*qib(4))), ... + (2.*(qib(3)*qib(3)+qib(4)*qib(4))-1.)]; +endfunction +