📄 qinterp.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"><html><head> <title>Description of qinterp</title> <meta name="keywords" content="qinterp"> <meta name="description" content="QINTERP Interpolate rotations expressed by quaternion objects"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="generator" content="m2html © 2003 Guillaume Flandin"> <meta name="robots" content="index, follow"> <link type="text/css" rel="stylesheet" href="../m2html.css"></head><body><a name="_top"></a><div><a href="../index.html">Home</a> > <a href="#">@quaternion</a> > qinterp.m</div><!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png"> Master index</a></td><td align="right"><a href="index.html">Index for ./@quaternion <img alt=">" border="0" src="../right.png"></a></td></tr></table>--><h1>qinterp</h1><h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>QINTERP Interpolate rotations expressed by quaternion objects</strong></div><h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>function q = qinterp(Q1, Q2, r) </strong></div><h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre class="comment">QINTERP Interpolate rotations expressed by quaternion objects QI = qinterp(Q1, Q2, R) Return a unit-quaternion that interpolates between Q1 and Q2 as R moves from 0 to 1. This is a spherical linear interpolation (slerp) that can be interpretted as interpolation along a great circle arc on a sphere. If r is a vector, QI, is a cell array of quaternions, each element corresponding to sequential elements of R. See also: CTRAJ, <a href="quaternion.html" class="code" title="function q = quaternion(a1, a2)">QUATERNION</a>.</pre></div><!-- crossreference --><h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>This function calls:<ul style="list-style-image:url(../matlabicon.gif)"><li><a href="double.html" class="code" title="function v = double(q)">double</a> DOUBLE Convert a quaternion object to a 4-element vector</li><li><a href="quaternion.html" class="code" title="function q = quaternion(a1, a2)">quaternion</a> QUATERNION Constructor for quaternion objects</li></ul>This function is called by:<ul style="list-style-image:url(../matlabicon.gif)"></ul><!-- crossreference --><h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre>0001 <span class="comment">%QINTERP Interpolate rotations expressed by quaternion objects</span>0002 <span class="comment">%</span>0003 <span class="comment">% QI = qinterp(Q1, Q2, R)</span>0004 <span class="comment">%</span>0005 <span class="comment">% Return a unit-quaternion that interpolates between Q1 and Q2 as R moves</span>0006 <span class="comment">% from 0 to 1. This is a spherical linear interpolation (slerp) that can</span>0007 <span class="comment">% be interpretted as interpolation along a great circle arc on a sphere.</span>0008 <span class="comment">%</span>0009 <span class="comment">% If r is a vector, QI, is a cell array of quaternions, each element</span>0010 <span class="comment">% corresponding to sequential elements of R.</span>0011 <span class="comment">%</span>0012 <span class="comment">% See also: CTRAJ, QUATERNION.</span>0013 0014 <span class="comment">% Copyright (C) 1999-2008, by Peter I. Corke</span>0015 <span class="comment">%</span>0016 <span class="comment">% This file is part of The Robotics Toolbox for Matlab (RTB).</span>0017 <span class="comment">%</span>0018 <span class="comment">% RTB is free software: you can redistribute it and/or modify</span>0019 <span class="comment">% it under the terms of the GNU Lesser General Public License as published by</span>0020 <span class="comment">% the Free Software Foundation, either version 3 of the License, or</span>0021 <span class="comment">% (at your option) any later version.</span>0022 <span class="comment">%</span>0023 <span class="comment">% RTB is distributed in the hope that it will be useful,</span>0024 <span class="comment">% but WITHOUT ANY WARRANTY; without even the implied warranty of</span>0025 <span class="comment">% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>0026 <span class="comment">% GNU Lesser General Public License for more details.</span>0027 <span class="comment">%</span>0028 <span class="comment">% You should have received a copy of the GNU Leser General Public License</span>0029 <span class="comment">% along with RTB. If not, see <http://www.gnu.org/licenses/>.</span>0030 0031 <a name="_sub0" href="#_subfunctions" class="code">function q = qinterp(Q1, Q2, r)</a>0032 0033 0034 q1 = <a href="double.html" class="code" title="function v = double(q)">double</a>(Q1);0035 q2 = <a href="double.html" class="code" title="function v = double(q)">double</a>(Q2);0036 0037 <span class="keyword">if</span> (r<0) | (r>1),0038 error(<span class="string">'R out of range'</span>);0039 <span class="keyword">end</span>0040 0041 theta = acos(q1*q2');0042 q = {};0043 count = 1;0044 0045 <span class="keyword">if</span> length(r) == 1,0046 <span class="keyword">if</span> theta == 0,0047 q = Q1;0048 <span class="keyword">else</span>0049 q = <a href="quaternion.html" class="code" title="function q = quaternion(a1, a2)">quaternion</a>( (sin((1-r)*theta) * q1 + sin(r*theta) * q2) / sin(theta) );0050 <span class="keyword">end</span>0051 <span class="keyword">else</span>0052 <span class="keyword">for</span> R=r(:)',0053 <span class="keyword">if</span> theta == 0,0054 qq = Q1;0055 <span class="keyword">else</span>0056 qq = <a href="quaternion.html" class="code" title="function q = quaternion(a1, a2)">quaternion</a>( (sin((1-R)*theta) * q1 + sin(R*theta) * q2) / sin(theta) );0057 <span class="keyword">end</span>0058 q{count} = qq;0059 count = count + 1;0060 <span class="keyword">end</span>0061 <span class="keyword">end</span></pre></div><hr><address>Generated on Sun 15-Feb-2009 18:09:29 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> © 2003</address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -