Home > voicebox > rotqr2ax.m

# rotqr2ax

## PURPOSE

ROTQR2AX converts a real quaternion to the corresponding rotation axis and angle

## SYNOPSIS

function [a,t]=rotqr2ax(q)

## DESCRIPTION

```ROTQR2AX converts a real quaternion to the corresponding rotation axis and angle
Inputs:

Q(4,1)   real-valued quaternion (with magnitude = 1)

Outputs:

A(3,1)   Unit vector in the direction of the rotation axis.
T        Rotation angle in radians (in range 0 to 2pi)

In the quaternion representation of a rotation, and q(1) = cos(t/2)
where t is the angle of rotation in the range 0 to 2pi
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
Version: \$Id: rotqr2ax.m 713 2011-10-16 14:45:43Z dmb \$

VOICEBOX is a MATLAB toolbox for speech processing.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%```

## CROSS-REFERENCE INFORMATION

This function calls:
This function is called by:

## SOURCE CODE

```0001 function [a,t]=rotqr2ax(q)
0002 %ROTQR2AX converts a real quaternion to the corresponding rotation axis and angle
0003 % Inputs:
0004 %
0005 %     Q(4,1)   real-valued quaternion (with magnitude = 1)
0006 %
0007 % Outputs:
0008 %
0009 %     A(3,1)   Unit vector in the direction of the rotation axis.
0010 %     T        Rotation angle in radians (in range 0 to 2pi)
0011 %
0012 % In the quaternion representation of a rotation, and q(1) = cos(t/2)
0013 % where t is the angle of rotation in the range 0 to 2pi
0014 % and q(2:4)/sin(t/2) is a unit vector 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
0018 %      Version: \$Id: rotqr2ax.m 713 2011-10-16 14:45:43Z dmb \$
0019 %
0020 %   VOICEBOX is a MATLAB toolbox for speech processing.
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 a=q(2:4);
0039 m=sqrt(a'*a);
0040 t=2*atan2(m,q(1));      % avoids problems if unnormalized
0041 if m>0
0042     a=a/m;
0043 else
0044     a=[0 0 1]';
0045 end
0046```

Generated on Mon 06-Aug-2018 14:48:32 by m2html © 2003