V_ROTQR2AX converts a rotation axis and angle to the corresponding real quaternion Inputs: A(3,1) Vector in the direction of the rotation axis. T Rotation angle in radians Output: Q(4,1) normalized real-valued quaternion In the quaternion representation of a rotation, and q(1) = cos(t/2) where t is the angle of rotation and q(2:4)/sin(t/2) is a unit vector lying along the axis of rotation. A positive rotation about [0 0 1] takes the X axis towards the Y axis. Copyright (C) Mike Brookes 2007-2018 Version: $Id: v_rotax2qr.m 10865 2018-09-21 17:22:45Z dmb $ VOICEBOX is a MATLAB toolbox for speech processing. Home page: http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You can obtain a copy of the GNU General Public License from http://www.gnu.org/copyleft/gpl.html or by writing to Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0001 function q=v_rotax2qr(a,t) 0002 %V_ROTQR2AX converts a rotation axis and angle to the corresponding real quaternion 0003 % Inputs: 0004 % 0005 % A(3,1) Vector in the direction of the rotation axis. 0006 % T Rotation angle in radians 0007 % 0008 % Output: 0009 % 0010 % Q(4,1) normalized real-valued quaternion 0011 % 0012 % In the quaternion representation of a rotation, and q(1) = cos(t/2) 0013 % where t is the angle of rotation and q(2:4)/sin(t/2) is a unit vector 0014 % lying along the axis of rotation. 0015 % A positive rotation about [0 0 1] takes the X axis towards the Y axis. 0016 % 0017 % Copyright (C) Mike Brookes 2007-2018 0018 % Version: $Id: v_rotax2qr.m 10865 2018-09-21 17:22:45Z dmb $ 0019 % 0020 % VOICEBOX is a MATLAB toolbox for speech processing. 0021 % Home page: http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html 0022 % 0023 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0024 % This program is free software; you can redistribute it and/or modify 0025 % it under the terms of the GNU General Public License as published by 0026 % the Free Software Foundation; either version 2 of the License, or 0027 % (at your option) any later version. 0028 % 0029 % This program is distributed in the hope that it will be useful, 0030 % but WITHOUT ANY WARRANTY; without even the implied warranty of 0031 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0032 % GNU General Public License for more details. 0033 % 0034 % You can obtain a copy of the GNU General Public License from 0035 % http://www.gnu.org/copyleft/gpl.html or by writing to 0036 % Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA. 0037 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0038 if all(a==0) 0039 a=[1;0;0]; 0040 end 0041 m=sqrt(a(:)'*a(:)); 0042 q=[cos(0.5*t); sin(0.5*t)*a(:)/m]; 0043 if ~nargout 0044 v_rotqr2ro(q); % plot a rotated cube 0045 end 0046