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
+