3224
|
1 function Aib = qtransvmat(qib) |
|
2 # function Aib = qtransvmat(qib) |
|
3 # construct 3x3 transformation matrix from quaternion qib |
|
4 # Aib is equivalent to rotation of th radians about axis vv, where |
|
5 # [vv,th] = quaternion(qib) |
|
6 |
|
7 if(!is_vector(qib) | length(qib) != 4) |
|
8 error(sprintf("qtransvmat: q(%d,%d) must be a quaternion",rows(qib),columns(qib))) |
|
9 elseif(max(abs(imag(qib))) != 0) |
|
10 qib |
|
11 error("qtransvmat: 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 |