| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193 |
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
- <title>Quaternion Class Reference</title>
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- <link href="custom.css" rel="stylesheet" type="text/css" />
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
- <script type="text/javascript" src="jquery.js"></script>
- <script type="text/javascript" src="search/search.js"></script>
- <script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
- </script>
- </head>
- <body>
- <div id="top"><!-- do not remove this div! -->
- <table class="header" border="0">
- <tbody>
- <tr>
- <td id="logo"><a href="http://gameplay3d.io/"><img src="images/logo.png" alt="gameplay" border="0" height="64px"/></a></td>
- <td width="100%"/>
- <td><a href="http://gameplay3d.io/"><span class="button">overview</span></a></td><td width="12px"/>
- <td><a href="https://github.com/gameplay3d/GamePlay/wiki"><span class="button">wiki</span></a></td><td width="12px"/>
- <td><a href="http://gameplay3d.github.com/GamePlay/api/index.html"><span class="button">api reference</span></a></td><td width="12px"/>
- <td><a href="https://github.com/gameplay3d/GamePlay"><span class="button">download</span></a></td>
- </tr>
- </tbody>
- </table>
- <!-- Generated by Doxygen 1.7.6.1 -->
- <script type="text/javascript">
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
- </script>
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
- <li>
- <div id="MSearchBox" class="MSearchBoxInactive">
- <span class="left">
- <img id="MSearchSelect" src="search/mag_sel.png"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- alt=""/>
- <input type="text" id="MSearchField" value="Search" accesskey="S"
- onfocus="searchBox.OnSearchFieldFocus(true)"
- onblur="searchBox.OnSearchFieldFocus(false)"
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
- </span><span class="right">
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
- </span>
- </div>
- </li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Class List</span></a></li>
- <li><a href="classes.html"><span>Class Index</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Class Members</span></a></li>
- </ul>
- </div>
- <!-- window showing the filter options -->
- <div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
- <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerator</a></div>
- <!-- iframe showing the search results (closed by default) -->
- <div id="MSearchResultsWindow">
- <iframe src="javascript:void(0)" frameborder="0"
- name="MSearchResults" id="MSearchResults">
- </iframe>
- </div>
- <div id="nav-path" class="navpath">
- <ul>
- <li class="navelem"><b>gameplay</b> </li>
- <li class="navelem"><a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> </li>
- </ul>
- </div>
- </div>
- <div class="header">
- <div class="summary">
- <a href="#pub-methods">Public Member Functions</a> |
- <a href="#pub-static-methods">Static Public Member Functions</a> |
- <a href="#pub-attribs">Public Attributes</a> </div>
- <div class="headertitle">
- <div class="title">gameplay::Quaternion Class Reference</div> </div>
- </div><!--header-->
- <div class="contents">
- <!-- doxytag: class="gameplay::Quaternion" -->
- <p><code>#include <Quaternion.h></code></p>
- <p><a href="classgameplay_1_1_quaternion-members.html">List of all members.</a></p>
- <table class="memberdecls">
- <tr><td colspan="2"><h2><a name="pub-methods"></a>
- Public Member Functions</h2></td></tr>
- <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#aaffcda9a0b8fbd51ee860ab704005ba3">Quaternion</a> ()</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a7384c6a014a4687ad770f5043b1107d7">Quaternion</a> (float <a class="el" href="classgameplay_1_1_quaternion.html#a7d459b3a8d299c0041537ae833616984">x</a>, float <a class="el" href="classgameplay_1_1_quaternion.html#a1474289ed4a64d618cb7442cd1de8e8e">y</a>, float <a class="el" href="classgameplay_1_1_quaternion.html#a22b3cb659769e4968fc9c5805f467e25">z</a>, float <a class="el" href="classgameplay_1_1_quaternion.html#a2282df4dee3cdf7ecf8512004d16331c">w</a>)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a952f7977bec7d3f020cb4f3cf0fdf7ce">Quaternion</a> (float *array)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#ac20f805362106410accdbd294a3785fe">Quaternion</a> (const <a class="el" href="classgameplay_1_1_matrix.html">Matrix</a> &m)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#afcae9ff45daf216c769303492bcaaa3d">Quaternion</a> (const <a class="el" href="classgameplay_1_1_vector3.html">Vector3</a> &axis, float angle)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a98e360bf934f6a3a40a557d047b635cc">Quaternion</a> (const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> &copy)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a5447fe636088979e73faaf7236b70d37">~Quaternion</a> ()</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#aedc78813aaea55344c8e54518de96c22">isIdentity</a> () const </td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a707ca5b194e8c7b00251776d62fa6369">isZero</a> () const </td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a5b61786a141017b46a436636383a4462">conjugate</a> ()</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#ac0dda1f8a41cabd76c2fd525a265c160">conjugate</a> (<a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> *dst) const </td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a03045f81981d9cef37d67e7b6b0a98a7">inverse</a> ()</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a3deffd155966b3c7b3c76bb5097dee77">inverse</a> (<a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> *dst) const </td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a5834543671af9cb9ed12aaed5cc93016">multiply</a> (const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> &q)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a79396fda9e9fadd7984f9e2ceef546cb">normalize</a> ()</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#abe3886ea1ef763798e990c290822e7c0">normalize</a> (<a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> *dst) const </td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a9125d9957aa6a114fad7063fdd89d9d7">set</a> (float <a class="el" href="classgameplay_1_1_quaternion.html#a7d459b3a8d299c0041537ae833616984">x</a>, float <a class="el" href="classgameplay_1_1_quaternion.html#a1474289ed4a64d618cb7442cd1de8e8e">y</a>, float <a class="el" href="classgameplay_1_1_quaternion.html#a22b3cb659769e4968fc9c5805f467e25">z</a>, float <a class="el" href="classgameplay_1_1_quaternion.html#a2282df4dee3cdf7ecf8512004d16331c">w</a>)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#ae32a7699d460d715853300b29edf4524">set</a> (float *array)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a9f428c44a877a8d09035cd95afc08d31">set</a> (const <a class="el" href="classgameplay_1_1_matrix.html">Matrix</a> &m)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a2e581250445a02381cdec95435656da3">set</a> (const <a class="el" href="classgameplay_1_1_vector3.html">Vector3</a> &axis, float angle)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#ab30fe334e4a214a6095e7c8590ed345a">set</a> (const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> &q)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#ad6966c6dd1babf2a8b8f53868a50707d">setIdentity</a> ()</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">float </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a349dee878455cce0363ab88840fccbd4">toAxisAngle</a> (<a class="el" href="classgameplay_1_1_vector3.html">Vector3</a> *e) const </td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#ac302377eb7a8b12bf8bb8443f9ed3c20">operator*</a> (const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> &q) const </td></tr>
- <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#ab81bdbe85a08cca5344178d2add32d55">operator*=</a> (const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> &q)</td></tr>
- <tr><td colspan="2"><h2><a name="pub-static-methods"></a>
- Static Public Member Functions</h2></td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a5dec36b3b078e747878d190d4d08484f">identity</a> ()</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#aab0939fdc7ad7b771a584638db1fd69b">zero</a> ()</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a2c3344e3d171f9d4410943e7aa117f0d">createFromRotationMatrix</a> (const <a class="el" href="classgameplay_1_1_matrix.html">Matrix</a> &m, <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> *dst)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a91e9b6e479659985bf5fb7bb103ed01c">createFromAxisAngle</a> (const <a class="el" href="classgameplay_1_1_vector3.html">Vector3</a> &axis, float angle, <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> *dst)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#ab0ac5cfa8ce5b8e29b2d14d437293ade">multiply</a> (const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> &q1, const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> &q2, <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> *dst)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a2b4462c7347dfbd8e126f69b9da18df2">lerp</a> (const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> &q1, const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> &q2, float t, <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> *dst)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a2ba6435fdf4e8a717d1302a442cbaf4a">slerp</a> (const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> &q1, const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> &q2, float t, <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> *dst)</td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#ab1d8058b377596c3c24d2d3a65272a89">squad</a> (const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> &q1, const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> &q2, const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> &s1, const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> &s2, float t, <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> *dst)</td></tr>
- <tr><td colspan="2"><h2><a name="pub-attribs"></a>
- Public Attributes</h2></td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">float </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a7d459b3a8d299c0041537ae833616984">x</a></td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">float </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a1474289ed4a64d618cb7442cd1de8e8e">y</a></td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">float </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a22b3cb659769e4968fc9c5805f467e25">z</a></td></tr>
- <tr><td class="memItemLeft" align="right" valign="top">float </td><td class="memItemRight" valign="bottom"><a class="el" href="classgameplay_1_1_quaternion.html#a2282df4dee3cdf7ecf8512004d16331c">w</a></td></tr>
- </table>
- <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
- <div class="textblock"><p>Defines a 4-element quaternion that represents the orientation of an object in space.</p>
- <p>Quaternions are typically used as a replacement for euler angles and rotation matrices as a way to achieve smooth interpolation and avoid gimbal lock.</p>
- <p>Note that this quaternion class does not automatically keep the quaternion normalized. Therefore, care must be taken to normalize the quaternion when necessary, by calling the normalize method. This class provides three methods for doing quaternion interpolation: lerp, slerp, and squad.</p>
- <p>lerp (linear interpolation): the interpolation curve gives a straight line in quaternion space. It is simple and fast to compute. The only problem is that it does not provide constant angular velocity. Note that a constant velocity is not necessarily a requirement for a curve; slerp (spherical linear interpolation): the interpolation curve forms a great arc on the quaternion unit sphere. Slerp provides constant angular velocity; squad (spherical spline interpolation): interpolating between a series of rotations using slerp leads to the following problems:</p>
- <ul>
- <li>the curve is not smooth at the control points;</li>
- <li>the angular velocity is not constant;</li>
- <li>the angular velocity is not continuous at the control points.</li>
- </ul>
- <p>Since squad is continuously differentiable, it remedies the first and third problems mentioned above. The slerp method provided here is intended for interpolation of principal rotations. It treats +q and -q as the same principal rotation and is at liberty to use the negative of either input. The resulting path is always the shorter arc.</p>
- <p>The lerp method provided here interpolates strictly in quaternion space. Note that the resulting path may pass through the origin if interpolating between a quaternion and its exact negative.</p>
- <p>As an example, consider the following quaternions:</p>
- <p>q1 = (0.6, 0.8, 0.0, 0.0), q2 = (0.0, 0.6, 0.8, 0.0), q3 = (0.6, 0.0, 0.8, 0.0), and q4 = (-0.8, 0.0, -0.6, 0.0). For the point p = (1.0, 1.0, 1.0), the following figures show the trajectories of p using lerp, slerp, and squad. </p>
- </div><hr/><h2>Constructor & Destructor Documentation</h2>
- <a class="anchor" id="aaffcda9a0b8fbd51ee860ab704005ba3"></a><!-- doxytag: member="gameplay::Quaternion::Quaternion" ref="aaffcda9a0b8fbd51ee860ab704005ba3" args="()" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classgameplay_1_1_quaternion.html#aaffcda9a0b8fbd51ee860ab704005ba3">gameplay::Quaternion::Quaternion</a> </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Constructs a quaternion initialized to (0, 0, 0, 1). </p>
- </div>
- </div>
- <a class="anchor" id="a7384c6a014a4687ad770f5043b1107d7"></a><!-- doxytag: member="gameplay::Quaternion::Quaternion" ref="a7384c6a014a4687ad770f5043b1107d7" args="(float x, float y, float z, float w)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classgameplay_1_1_quaternion.html#aaffcda9a0b8fbd51ee860ab704005ba3">gameplay::Quaternion::Quaternion</a> </td>
- <td>(</td>
- <td class="paramtype">float </td>
- <td class="paramname"><em>x</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float </td>
- <td class="paramname"><em>y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float </td>
- <td class="paramname"><em>z</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float </td>
- <td class="paramname"><em>w</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Constructs a quaternion initialized to (0, 0, 0, 1).</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">x</td><td>The x component of the quaternion. </td></tr>
- <tr><td class="paramname">y</td><td>The y component of the quaternion. </td></tr>
- <tr><td class="paramname">z</td><td>The z component of the quaternion. </td></tr>
- <tr><td class="paramname">w</td><td>The w component of the quaternion. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="a952f7977bec7d3f020cb4f3cf0fdf7ce"></a><!-- doxytag: member="gameplay::Quaternion::Quaternion" ref="a952f7977bec7d3f020cb4f3cf0fdf7ce" args="(float *array)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classgameplay_1_1_quaternion.html#aaffcda9a0b8fbd51ee860ab704005ba3">gameplay::Quaternion::Quaternion</a> </td>
- <td>(</td>
- <td class="paramtype">float * </td>
- <td class="paramname"><em>array</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Constructs a new quaternion from the values in the specified array.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">array</td><td>The values for the new quaternion. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="ac20f805362106410accdbd294a3785fe"></a><!-- doxytag: member="gameplay::Quaternion::Quaternion" ref="ac20f805362106410accdbd294a3785fe" args="(const Matrix &m)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classgameplay_1_1_quaternion.html#aaffcda9a0b8fbd51ee860ab704005ba3">gameplay::Quaternion::Quaternion</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_matrix.html">Matrix</a> & </td>
- <td class="paramname"><em>m</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Constructs a quaternion equal to the rotational part of the specified matrix.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">m</td><td>The matrix. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="afcae9ff45daf216c769303492bcaaa3d"></a><!-- doxytag: member="gameplay::Quaternion::Quaternion" ref="afcae9ff45daf216c769303492bcaaa3d" args="(const Vector3 &axis, float angle)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classgameplay_1_1_quaternion.html#aaffcda9a0b8fbd51ee860ab704005ba3">gameplay::Quaternion::Quaternion</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_vector3.html">Vector3</a> & </td>
- <td class="paramname"><em>axis</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float </td>
- <td class="paramname"><em>angle</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Constructs a quaternion equal to the rotation from the specified axis and angle.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">axis</td><td>A vector describing the axis of rotation. </td></tr>
- <tr><td class="paramname">angle</td><td>The angle of rotation (in radians). </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="a98e360bf934f6a3a40a557d047b635cc"></a><!-- doxytag: member="gameplay::Quaternion::Quaternion" ref="a98e360bf934f6a3a40a557d047b635cc" args="(const Quaternion &copy)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classgameplay_1_1_quaternion.html#aaffcda9a0b8fbd51ee860ab704005ba3">gameplay::Quaternion::Quaternion</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td>
- <td class="paramname"><em>copy</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Constructs a new quaternion that is a copy of the specified one.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">copy</td><td>The quaternion to copy. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="a5447fe636088979e73faaf7236b70d37"></a><!-- doxytag: member="gameplay::Quaternion::~Quaternion" ref="a5447fe636088979e73faaf7236b70d37" args="()" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classgameplay_1_1_quaternion.html#a5447fe636088979e73faaf7236b70d37">gameplay::Quaternion::~Quaternion</a> </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Destructor. </p>
- </div>
- </div>
- <hr/><h2>Member Function Documentation</h2>
- <a class="anchor" id="a5b61786a141017b46a436636383a4462"></a><!-- doxytag: member="gameplay::Quaternion::conjugate" ref="a5b61786a141017b46a436636383a4462" args="()" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classgameplay_1_1_quaternion.html#a5b61786a141017b46a436636383a4462">gameplay::Quaternion::conjugate</a> </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Sets this quaternion to the conjugate of itself. </p>
- </div>
- </div>
- <a class="anchor" id="ac0dda1f8a41cabd76c2fd525a265c160"></a><!-- doxytag: member="gameplay::Quaternion::conjugate" ref="ac0dda1f8a41cabd76c2fd525a265c160" args="(Quaternion *dst) const " -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classgameplay_1_1_quaternion.html#a5b61786a141017b46a436636383a4462">gameplay::Quaternion::conjugate</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> * </td>
- <td class="paramname"><em>dst</em></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Gets the conjugate of this quaternion in dst.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">dst</td><td>A quaternion to store the conjugate in. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="a91e9b6e479659985bf5fb7bb103ed01c"></a><!-- doxytag: member="gameplay::Quaternion::createFromAxisAngle" ref="a91e9b6e479659985bf5fb7bb103ed01c" args="(const Vector3 &axis, float angle, Quaternion *dst)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void <a class="el" href="classgameplay_1_1_quaternion.html#a91e9b6e479659985bf5fb7bb103ed01c">gameplay::Quaternion::createFromAxisAngle</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_vector3.html">Vector3</a> & </td>
- <td class="paramname"><em>axis</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float </td>
- <td class="paramname"><em>angle</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> * </td>
- <td class="paramname"><em>dst</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td><code> [static]</code></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Creates this quaternion equal to the rotation from the specified axis and angle and stores the result in dst.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">axis</td><td>A vector describing the axis of rotation. </td></tr>
- <tr><td class="paramname">angle</td><td>The angle of rotation (in radians). </td></tr>
- <tr><td class="paramname">dst</td><td>A quaternion to store the conjugate in. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="a2c3344e3d171f9d4410943e7aa117f0d"></a><!-- doxytag: member="gameplay::Quaternion::createFromRotationMatrix" ref="a2c3344e3d171f9d4410943e7aa117f0d" args="(const Matrix &m, Quaternion *dst)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void <a class="el" href="classgameplay_1_1_quaternion.html#a2c3344e3d171f9d4410943e7aa117f0d">gameplay::Quaternion::createFromRotationMatrix</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_matrix.html">Matrix</a> & </td>
- <td class="paramname"><em>m</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> * </td>
- <td class="paramname"><em>dst</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td><code> [static]</code></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Creates a quaternion equal to the rotational part of the specified matrix and stores the result in dst.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">m</td><td>The matrix. </td></tr>
- <tr><td class="paramname">dst</td><td>A quaternion to store the conjugate in. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="a5dec36b3b078e747878d190d4d08484f"></a><!-- doxytag: member="gameplay::Quaternion::identity" ref="a5dec36b3b078e747878d190d4d08484f" args="()" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a>& <a class="el" href="classgameplay_1_1_quaternion.html#a5dec36b3b078e747878d190d4d08484f">gameplay::Quaternion::identity</a> </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Returns the identity quaternion.</p>
- <dl class="return"><dt><b>Returns:</b></dt><dd>The identity quaternion. </dd></dl>
- </div>
- </div>
- <a class="anchor" id="a03045f81981d9cef37d67e7b6b0a98a7"></a><!-- doxytag: member="gameplay::Quaternion::inverse" ref="a03045f81981d9cef37d67e7b6b0a98a7" args="()" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="classgameplay_1_1_quaternion.html#a03045f81981d9cef37d67e7b6b0a98a7">gameplay::Quaternion::inverse</a> </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Sets this quaternion to the inverse of itself.</p>
- <p>Note that the inverse of a quaternion is equal to its conjugate when the quaternion is unit-length. For this reason, it is more efficient to use the conjugate method directly when you know your quaternion is already unit-length.</p>
- <dl class="return"><dt><b>Returns:</b></dt><dd>true if the inverse can be computed, false otherwise. </dd></dl>
- </div>
- </div>
- <a class="anchor" id="a3deffd155966b3c7b3c76bb5097dee77"></a><!-- doxytag: member="gameplay::Quaternion::inverse" ref="a3deffd155966b3c7b3c76bb5097dee77" args="(Quaternion *dst) const " -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="classgameplay_1_1_quaternion.html#a03045f81981d9cef37d67e7b6b0a98a7">gameplay::Quaternion::inverse</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> * </td>
- <td class="paramname"><em>dst</em></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Gets the inverse of this quaternion in dst.</p>
- <p>Note that the inverse of a quaternion is equal to its conjugate when the quaternion is unit-length. For this reason, it is more efficient to use the conjugate method directly when you know your quaternion is already unit-length.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">dst</td><td>A quaternion to store the inverse in.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="return"><dt><b>Returns:</b></dt><dd>true if the inverse can be computed, false otherwise. </dd></dl>
- </div>
- </div>
- <a class="anchor" id="aedc78813aaea55344c8e54518de96c22"></a><!-- doxytag: member="gameplay::Quaternion::isIdentity" ref="aedc78813aaea55344c8e54518de96c22" args="() const " -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="classgameplay_1_1_quaternion.html#aedc78813aaea55344c8e54518de96c22">gameplay::Quaternion::isIdentity</a> </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Determines if this quaternion is equal to the identity quaternion.</p>
- <dl class="return"><dt><b>Returns:</b></dt><dd>true if it is the identity quaternion, false otherwise. </dd></dl>
- </div>
- </div>
- <a class="anchor" id="a707ca5b194e8c7b00251776d62fa6369"></a><!-- doxytag: member="gameplay::Quaternion::isZero" ref="a707ca5b194e8c7b00251776d62fa6369" args="() const " -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="classgameplay_1_1_quaternion.html#a707ca5b194e8c7b00251776d62fa6369">gameplay::Quaternion::isZero</a> </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Determines if this quaternion is all zeros.</p>
- <dl class="return"><dt><b>Returns:</b></dt><dd>true if this quaternion is all zeros, false otherwise. </dd></dl>
- </div>
- </div>
- <a class="anchor" id="a2b4462c7347dfbd8e126f69b9da18df2"></a><!-- doxytag: member="gameplay::Quaternion::lerp" ref="a2b4462c7347dfbd8e126f69b9da18df2" args="(const Quaternion &q1, const Quaternion &q2, float t, Quaternion *dst)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void <a class="el" href="classgameplay_1_1_quaternion.html#a2b4462c7347dfbd8e126f69b9da18df2">gameplay::Quaternion::lerp</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td>
- <td class="paramname"><em>q1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td>
- <td class="paramname"><em>q2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float </td>
- <td class="paramname"><em>t</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> * </td>
- <td class="paramname"><em>dst</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td><code> [static]</code></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Interpolates between two quaternions using linear interpolation.</p>
- <p>The interpolation curve for linear interpolation between quaternions gives a straight line in quaternion space.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">q1</td><td>The first quaternion. </td></tr>
- <tr><td class="paramname">q2</td><td>The second quaternion. </td></tr>
- <tr><td class="paramname">t</td><td>The interpolation coefficient. </td></tr>
- <tr><td class="paramname">dst</td><td>A quaternion to store the result in. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="a5834543671af9cb9ed12aaed5cc93016"></a><!-- doxytag: member="gameplay::Quaternion::multiply" ref="a5834543671af9cb9ed12aaed5cc93016" args="(const Quaternion &q)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classgameplay_1_1_quaternion.html#a5834543671af9cb9ed12aaed5cc93016">gameplay::Quaternion::multiply</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td>
- <td class="paramname"><em>q</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Multiplies this quaternion by the specified one and stores the result in this quaternion.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">q</td><td>The quaternion to multiply. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="ab0ac5cfa8ce5b8e29b2d14d437293ade"></a><!-- doxytag: member="gameplay::Quaternion::multiply" ref="ab0ac5cfa8ce5b8e29b2d14d437293ade" args="(const Quaternion &q1, const Quaternion &q2, Quaternion *dst)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void <a class="el" href="classgameplay_1_1_quaternion.html#a5834543671af9cb9ed12aaed5cc93016">gameplay::Quaternion::multiply</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td>
- <td class="paramname"><em>q1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td>
- <td class="paramname"><em>q2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> * </td>
- <td class="paramname"><em>dst</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td><code> [static]</code></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Multiplies the specified quaternions and stores the result in dst.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">q1</td><td>The first quaternion. </td></tr>
- <tr><td class="paramname">q2</td><td>The second quaternion. </td></tr>
- <tr><td class="paramname">dst</td><td>A quaternion to store the result in. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="a79396fda9e9fadd7984f9e2ceef546cb"></a><!-- doxytag: member="gameplay::Quaternion::normalize" ref="a79396fda9e9fadd7984f9e2ceef546cb" args="()" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classgameplay_1_1_quaternion.html#a79396fda9e9fadd7984f9e2ceef546cb">gameplay::Quaternion::normalize</a> </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Normalizes this quaternion to have unit length.</p>
- <p>If the quaternion already has unit length or if the length of the quaternion is zero, this method does nothing. </p>
- </div>
- </div>
- <a class="anchor" id="abe3886ea1ef763798e990c290822e7c0"></a><!-- doxytag: member="gameplay::Quaternion::normalize" ref="abe3886ea1ef763798e990c290822e7c0" args="(Quaternion *dst) const " -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classgameplay_1_1_quaternion.html#a79396fda9e9fadd7984f9e2ceef546cb">gameplay::Quaternion::normalize</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> * </td>
- <td class="paramname"><em>dst</em></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Normalizes this quaternion and stores the result in dst.</p>
- <p>If the quaternion already has unit length or if the length of the quaternion is zero, this method simply copies this vector into dst.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">dst</td><td>A quaternion to store the result in. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="ac302377eb7a8b12bf8bb8443f9ed3c20"></a><!-- doxytag: member="gameplay::Quaternion::operator*" ref="ac302377eb7a8b12bf8bb8443f9ed3c20" args="(const Quaternion &q) const " -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> gameplay::Quaternion::operator* </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td>
- <td class="paramname"><em>q</em></td><td>)</td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Calculates the quaternion product of this quaternion with the given quaternion.</p>
- <p>Note: this does not modify this quaternion.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">q</td><td>The quaternion to multiply. </td></tr>
- </table>
- </dd>
- </dl>
- <dl class="return"><dt><b>Returns:</b></dt><dd>The quaternion product. </dd></dl>
- </div>
- </div>
- <a class="anchor" id="ab81bdbe85a08cca5344178d2add32d55"></a><!-- doxytag: member="gameplay::Quaternion::operator*=" ref="ab81bdbe85a08cca5344178d2add32d55" args="(const Quaternion &q)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a>& gameplay::Quaternion::operator*= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td>
- <td class="paramname"><em>q</em></td><td>)</td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Multiplies this quaternion with the given quaternion.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">q</td><td>The quaternion to multiply. </td></tr>
- </table>
- </dd>
- </dl>
- <dl class="return"><dt><b>Returns:</b></dt><dd>This quaternion, after the multiplication occurs. </dd></dl>
- </div>
- </div>
- <a class="anchor" id="a9125d9957aa6a114fad7063fdd89d9d7"></a><!-- doxytag: member="gameplay::Quaternion::set" ref="a9125d9957aa6a114fad7063fdd89d9d7" args="(float x, float y, float z, float w)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classgameplay_1_1_quaternion.html#a9125d9957aa6a114fad7063fdd89d9d7">gameplay::Quaternion::set</a> </td>
- <td>(</td>
- <td class="paramtype">float </td>
- <td class="paramname"><em>x</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float </td>
- <td class="paramname"><em>y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float </td>
- <td class="paramname"><em>z</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float </td>
- <td class="paramname"><em>w</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Sets the elements of the quaternion to the specified values.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">x</td><td>The new x-value. </td></tr>
- <tr><td class="paramname">y</td><td>The new y-value. </td></tr>
- <tr><td class="paramname">z</td><td>The new z-value. </td></tr>
- <tr><td class="paramname">w</td><td>The new w-value. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="ae32a7699d460d715853300b29edf4524"></a><!-- doxytag: member="gameplay::Quaternion::set" ref="ae32a7699d460d715853300b29edf4524" args="(float *array)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classgameplay_1_1_quaternion.html#a9125d9957aa6a114fad7063fdd89d9d7">gameplay::Quaternion::set</a> </td>
- <td>(</td>
- <td class="paramtype">float * </td>
- <td class="paramname"><em>array</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Sets the elements of the quaternion from the values in the specified array.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">array</td><td>An array containing the elements of the quaternion in the order x, y, z, w. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="a9f428c44a877a8d09035cd95afc08d31"></a><!-- doxytag: member="gameplay::Quaternion::set" ref="a9f428c44a877a8d09035cd95afc08d31" args="(const Matrix &m)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classgameplay_1_1_quaternion.html#a9125d9957aa6a114fad7063fdd89d9d7">gameplay::Quaternion::set</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_matrix.html">Matrix</a> & </td>
- <td class="paramname"><em>m</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Sets the quaternion equal to the rotational part of the specified matrix.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">m</td><td>The matrix. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="a2e581250445a02381cdec95435656da3"></a><!-- doxytag: member="gameplay::Quaternion::set" ref="a2e581250445a02381cdec95435656da3" args="(const Vector3 &axis, float angle)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classgameplay_1_1_quaternion.html#a9125d9957aa6a114fad7063fdd89d9d7">gameplay::Quaternion::set</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_vector3.html">Vector3</a> & </td>
- <td class="paramname"><em>axis</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float </td>
- <td class="paramname"><em>angle</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Sets the quaternion equal to the rotation from the specified axis and angle.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">axis</td><td>The axis of rotation. </td></tr>
- <tr><td class="paramname">angle</td><td>The angle of rotation (in radians). </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="ab30fe334e4a214a6095e7c8590ed345a"></a><!-- doxytag: member="gameplay::Quaternion::set" ref="ab30fe334e4a214a6095e7c8590ed345a" args="(const Quaternion &q)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classgameplay_1_1_quaternion.html#a9125d9957aa6a114fad7063fdd89d9d7">gameplay::Quaternion::set</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td>
- <td class="paramname"><em>q</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Sets the elements of this quaternion to a copy of the specified quaternion.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">q</td><td>The quaternion to copy. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="ad6966c6dd1babf2a8b8f53868a50707d"></a><!-- doxytag: member="gameplay::Quaternion::setIdentity" ref="ad6966c6dd1babf2a8b8f53868a50707d" args="()" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void <a class="el" href="classgameplay_1_1_quaternion.html#ad6966c6dd1babf2a8b8f53868a50707d">gameplay::Quaternion::setIdentity</a> </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Sets this quaternion to be equal to the identity quaternion. </p>
- </div>
- </div>
- <a class="anchor" id="a2ba6435fdf4e8a717d1302a442cbaf4a"></a><!-- doxytag: member="gameplay::Quaternion::slerp" ref="a2ba6435fdf4e8a717d1302a442cbaf4a" args="(const Quaternion &q1, const Quaternion &q2, float t, Quaternion *dst)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void <a class="el" href="classgameplay_1_1_quaternion.html#a2ba6435fdf4e8a717d1302a442cbaf4a">gameplay::Quaternion::slerp</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td>
- <td class="paramname"><em>q1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td>
- <td class="paramname"><em>q2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float </td>
- <td class="paramname"><em>t</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> * </td>
- <td class="paramname"><em>dst</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td><code> [static]</code></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Interpolates between two quaternions using spherical linear interpolation.</p>
- <p>Spherical linear interpolation provides smooth transitions between different orientations and is often useful for animating models or cameras in 3D.</p>
- <p>Note: For accurate interpolation, the input quaternions must be at (or close to) unit length. This method does not automatically normalize the input quaternions, so it is up to the caller to ensure they call normalize beforehand, if necessary.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">q1</td><td>The first quaternion. </td></tr>
- <tr><td class="paramname">q2</td><td>The second quaternion. </td></tr>
- <tr><td class="paramname">t</td><td>The interpolation coefficient. </td></tr>
- <tr><td class="paramname">dst</td><td>A quaternion to store the result in. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="ab1d8058b377596c3c24d2d3a65272a89"></a><!-- doxytag: member="gameplay::Quaternion::squad" ref="ab1d8058b377596c3c24d2d3a65272a89" args="(const Quaternion &q1, const Quaternion &q2, const Quaternion &s1, const Quaternion &s2, float t, Quaternion *dst)" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void <a class="el" href="classgameplay_1_1_quaternion.html#ab1d8058b377596c3c24d2d3a65272a89">gameplay::Quaternion::squad</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td>
- <td class="paramname"><em>q1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td>
- <td class="paramname"><em>q2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td>
- <td class="paramname"><em>s1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> & </td>
- <td class="paramname"><em>s2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float </td>
- <td class="paramname"><em>t</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a> * </td>
- <td class="paramname"><em>dst</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td><code> [static]</code></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Interpolates over a series of quaternions using spherical spline interpolation.</p>
- <p>Spherical spline interpolation provides smooth transitions between different orientations and is often useful for animating models or cameras in 3D.</p>
- <p>Note: For accurate interpolation, the input quaternions must be unit. This method does not automatically normalize the input quaternions, so it is up to the caller to ensure they call normalize beforehand, if necessary.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">q1</td><td>The first quaternion. </td></tr>
- <tr><td class="paramname">q2</td><td>The second quaternion. </td></tr>
- <tr><td class="paramname">s1</td><td>The first control point. </td></tr>
- <tr><td class="paramname">s2</td><td>The second control point. </td></tr>
- <tr><td class="paramname">t</td><td>The interpolation coefficient. </td></tr>
- <tr><td class="paramname">dst</td><td>A quaternion to store the result in. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="a349dee878455cce0363ab88840fccbd4"></a><!-- doxytag: member="gameplay::Quaternion::toAxisAngle" ref="a349dee878455cce0363ab88840fccbd4" args="(Vector3 *e) const " -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float <a class="el" href="classgameplay_1_1_quaternion.html#a349dee878455cce0363ab88840fccbd4">gameplay::Quaternion::toAxisAngle</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classgameplay_1_1_vector3.html">Vector3</a> * </td>
- <td class="paramname"><em>e</em></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Converts this Quaternion4f to axis-angle notation. The axis is normalized.</p>
- <dl class="params"><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramname">e</td><td>The Vector3f which stores the axis.</td></tr>
- </table>
- </dd>
- </dl>
- <dl class="return"><dt><b>Returns:</b></dt><dd>The angle (in radians). </dd></dl>
- </div>
- </div>
- <a class="anchor" id="aab0939fdc7ad7b771a584638db1fd69b"></a><!-- doxytag: member="gameplay::Quaternion::zero" ref="aab0939fdc7ad7b771a584638db1fd69b" args="()" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static const <a class="el" href="classgameplay_1_1_quaternion.html">Quaternion</a>& <a class="el" href="classgameplay_1_1_quaternion.html#aab0939fdc7ad7b771a584638db1fd69b">gameplay::Quaternion::zero</a> </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td><code> [static]</code></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>Returns the quaternion with all zeros.</p>
- <dl class="return"><dt><b>Returns:</b></dt><dd>The quaternion. </dd></dl>
- </div>
- </div>
- <hr/><h2>Member Data Documentation</h2>
- <a class="anchor" id="a2282df4dee3cdf7ecf8512004d16331c"></a><!-- doxytag: member="gameplay::Quaternion::w" ref="a2282df4dee3cdf7ecf8512004d16331c" args="" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float <a class="el" href="classgameplay_1_1_quaternion.html#a2282df4dee3cdf7ecf8512004d16331c">gameplay::Quaternion::w</a></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>The scalar component of the quaternion. </p>
- </div>
- </div>
- <a class="anchor" id="a7d459b3a8d299c0041537ae833616984"></a><!-- doxytag: member="gameplay::Quaternion::x" ref="a7d459b3a8d299c0041537ae833616984" args="" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float <a class="el" href="classgameplay_1_1_quaternion.html#a7d459b3a8d299c0041537ae833616984">gameplay::Quaternion::x</a></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>The x-value of the quaternion's vector component. </p>
- </div>
- </div>
- <a class="anchor" id="a1474289ed4a64d618cb7442cd1de8e8e"></a><!-- doxytag: member="gameplay::Quaternion::y" ref="a1474289ed4a64d618cb7442cd1de8e8e" args="" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float <a class="el" href="classgameplay_1_1_quaternion.html#a1474289ed4a64d618cb7442cd1de8e8e">gameplay::Quaternion::y</a></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>The y-value of the quaternion's vector component. </p>
- </div>
- </div>
- <a class="anchor" id="a22b3cb659769e4968fc9c5805f467e25"></a><!-- doxytag: member="gameplay::Quaternion::z" ref="a22b3cb659769e4968fc9c5805f467e25" args="" -->
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">float <a class="el" href="classgameplay_1_1_quaternion.html#a22b3cb659769e4968fc9c5805f467e25">gameplay::Quaternion::z</a></td>
- </tr>
- </table>
- </div>
- <div class="memdoc">
- <p>The z-value of the quaternion's vector component. </p>
- </div>
- </div>
- </div><!-- contents -->
- <!-- window showing the filter options -->
- <div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
- <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerator</a></div>
- <!-- iframe showing the search results (closed by default) -->
- <div id="MSearchResultsWindow">
- <iframe src="javascript:void(0)" frameborder="0"
- name="MSearchResults" id="MSearchResults">
- </iframe>
- </div>
- <hr class="footer"/><address class="footer"><small>
- Generated on Sat Jan 24 2015 15:29:43 for gameplay by  <a href="http://www.doxygen.org/index.html">
- <img class="footer" src="doxygen.png" alt="doxygen"/>
- </a> 1.7.6.1
- </small></address>
- </body>
- </html>
|