Sophie

Sophie

distrib > Fedora > 13 > i386 > by-pkgid > cd34bbe24503efb80ebebb7e33511ba0 > files > 109

libQGLViewer-doc-2.3.1-10.fc12.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>libQGLViewer: Frame Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link rel="shortcut icon" href="../images/qglviewer.ico" type="image/x-icon" /><link rel="icon" href="../images/qglviewer.icon.png" type="image/png" />
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.5 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="../index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>

    <li>
      <form action="search.php" method="get">
        <table cellspacing="0" cellpadding="0" border="0">
          <tr>
            <td><label>&nbsp;<u>S</u>earch&nbsp;for&nbsp;</label></td>
            <td><input type="text" name="query" value="" size="20" accesskey="s"/></td>
          </tr>
        </table>
      </form>
    </li>
    </ul>
  </div>
  </div>
</div>
<div class="contents">
<h1>Frame Class Reference</h1><!-- doxytag: class="qglviewer::Frame" -->The <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> class represents a coordinate system, defined by a position and an orientation.  
<a href="#_details">More...</a>
<p>
Inherited by <a class="el" href="classqglviewer_1_1ManipulatedFrame.html">ManipulatedFrame</a>.
<p>

<p>
<a href="classqglviewer_1_1Frame-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>World coordinates position and orientation</h2></td></tr>
<tr><td colspan="2"><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#2f649a1218291aa3776ce08d0a2879b1">Frame</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;position, const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;orientation)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#24f5da9b3f4bf4e71dfad7a74a932e52">setPosition</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;position)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ff7308b903966afc6c87b5cd766a9083">setPosition</a> (float x, float y, float z)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#5081403cb47f1324edae5278d5438a38">setPositionWithConstraint</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;position)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#6733704520780505759efdef38a68b8b">setOrientation</a> (const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;orientation)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#e3ac2bf6dcfe21252d40325789503ce6">setOrientation</a> (double q0, double q1, double q2, double q3)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#8b69106a268d78daf27d32854d455da4">setOrientationWithConstraint</a> (<a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;orientation)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#47912d16be51eb85d68d3dcb4a4fb087">setPositionAndOrientation</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;position, const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;orientation)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#8501c5582c1aa2a82a929ce36439ab3a">setPositionAndOrientationWithConstraint</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;position, <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;orientation)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#b3ca600424074ccaf5ee078c8d3149c3">getPosition</a> (float &amp;x, float &amp;y, float &amp;z) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#c47c3b7fd6023734ba40249bea1fd253">getOrientation</a> (double &amp;q0, double &amp;q1, double &amp;q2, double &amp;q3) const </td></tr>

<tr><td colspan="2"><br><h2>Local translation and rotation w/r reference Frame</h2></td></tr>
<tr><td colspan="2"><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#e5495cd791858225ba7c85ce39329704">setTranslation</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;translation)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#eafb612e3ad0d6a81de91884eb4bdef1">setTranslation</a> (float x, float y, float z)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#7f3395d24d164a7af9a8b99e4e6bafc0">setTranslationWithConstraint</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;translation)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#857aacdb88a574ec4a363335f6152a1e">setRotation</a> (const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;rotation)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#26c462ecae655fa82c4d2efa42f9cd2e">setRotation</a> (double q0, double q1, double q2, double q3)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint</a> (<a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;rotation)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#0fbfd129a52b36b6753cc1589ff87a48">setTranslationAndRotation</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;translation, const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;rotation)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#3a08480e8de4a36536ff95e0f05303db">setTranslationAndRotationWithConstraint</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;translation, <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;rotation)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#388a5f38140104323aa51fc207fde642">translation</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#39804059e5c4e694a6cb13b71347da97">getTranslation</a> (float &amp;x, float &amp;y, float &amp;z) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#475a20f772ff87508b673a586fc50bbb">getRotation</a> (double &amp;q0, double &amp;q1, double &amp;q2, double &amp;q3) const </td></tr>

<tr><td colspan="2"><br><h2>Frame hierarchy</h2></td></tr>
<tr><td colspan="2"><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const Frame *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#bca9e0c2e40957fffeee4a52139facd8">setReferenceFrame</a> (const Frame *const refFrame)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a4891a91c825effc65b73f1329ae49c7">settingAsReferenceFrameWillCreateALoop</a> (const Frame *const frame)</td></tr>

<tr><td colspan="2"><br><h2>Frame modification</h2></td></tr>
<tr><td colspan="2"><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#4cb0cf5ff79e1acf0755befdaceb6f4a">translate</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;t)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#c774331eeae8d29acc94f5653b2f2c3b">translate</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;t)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#9081ed23141a5980f028b21d58fa3290">translate</a> (float x, float y, float z)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#2ae644799a164d7519769ba393565c5d">translate</a> (float &amp;x, float &amp;y, float &amp;z)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#38dffd6ee0ad7e395b49082b2b94de33">rotate</a> (<a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;q)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#c754417fa609300f980fcba5405c9989">rotate</a> (const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;q)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#7fe03bbf807b109c1edb849193d03aa8">rotate</a> (double q0, double q1, double q2, double q3)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#b15e32161293dce94ae3df3bc3a7b0ad">rotate</a> (double &amp;q0, double &amp;q1, double &amp;q2, double &amp;q3)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#85f48572c1298bc3192f111e8b587bca">rotateAroundPoint</a> (<a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;rotation, const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;point)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#5f87bae05096c99fb3b30cf5bb52c891">rotateAroundPoint</a> (const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;rotation, const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;point)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#352fc1d1f806653677eabcdb8a5eb898">alignWithFrame</a> (const Frame *const frame, bool move=false, float threshold=0.85f)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#f97ae9e790033879dfcb9837a7312255">projectOnLine</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;origin, const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;direction)</td></tr>

<tr><td colspan="2"><br><h2>Coordinate system transformation of 3D coordinates</h2></td></tr>
<tr><td colspan="2"><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#c706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#5bcb22a3f2e11e42e7469602b75b3c1e">inverseCoordinatesOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#2b113688a0cab6c439dfbf598fd45e70">localCoordinatesOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#4e6ac1c504a2f70fdbc0e7383c1aa7c7">localInverseCoordinatesOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#8c3c1e66b248a0f29e304e6c786b9391">coordinatesOfIn</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src, const Frame *const in) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#adad46a46365f6977e4aac6dc18318ce">coordinatesOfFrom</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src, const Frame *const from) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#3718dc9cc825c674c8da3576b1448764">getCoordinatesOf</a> (const float src[3], float res[3]) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ede4243bfe48e6d870a2417bbfc711a8">getInverseCoordinatesOf</a> (const float src[3], float res[3]) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#be456b2ee906b9def0d2ec0c949a9497">getLocalCoordinatesOf</a> (const float src[3], float res[3]) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#dbd3252d2089f077e23e78345b3723c2">getLocalInverseCoordinatesOf</a> (const float src[3], float res[3]) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#f2748e8dd6a4edad38d195132a8c8b30">getCoordinatesOfIn</a> (const float src[3], float res[3], const Frame *const in) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#36a2d7b27ab27bcff37ab9cbfab20a17">getCoordinatesOfFrom</a> (const float src[3], float res[3], const Frame *const from) const </td></tr>

<tr><td colspan="2"><br><h2>Coordinate system transformation of vectors</h2></td></tr>
<tr><td colspan="2"><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#05a3e18419f02427366a95b1e299f12e">transformOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ba2c6c46c1825a81f09d22322b03d9b5">inverseTransformOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#37239448835f46771b9598a31b964cf2">localTransformOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#d36cf320ff7cf6c8f9a2ac527c924f9e">localInverseTransformOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#01636f93c09d6fd9fca90cb671afdda0">transformOfIn</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src, const Frame *const in) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#3416ca5a53c1f2d932fca1906ec1c6c7">transformOfFrom</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src, const Frame *const from) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ac70b883f8e3635d88356cb08b1abae3">getTransformOf</a> (const float src[3], float res[3]) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#6a2eb1467ca31f7db460a2d6b7166a07">getInverseTransformOf</a> (const float src[3], float res[3]) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#6e4aeb1d5aafee31442cc3c82a6ee215">getLocalTransformOf</a> (const float src[3], float res[3]) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#62b201feca5e0ebecc03a71b9566d97c">getLocalInverseTransformOf</a> (const float src[3], float res[3]) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#7d36c3c2d4b004b3e5d296aa58541f9f">getTransformOfIn</a> (const float src[3], float res[3], const Frame *const in) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#4eed4b2770a62e5ebb32d3dcee642c52">getTransformOfFrom</a> (const float src[3], float res[3], const Frame *const from) const </td></tr>

<tr><td colspan="2"><br><h2>Constraint on the displacement</h2></td></tr>
<tr><td colspan="2"><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#dffa44cd173714b29f2441848a39c224">setConstraint</a> (<a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a> *const constraint)</td></tr>

<tr><td colspan="2"><br><h2>Associated matrices</h2></td></tr>
<tr><td colspan="2"><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const GLdouble *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a12123cf45f68b9f7fe0526b70ab0047">matrix</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#4915640a54a6b48a99cbdd0cd42fec48">getMatrix</a> (GLdouble m[4][4]) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#15f0dc7596dc78437154302466ac3c0a">getMatrix</a> (GLdouble m[16]) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">const GLdouble *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#39aa0648db05006e2b2f22ac5d971141">worldMatrix</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix</a> (GLdouble m[4][4]) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#c808850371649942726dd474aba29ead">getWorldMatrix</a> (GLdouble m[16]) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#5408d08ab204157ec29f555b6813f9e4">setFromMatrix</a> (const GLdouble m[4][4])</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#0c4d51f142f43235e30198e7b8abc626">setFromMatrix</a> (const GLdouble m[16])</td></tr>

<tr><td colspan="2"><br><h2>Inversion of the transformation</h2></td></tr>
<tr><td colspan="2"><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">Frame&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#4534c3188c217feb8d21465d4cefd4ad">inverse</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">Frame&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#37d4da8cfd297273e7bb55538debaa3e">worldInverse</a> () const </td></tr>

<tr><td colspan="2"><br><h2>XML representation</h2></td></tr>
<tr><td colspan="2"><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual QDomElement&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#48e0e2dd26cd96418c8b889ceabe80f6">domElement</a> (const QString &amp;name, QDomDocument &amp;document) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#cd13d2ddeca530cb9f26ead47f7d25d3">initFromDOMElement</a> (const QDomElement &amp;element)</td></tr>

<tr><td colspan="2"><br><h2>Signals</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#b55c2a4f1732b90057fae4b6037399de">interpolated</a> ()</td></tr>

<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#b71e6ee46f0c2593266f9a62d9c5e029">Frame</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#e0c994a30d9a018000fe8ad66ff0a86d">~Frame</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#7864fb955cec11fe78c3b2bb81230516">Frame</a> (const Frame &amp;frame)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">Frame &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#eb0f5ceffbb62f990b89b200d6ce728c">operator=</a> (const Frame &amp;frame)</td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
The <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> class represents a coordinate system, defined by a position and an orientation. 
<p>
A <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is a 3D coordinate system, represented by a <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a> and an <a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation()</a>. The order of these transformations is important: the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is first translated <em>and</em> <em>then</em> rotated around the new translated origin.<p>
A <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is useful to define the position and orientation of a 3D rigid object, using its <a class="el" href="classqglviewer_1_1Frame.html#a12123cf45f68b9f7fe0526b70ab0047">matrix()</a> method, as shown below: <div class="fragment"><pre class="fragment">  <span class="comment">// Builds a Frame at position (0.5,0,0) and oriented such that its Y axis is along the (1,1,1)</span>
  <span class="comment">// direction. One could also have used setPosition() and setOrientation().</span>
  <a class="code" href="classqglviewer_1_1Frame.html#b71e6ee46f0c2593266f9a62d9c5e029">Frame</a> fr(Vec(0.5,0,0), Quaternion(Vec(0,1,0), Vec(1,1,1)));
  glPushMatrix();
  glMultMatrixd(fr.matrix());
  <span class="comment">// Draw your object here, in the local fr coordinate system.</span>
  glPopMatrix();
</pre></div><p>
Many functions are provided to transform a 3D point from one coordinate system (<a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>) to an other: see <a class="el" href="classqglviewer_1_1Frame.html#c706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a>, <a class="el" href="classqglviewer_1_1Frame.html#5bcb22a3f2e11e42e7469602b75b3c1e">inverseCoordinatesOf()</a>, <a class="el" href="classqglviewer_1_1Frame.html#8c3c1e66b248a0f29e304e6c786b9391">coordinatesOfIn()</a>, <a class="el" href="classqglviewer_1_1Frame.html#adad46a46365f6977e4aac6dc18318ce">coordinatesOfFrom()</a>...<p>
You may also want to transform a 3D vector (such as a normal), which corresponds to applying only the rotational part of the frame transformation: see <a class="el" href="classqglviewer_1_1Frame.html#05a3e18419f02427366a95b1e299f12e">transformOf()</a> and <a class="el" href="classqglviewer_1_1Frame.html#ba2c6c46c1825a81f09d22322b03d9b5">inverseTransformOf()</a>. See the <a href="../examples/frameTransform.html">frameTransform example</a> for an illustration.<p>
The <a class="el" href="classqglviewer_1_1Frame.html#388a5f38140104323aa51fc207fde642">translation()</a> and the <a class="el" href="classqglviewer_1_1Frame.html#19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> that are encapsulated in a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> can also be used to represent a <em>rigid</em> <em>transformation</em> of space. Such a transformation can also be interpreted as a change of coordinate system, and the coordinate system conversion functions actually allow you to use a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> as a rigid transformation. Use <a class="el" href="classqglviewer_1_1Frame.html#5bcb22a3f2e11e42e7469602b75b3c1e">inverseCoordinatesOf()</a> (resp. <a class="el" href="classqglviewer_1_1Frame.html#c706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a>) to apply the transformation (resp. its inverse). Note the inversion.<p>
<h3>Hierarchy of Frames</h3>
<p>
The position and the orientation of a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> are actually defined with respect to a <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>. The default <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> is the world coordinate system (represented by a <code>NULL</code> <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>). If you <a class="el" href="classqglviewer_1_1Frame.html#bca9e0c2e40957fffeee4a52139facd8">setReferenceFrame()</a> to a different <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>, you must then differentiate:<p>
<ul>
<li>the <em>local</em> <a class="el" href="classqglviewer_1_1Frame.html#388a5f38140104323aa51fc207fde642">translation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a>, defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>,</li>
</ul>
<ul>
<li>the <em>global</em> <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a> and <a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation()</a>, always defined with respect to the world coordinate system.</li>
</ul>
A <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is actually defined by its <a class="el" href="classqglviewer_1_1Frame.html#388a5f38140104323aa51fc207fde642">translation()</a> with respect to its <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>, and then by a <a class="el" href="classqglviewer_1_1Frame.html#19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> of the coordinate system around the new translated origin.<p>
This terminology for <em>local</em> (<a class="el" href="classqglviewer_1_1Frame.html#388a5f38140104323aa51fc207fde642">translation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a>) and <em>global</em> (<a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a> and <a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation()</a>) definitions is used in all the methods' names and should be sufficient to prevent ambiguities. These notions are obviously identical when the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> is <code>NULL</code>, i.e. when the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is defined in the world coordinate system (the one you are in at the beginning of the <a class="el" href="classQGLViewer.html#bc45d04e5f5ce1fbd68f920fcdb2d0e0">QGLViewer::draw()</a> method, see the <a href="../introduction.html">introduction page</a>).<p>
Frames can hence easily be organized in a tree hierarchy, which root is the world coordinate system. A loop in the hierarchy would result in an inconsistent (multiple) <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> definition. <a class="el" href="classqglviewer_1_1Frame.html#a4891a91c825effc65b73f1329ae49c7">settingAsReferenceFrameWillCreateALoop()</a> checks this and prevents <a class="el" href="classqglviewer_1_1Frame.html#bca9e0c2e40957fffeee4a52139facd8">setReferenceFrame()</a> from creating such a loop.<p>
This frame hierarchy is used in methods like <a class="el" href="classqglviewer_1_1Frame.html#8c3c1e66b248a0f29e304e6c786b9391">coordinatesOfIn()</a>, <a class="el" href="classqglviewer_1_1Frame.html#adad46a46365f6977e4aac6dc18318ce">coordinatesOfFrom()</a>... which allow coordinates (or vector) conversions from a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> to any other one (including the world coordinate system).<p>
However, one must note that this hierarchical representation is internal to the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> classes. When the Frames represent OpenGL coordinates system, one should map this hierarchical representation to the OpenGL GL_MODELVIEW matrix stack. See the <a class="el" href="classqglviewer_1_1Frame.html#a12123cf45f68b9f7fe0526b70ab0047">matrix()</a> documentation for details.<p>
<h3>Constraints</h3>
<p>
An interesting feature of Frames is that their displacements can be constrained. When a <a class="el" href="classqglviewer_1_1Constraint.html" title="An interface class for Frame constraints.">Constraint</a> is attached to a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>, it filters the input of <a class="el" href="classqglviewer_1_1Frame.html#4cb0cf5ff79e1acf0755befdaceb6f4a">translate()</a> and <a class="el" href="classqglviewer_1_1Frame.html#38dffd6ee0ad7e395b49082b2b94de33">rotate()</a>, and only the resulting filtered motion is applied to the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>. The default <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> is <code>NULL</code> resulting in no filtering. Use <a class="el" href="classqglviewer_1_1Frame.html#dffa44cd173714b29f2441848a39c224">setConstraint()</a> to attach a <a class="el" href="classqglviewer_1_1Constraint.html" title="An interface class for Frame constraints.">Constraint</a> to a frame.<p>
Constraints are especially usefull for the <a class="el" href="classqglviewer_1_1ManipulatedFrame.html" title="A ManipulatedFrame is a Frame that can be rotated and translated using the mouse...">ManipulatedFrame</a> instances, in order to forbid some mouse motions. See the <a href="../examples/constrainedFrame.html">constrainedFrame</a>, <a href="../examples/constrainedCamera.html">constrainedCamera</a> and <a href="../examples/luxo.html">luxo</a> examples for an illustration.<p>
Classical constraints are provided for convenience (see <a class="el" href="classqglviewer_1_1LocalConstraint.html" title="An AxisPlaneConstraint defined in the Frame local coordinate system.">LocalConstraint</a>, <a class="el" href="classqglviewer_1_1WorldConstraint.html" title="An AxisPlaneConstraint defined in the world coordinate system.">WorldConstraint</a> and <a class="el" href="classqglviewer_1_1CameraConstraint.html" title="An AxisPlaneConstraint defined in the camera coordinate system.">CameraConstraint</a>) and new constraints can very easily be implemented.<p>
<h3>Derived classes</h3>
<p>
The <a class="el" href="classqglviewer_1_1ManipulatedFrame.html" title="A ManipulatedFrame is a Frame that can be rotated and translated using the mouse...">ManipulatedFrame</a> class inherits <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> and implements a mouse motion convertion, so that a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> (and hence an object) can be manipulated in the scene with the mouse. <hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="b71e6ee46f0c2593266f9a62d9c5e029"></a><!-- doxytag: member="qglviewer::Frame::Frame" ref="b71e6ee46f0c2593266f9a62d9c5e029" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Frame           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Creates a default <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>.<p>
Its <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a> is (0,0,0) and it has an identity <a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation()</a> <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a>. The <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> and the <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> are <code>NULL</code>. 
</div>
</div><p>
<a class="anchor" name="e0c994a30d9a018000fe8ad66ff0a86d"></a><!-- doxytag: member="qglviewer::Frame::~Frame" ref="e0c994a30d9a018000fe8ad66ff0a86d" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual ~Frame           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Virtual destructor. Empty. 
</div>
</div><p>
<a class="anchor" name="7864fb955cec11fe78c3b2bb81230516"></a><!-- doxytag: member="qglviewer::Frame::Frame" ref="7864fb955cec11fe78c3b2bb81230516" args="(const Frame &amp;frame)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Frame           </td>
          <td>(</td>
          <td class="paramtype">const Frame &amp;&nbsp;</td>
          <td class="paramname"> <em>frame</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy constructor.<p>
The <a class="el" href="classqglviewer_1_1Frame.html#388a5f38140104323aa51fc207fde642">translation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> as well as <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> pointers are copied. 
</div>
</div><p>
<a class="anchor" name="2f649a1218291aa3776ce08d0a2879b1"></a><!-- doxytag: member="qglviewer::Frame::Frame" ref="2f649a1218291aa3776ce08d0a2879b1" args="(const Vec &amp;position, const Quaternion &amp;orientation)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Frame           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>position</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>orientation</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Creates a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> with a <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a> and an <a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation()</a>.<p>
See the <a class="el" href="classqglviewer_1_1Vec.html" title="The Vec class represents 3D positions and 3D vectors.">Vec</a> and <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a> documentations for convenient constructors and methods.<p>
The <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is defined in the world coordinate system (its <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> is <code>NULL</code>). It has a <code>NULL</code> associated <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>. 
</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="eb0f5ceffbb62f990b89b200d6ce728c"></a><!-- doxytag: member="qglviewer::Frame::operator=" ref="eb0f5ceffbb62f990b89b200d6ce728c" args="(const Frame &amp;frame)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Frame &amp; operator=           </td>
          <td>(</td>
          <td class="paramtype">const Frame &amp;&nbsp;</td>
          <td class="paramname"> <em>frame</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Equal operator.<p>
The <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> and <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> pointers are copied.<p>
<dl class="attention" compact><dt><b>Attention:</b></dt><dd>Signal and slot connections are not copied. </dd></dl>

</div>
</div><p>
<a class="anchor" name="b6722375e68e03d151762ebfc83c5459"></a><!-- doxytag: member="qglviewer::Frame::modified" ref="b6722375e68e03d151762ebfc83c5459" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void modified           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [signal]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This signal is emitted whenever the <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a> or the <a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is modified.<p>
Connect this signal to any object that must be notified: <div class="fragment"><pre class="fragment">    QObject::connect(myFrame, SIGNAL(<a class="code" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified</a>()), myObject, SLOT(update()));
</pre></div> Use the <a class="el" href="classQGLViewer.html#32d7a506084c50fd97a24f94d9ca4864">QGLViewer::QGLViewerPool()</a> to connect the signal to all the viewers.<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>If your <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is part of a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> hierarchy (see <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>), a modification of one of the parents of this <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> will <em>not</em> emit this signal. Use code like this to change this behavior (you can do this recursively for all the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> until the <code>NULL</code> world root frame is encountered): <div class="fragment"><pre class="fragment">    <span class="comment">// Emits the Frame modified() signal when its referenceFrame() is modified().</span>
    connect(myFrame-&gt;referenceFrame(), SIGNAL(<a class="code" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified</a>()), myFrame, SIGNAL(<a class="code" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified</a>()));
</pre></div></dd></dl>
<dl class="attention" compact><dt><b>Attention:</b></dt><dd>Connecting this signal to a QGLWidget::updateGL() slot (or a method that calls it) will prevent you from modifying the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> <em>inside</em> your <a class="el" href="classQGLViewer.html#bc45d04e5f5ce1fbd68f920fcdb2d0e0">QGLViewer::draw()</a> method as it would result in an infinite loop. However, <a class="el" href="classQGLViewer.html#bc45d04e5f5ce1fbd68f920fcdb2d0e0">QGLViewer::draw()</a> should not modify the scene.</dd></dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>For efficiency reasons, this signal is emitted even if the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is not actually modified, for instance with translate(Vec(0,0,0)) or setPosition(<a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a>). </dd></dl>

</div>
</div><p>
<a class="anchor" name="b55c2a4f1732b90057fae4b6037399de"></a><!-- doxytag: member="qglviewer::Frame::interpolated" ref="b55c2a4f1732b90057fae4b6037399de" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void interpolated           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [signal]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This signal is emitted when the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is interpolated by a <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html" title="A keyFrame Catmull-Rom Frame interpolator.">KeyFrameInterpolator</a>.<p>
See the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html" title="A keyFrame Catmull-Rom Frame interpolator.">KeyFrameInterpolator</a> documentation for details.<p>
If a <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html" title="A keyFrame Catmull-Rom Frame interpolator.">KeyFrameInterpolator</a> is used to successively interpolate several Frames in your scene, connect the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#b55c2a4f1732b90057fae4b6037399de">KeyFrameInterpolator::interpolated()</a> signal instead (identical, but independent of the interpolated <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>). 
</div>
</div><p>
<a class="anchor" name="24f5da9b3f4bf4e71dfad7a74a932e52"></a><!-- doxytag: member="qglviewer::Frame::setPosition" ref="24f5da9b3f4bf4e71dfad7a74a932e52" args="(const Vec &amp;position)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setPosition           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>position</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>, defined in the world coordinate system. Emits the <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal.<p>
Use <a class="el" href="classqglviewer_1_1Frame.html#e5495cd791858225ba7c85ce39329704">setTranslation()</a> to define the <em>local</em> frame translation (with respect to the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>). The potential <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is not taken into account, use <a class="el" href="classqglviewer_1_1Frame.html#5081403cb47f1324edae5278d5438a38">setPositionWithConstraint()</a> instead. 
</div>
</div><p>
<a class="anchor" name="ff7308b903966afc6c87b5cd766a9083"></a><!-- doxytag: member="qglviewer::Frame::setPosition" ref="ff7308b903966afc6c87b5cd766a9083" args="(float x, float y, float z)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setPosition           </td>
          <td>(</td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#24f5da9b3f4bf4e71dfad7a74a932e52">setPosition()</a>, but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="5081403cb47f1324edae5278d5438a38"></a><!-- doxytag: member="qglviewer::Frame::setPositionWithConstraint" ref="5081403cb47f1324edae5278d5438a38" args="(Vec &amp;position)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setPositionWithConstraint           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>position</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#24f5da9b3f4bf4e71dfad7a74a932e52">setPosition()</a>, but <code>position</code> is modified so that the potential <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is satisfied. See also <a class="el" href="classqglviewer_1_1Frame.html#8b69106a268d78daf27d32854d455da4">setOrientationWithConstraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#7f3395d24d164a7af9a8b99e4e6bafc0">setTranslationWithConstraint()</a>. 
</div>
</div><p>
<a class="anchor" name="6733704520780505759efdef38a68b8b"></a><!-- doxytag: member="qglviewer::Frame::setOrientation" ref="6733704520780505759efdef38a68b8b" args="(const Quaternion &amp;orientation)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setOrientation           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>orientation</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the <a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>, defined in the world coordinate system. Emits the <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal.<p>
Use <a class="el" href="classqglviewer_1_1Frame.html#857aacdb88a574ec4a363335f6152a1e">setRotation()</a> to define the <em>local</em> frame rotation (with respect to the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>). The potential <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is not taken into account, use <a class="el" href="classqglviewer_1_1Frame.html#8b69106a268d78daf27d32854d455da4">setOrientationWithConstraint()</a> instead. 
</div>
</div><p>
<a class="anchor" name="e3ac2bf6dcfe21252d40325789503ce6"></a><!-- doxytag: member="qglviewer::Frame::setOrientation" ref="e3ac2bf6dcfe21252d40325789503ce6" args="(double q0, double q1, double q2, double q3)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setOrientation           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>q0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>q1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>q2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>q3</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#6733704520780505759efdef38a68b8b">setOrientation()</a>, but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="8b69106a268d78daf27d32854d455da4"></a><!-- doxytag: member="qglviewer::Frame::setOrientationWithConstraint" ref="8b69106a268d78daf27d32854d455da4" args="(Quaternion &amp;orientation)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setOrientationWithConstraint           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>orientation</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#6733704520780505759efdef38a68b8b">setOrientation()</a>, but <code>orientation</code> is modified so that the potential <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is satisfied. See also <a class="el" href="classqglviewer_1_1Frame.html#5081403cb47f1324edae5278d5438a38">setPositionWithConstraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint()</a>. 
</div>
</div><p>
<a class="anchor" name="47912d16be51eb85d68d3dcb4a4fb087"></a><!-- doxytag: member="qglviewer::Frame::setPositionAndOrientation" ref="47912d16be51eb85d68d3dcb4a4fb087" args="(const Vec &amp;position, const Quaternion &amp;orientation)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setPositionAndOrientation           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>position</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>orientation</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as successive calls to <a class="el" href="classqglviewer_1_1Frame.html#24f5da9b3f4bf4e71dfad7a74a932e52">setPosition()</a> and then <a class="el" href="classqglviewer_1_1Frame.html#6733704520780505759efdef38a68b8b">setOrientation()</a>.<p>
Only one <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal is emitted, which is convenient if this signal is connected to a <a class="el" href="classQGLViewer.html#e12b7378efbffabc24a133ca1deb19ae">QGLViewer::updateGL()</a> slot. See also <a class="el" href="classqglviewer_1_1Frame.html#0fbfd129a52b36b6753cc1589ff87a48">setTranslationAndRotation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#8501c5582c1aa2a82a929ce36439ab3a">setPositionAndOrientationWithConstraint()</a>. 
</div>
</div><p>
<a class="anchor" name="8501c5582c1aa2a82a929ce36439ab3a"></a><!-- doxytag: member="qglviewer::Frame::setPositionAndOrientationWithConstraint" ref="8501c5582c1aa2a82a929ce36439ab3a" args="(Vec &amp;position, Quaternion &amp;orientation)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setPositionAndOrientationWithConstraint           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>position</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>orientation</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#47912d16be51eb85d68d3dcb4a4fb087">setPositionAndOrientation()</a> but <code>position</code> and <code>orientation</code> are modified to satisfy the constraint. Emits the <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal. 
</div>
</div><p>
<a class="anchor" name="bc38a05a597e07c9ff525122682adc50"></a><!-- doxytag: member="qglviewer::Frame::position" ref="bc38a05a597e07c9ff525122682adc50" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> position           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the position of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>, defined in the world coordinate system. See also <a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation()</a>, <a class="el" href="classqglviewer_1_1Frame.html#24f5da9b3f4bf4e71dfad7a74a932e52">setPosition()</a> and <a class="el" href="classqglviewer_1_1Frame.html#388a5f38140104323aa51fc207fde642">translation()</a>. 
</div>
</div><p>
<a class="anchor" name="691af39b54669fad8b4e73599de22094"></a><!-- doxytag: member="qglviewer::Frame::orientation" ref="691af39b54669fad8b4e73599de22094" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> orientation           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the orientation of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>, defined in the world coordinate system. See also <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a>, <a class="el" href="classqglviewer_1_1Frame.html#6733704520780505759efdef38a68b8b">setOrientation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a>. 
</div>
</div><p>
<a class="anchor" name="b3ca600424074ccaf5ee078c8d3149c3"></a><!-- doxytag: member="qglviewer::Frame::getPosition" ref="b3ca600424074ccaf5ee078c8d3149c3" args="(float &amp;x, float &amp;y, float &amp;z) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getPosition           </td>
          <td>(</td>
          <td class="paramtype">float &amp;&nbsp;</td>
          <td class="paramname"> <em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&nbsp;</td>
          <td class="paramname"> <em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&nbsp;</td>
          <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<code>x</code>, <code>y</code> and <code>z</code> are set to the <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>. 
</div>
</div><p>
<a class="anchor" name="c47c3b7fd6023734ba40249bea1fd253"></a><!-- doxytag: member="qglviewer::Frame::getOrientation" ref="c47c3b7fd6023734ba40249bea1fd253" args="(double &amp;q0, double &amp;q1, double &amp;q2, double &amp;q3) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getOrientation           </td>
          <td>(</td>
          <td class="paramtype">double &amp;&nbsp;</td>
          <td class="paramname"> <em>q0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&nbsp;</td>
          <td class="paramname"> <em>q1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&nbsp;</td>
          <td class="paramname"> <em>q2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&nbsp;</td>
          <td class="paramname"> <em>q3</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the current orientation of the frame (same as <a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation()</a>). Parameters are the orientation <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a> values. See also <a class="el" href="classqglviewer_1_1Frame.html#6733704520780505759efdef38a68b8b">setOrientation()</a>.<p>
The <code>q</code> are set to the <a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>.<p>
See <a class="el" href="classqglviewer_1_1Quaternion.html#81ba24ffd95778f3ca4e51b2b9922f45">Quaternion::Quaternion(double, double, double, double)</a> for details on <code>q</code>. 
</div>
</div><p>
<a class="anchor" name="e5495cd791858225ba7c85ce39329704"></a><!-- doxytag: member="qglviewer::Frame::setTranslation" ref="e5495cd791858225ba7c85ce39329704" args="(const Vec &amp;translation)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setTranslation           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>translation</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the <a class="el" href="classqglviewer_1_1Frame.html#388a5f38140104323aa51fc207fde642">translation()</a> of the frame, locally defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>. Emits the <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal.<p>
Use <a class="el" href="classqglviewer_1_1Frame.html#24f5da9b3f4bf4e71dfad7a74a932e52">setPosition()</a> to define the world coordinates <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a>. Use <a class="el" href="classqglviewer_1_1Frame.html#7f3395d24d164a7af9a8b99e4e6bafc0">setTranslationWithConstraint()</a> to take into account the potential <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>. 
</div>
</div><p>
<a class="anchor" name="eafb612e3ad0d6a81de91884eb4bdef1"></a><!-- doxytag: member="qglviewer::Frame::setTranslation" ref="eafb612e3ad0d6a81de91884eb4bdef1" args="(float x, float y, float z)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setTranslation           </td>
          <td>(</td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#e5495cd791858225ba7c85ce39329704">setTranslation()</a>, but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="7f3395d24d164a7af9a8b99e4e6bafc0"></a><!-- doxytag: member="qglviewer::Frame::setTranslationWithConstraint" ref="7f3395d24d164a7af9a8b99e4e6bafc0" args="(Vec &amp;translation)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setTranslationWithConstraint           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>translation</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#e5495cd791858225ba7c85ce39329704">setTranslation()</a>, but <code>translation</code> is modified so that the potential <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is satisfied.<p>
Emits the <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal. See also <a class="el" href="classqglviewer_1_1Frame.html#9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#5081403cb47f1324edae5278d5438a38">setPositionWithConstraint()</a>. 
</div>
</div><p>
<a class="anchor" name="857aacdb88a574ec4a363335f6152a1e"></a><!-- doxytag: member="qglviewer::Frame::setRotation" ref="857aacdb88a574ec4a363335f6152a1e" args="(const Quaternion &amp;rotation)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setRotation           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rotation</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the current rotation <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a>. See <a class="el" href="classqglviewer_1_1Frame.html#19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> and the different <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a> constructors. Emits the <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal. See also <a class="el" href="classqglviewer_1_1Frame.html#e5495cd791858225ba7c85ce39329704">setTranslation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint()</a>.<p>
Sets the <a class="el" href="classqglviewer_1_1Frame.html#19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>, locally defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>. Emits the <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal.<p>
Use <a class="el" href="classqglviewer_1_1Frame.html#6733704520780505759efdef38a68b8b">setOrientation()</a> to define the world coordinates <a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation()</a>. The potential <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is not taken into account, use <a class="el" href="classqglviewer_1_1Frame.html#9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint()</a> instead. 
</div>
</div><p>
<a class="anchor" name="26c462ecae655fa82c4d2efa42f9cd2e"></a><!-- doxytag: member="qglviewer::Frame::setRotation" ref="26c462ecae655fa82c4d2efa42f9cd2e" args="(double q0, double q1, double q2, double q3)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setRotation           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>q0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>q1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>q2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>q3</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#857aacdb88a574ec4a363335f6152a1e">setRotation()</a> but with <code>float</code> <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a> parameters. 
</div>
</div><p>
<a class="anchor" name="9d4ab1388820d002d44304c5463fbfbd"></a><!-- doxytag: member="qglviewer::Frame::setRotationWithConstraint" ref="9d4ab1388820d002d44304c5463fbfbd" args="(Quaternion &amp;rotation)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setRotationWithConstraint           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rotation</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#857aacdb88a574ec4a363335f6152a1e">setRotation()</a>, but <code>rotation</code> is modified so that the potential <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is satisfied.<p>
Emits the <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal. See also <a class="el" href="classqglviewer_1_1Frame.html#7f3395d24d164a7af9a8b99e4e6bafc0">setTranslationWithConstraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#8b69106a268d78daf27d32854d455da4">setOrientationWithConstraint()</a>. 
</div>
</div><p>
<a class="anchor" name="0fbfd129a52b36b6753cc1589ff87a48"></a><!-- doxytag: member="qglviewer::Frame::setTranslationAndRotation" ref="0fbfd129a52b36b6753cc1589ff87a48" args="(const Vec &amp;translation, const Quaternion &amp;rotation)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setTranslationAndRotation           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>translation</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rotation</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as successive calls to <a class="el" href="classqglviewer_1_1Frame.html#e5495cd791858225ba7c85ce39329704">setTranslation()</a> and then <a class="el" href="classqglviewer_1_1Frame.html#857aacdb88a574ec4a363335f6152a1e">setRotation()</a>.<p>
Only one <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal is emitted, which is convenient if this signal is connected to a <a class="el" href="classQGLViewer.html#e12b7378efbffabc24a133ca1deb19ae">QGLViewer::updateGL()</a> slot. See also <a class="el" href="classqglviewer_1_1Frame.html#47912d16be51eb85d68d3dcb4a4fb087">setPositionAndOrientation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#3a08480e8de4a36536ff95e0f05303db">setTranslationAndRotationWithConstraint()</a>. 
</div>
</div><p>
<a class="anchor" name="3a08480e8de4a36536ff95e0f05303db"></a><!-- doxytag: member="qglviewer::Frame::setTranslationAndRotationWithConstraint" ref="3a08480e8de4a36536ff95e0f05303db" args="(Vec &amp;translation, Quaternion &amp;rotation)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setTranslationAndRotationWithConstraint           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>translation</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rotation</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#0fbfd129a52b36b6753cc1589ff87a48">setTranslationAndRotation()</a>, but <code>translation</code> and <code>orientation</code> are modified to satisfy the <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>. Emits the <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal. 
</div>
</div><p>
<a class="anchor" name="388a5f38140104323aa51fc207fde642"></a><!-- doxytag: member="qglviewer::Frame::translation" ref="388a5f38140104323aa51fc207fde642" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> translation           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> translation, defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>.<p>
Use <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a> to get the result in the world coordinates. These two values are identical when the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> is <code>NULL</code> (default).<p>
See also <a class="el" href="classqglviewer_1_1Frame.html#e5495cd791858225ba7c85ce39329704">setTranslation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#7f3395d24d164a7af9a8b99e4e6bafc0">setTranslationWithConstraint()</a>. 
</div>
</div><p>
<a class="anchor" name="19ee9243c60f412dfc4eac3dcf45a5a1"></a><!-- doxytag: member="qglviewer::Frame::rotation" ref="19ee9243c60f412dfc4eac3dcf45a5a1" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> rotation           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> rotation, defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>.<p>
Use <a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation()</a> to get the result in the world coordinates. These two values are identical when the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> is <code>NULL</code> (default).<p>
See also <a class="el" href="classqglviewer_1_1Frame.html#857aacdb88a574ec4a363335f6152a1e">setRotation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint()</a>.<p>
Returns the current <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a> orientation. See <a class="el" href="classqglviewer_1_1Frame.html#857aacdb88a574ec4a363335f6152a1e">setRotation()</a>. 
</div>
</div><p>
<a class="anchor" name="39804059e5c4e694a6cb13b71347da97"></a><!-- doxytag: member="qglviewer::Frame::getTranslation" ref="39804059e5c4e694a6cb13b71347da97" args="(float &amp;x, float &amp;y, float &amp;z) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getTranslation           </td>
          <td>(</td>
          <td class="paramtype">float &amp;&nbsp;</td>
          <td class="paramname"> <em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&nbsp;</td>
          <td class="paramname"> <em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&nbsp;</td>
          <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Fill <code>x</code>, <code>y</code> and <code>z</code> with the <a class="el" href="classqglviewer_1_1Frame.html#388a5f38140104323aa51fc207fde642">translation()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>. 
</div>
</div><p>
<a class="anchor" name="475a20f772ff87508b673a586fc50bbb"></a><!-- doxytag: member="qglviewer::Frame::getRotation" ref="475a20f772ff87508b673a586fc50bbb" args="(double &amp;q0, double &amp;q1, double &amp;q2, double &amp;q3) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getRotation           </td>
          <td>(</td>
          <td class="paramtype">double &amp;&nbsp;</td>
          <td class="paramname"> <em>q0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&nbsp;</td>
          <td class="paramname"> <em>q1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&nbsp;</td>
          <td class="paramname"> <em>q2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&nbsp;</td>
          <td class="paramname"> <em>q3</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The <code>q</code> are set to the <a class="el" href="classqglviewer_1_1Frame.html#19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>.<p>
See <a class="el" href="classqglviewer_1_1Quaternion.html#81ba24ffd95778f3ca4e51b2b9922f45">Quaternion::Quaternion(double, double, double, double)</a> for details on <code>q</code>. 
</div>
</div><p>
<a class="anchor" name="9794b079db5f492e8804631d3d23baec"></a><!-- doxytag: member="qglviewer::Frame::referenceFrame" ref="9794b079db5f492e8804631d3d23baec" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const Frame* referenceFrame           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the reference <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>, in which coordinates system the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is defined.<p>
The <a class="el" href="classqglviewer_1_1Frame.html#388a5f38140104323aa51fc207fde642">translation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> are defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> coordinate system. A <code>NULL</code> <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> (default value) means that the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is defined in the world coordinate system.<p>
Use <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a> and <a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation()</a> to recursively convert values along the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> chain and to get values expressed in the world coordinate system. The values match when the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> is <code>NULL</code>.<p>
Use <a class="el" href="classqglviewer_1_1Frame.html#bca9e0c2e40957fffeee4a52139facd8">setReferenceFrame()</a> to set this value and create a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> hierarchy. Convenient functions allow you to convert 3D coordinates from one <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> to an other: see <a class="el" href="classqglviewer_1_1Frame.html#c706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a>, <a class="el" href="classqglviewer_1_1Frame.html#2b113688a0cab6c439dfbf598fd45e70">localCoordinatesOf()</a>, <a class="el" href="classqglviewer_1_1Frame.html#8c3c1e66b248a0f29e304e6c786b9391">coordinatesOfIn()</a> and their inverse functions.<p>
Vectors can also be converted using <a class="el" href="classqglviewer_1_1Frame.html#05a3e18419f02427366a95b1e299f12e">transformOf()</a>, transformOfIn, <a class="el" href="classqglviewer_1_1Frame.html#37239448835f46771b9598a31b964cf2">localTransformOf()</a> and their inverse functions. 
</div>
</div><p>
<a class="anchor" name="bca9e0c2e40957fffeee4a52139facd8"></a><!-- doxytag: member="qglviewer::Frame::setReferenceFrame" ref="bca9e0c2e40957fffeee4a52139facd8" args="(const Frame *const refFrame)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setReferenceFrame           </td>
          <td>(</td>
          <td class="paramtype">const Frame *const &nbsp;</td>
          <td class="paramname"> <em>refFrame</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>.<p>
The <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> <a class="el" href="classqglviewer_1_1Frame.html#388a5f38140104323aa51fc207fde642">translation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> are then defined in the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> coordinate system. Use <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a> and <a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation()</a> to express these in the world coordinate system.<p>
Emits the <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal if <code>refFrame</code> differs from the current <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>.<p>
Using this method, you can create a hierarchy of Frames. This hierarchy needs to be a tree, which root is the world coordinate system (i.e. a <code>NULL</code> <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>). A warning is printed and no action is performed if setting <code>refFrame</code> as the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> would create a loop in the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> hierarchy (see <a class="el" href="classqglviewer_1_1Frame.html#a4891a91c825effc65b73f1329ae49c7">settingAsReferenceFrameWillCreateALoop()</a>). 
</div>
</div><p>
<a class="anchor" name="a4891a91c825effc65b73f1329ae49c7"></a><!-- doxytag: member="qglviewer::Frame::settingAsReferenceFrameWillCreateALoop" ref="a4891a91c825effc65b73f1329ae49c7" args="(const Frame *const frame)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool settingAsReferenceFrameWillCreateALoop           </td>
          <td>(</td>
          <td class="paramtype">const Frame *const &nbsp;</td>
          <td class="paramname"> <em>frame</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns <code>true</code> if setting <code>frame</code> as the Frame's <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> would create a loop in the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> hierarchy. 
</div>
</div><p>
<a class="anchor" name="4cb0cf5ff79e1acf0755befdaceb6f4a"></a><!-- doxytag: member="qglviewer::Frame::translate" ref="4cb0cf5ff79e1acf0755befdaceb6f4a" args="(Vec &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void translate           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#c774331eeae8d29acc94f5653b2f2c3b">translate(const Vec&amp;)</a> but <code>t</code> may be modified to satisfy the translation <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>. Its new value corresponds to the translation that has actually been applied to the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>. 
</div>
</div><p>
<a class="anchor" name="c774331eeae8d29acc94f5653b2f2c3b"></a><!-- doxytag: member="qglviewer::Frame::translate" ref="c774331eeae8d29acc94f5653b2f2c3b" args="(const Vec &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void translate           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Translates the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> of <code>t</code> (defined in the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinate system).<p>
The translation actually applied to the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> may differ from <code>t</code> since it can be filtered by the <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>. Use <a class="el" href="classqglviewer_1_1Frame.html#4cb0cf5ff79e1acf0755befdaceb6f4a">translate(Vec&amp;)</a> or <a class="el" href="classqglviewer_1_1Frame.html#7f3395d24d164a7af9a8b99e4e6bafc0">setTranslationWithConstraint()</a> to retrieve the filtered translation value. Use <a class="el" href="classqglviewer_1_1Frame.html#e5495cd791858225ba7c85ce39329704">setTranslation()</a> to directly translate the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> without taking the <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> into account.<p>
See also <a class="el" href="classqglviewer_1_1Frame.html#c754417fa609300f980fcba5405c9989">rotate(const Quaternion&amp;)</a>. Emits the <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal. 
</div>
</div><p>
<a class="anchor" name="9081ed23141a5980f028b21d58fa3290"></a><!-- doxytag: member="qglviewer::Frame::translate" ref="9081ed23141a5980f028b21d58fa3290" args="(float x, float y, float z)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void translate           </td>
          <td>(</td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#c774331eeae8d29acc94f5653b2f2c3b">translate(const Vec&amp;)</a> but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="2ae644799a164d7519769ba393565c5d"></a><!-- doxytag: member="qglviewer::Frame::translate" ref="2ae644799a164d7519769ba393565c5d" args="(float &amp;x, float &amp;y, float &amp;z)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void translate           </td>
          <td>(</td>
          <td class="paramtype">float &amp;&nbsp;</td>
          <td class="paramname"> <em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&nbsp;</td>
          <td class="paramname"> <em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&nbsp;</td>
          <td class="paramname"> <em>z</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#4cb0cf5ff79e1acf0755befdaceb6f4a">translate(Vec&amp;)</a> but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="38dffd6ee0ad7e395b49082b2b94de33"></a><!-- doxytag: member="qglviewer::Frame::rotate" ref="38dffd6ee0ad7e395b49082b2b94de33" args="(Quaternion &amp;q)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void rotate           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>q</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#c754417fa609300f980fcba5405c9989">rotate(const Quaternion&amp;)</a> but <code>q</code> may be modified to satisfy the rotation <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>. Its new value corresponds to the rotation that has actually been applied to the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>. 
</div>
</div><p>
<a class="anchor" name="c754417fa609300f980fcba5405c9989"></a><!-- doxytag: member="qglviewer::Frame::rotate" ref="c754417fa609300f980fcba5405c9989" args="(const Quaternion &amp;q)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void rotate           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>q</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Rotates the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> by <code>q</code> (defined in the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinate system): R = R*q.<p>
The rotation actually applied to the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> may differ from <code>q</code> since it can be filtered by the <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>. Use <a class="el" href="classqglviewer_1_1Frame.html#38dffd6ee0ad7e395b49082b2b94de33">rotate(Quaternion&amp;)</a> or <a class="el" href="classqglviewer_1_1Frame.html#9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint()</a> to retrieve the filtered rotation value. Use <a class="el" href="classqglviewer_1_1Frame.html#857aacdb88a574ec4a363335f6152a1e">setRotation()</a> to directly rotate the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> without taking the <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> into account.<p>
See also <a class="el" href="classqglviewer_1_1Frame.html#c774331eeae8d29acc94f5653b2f2c3b">translate(const Vec&amp;)</a>. Emits the <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal. 
</div>
</div><p>
<a class="anchor" name="7fe03bbf807b109c1edb849193d03aa8"></a><!-- doxytag: member="qglviewer::Frame::rotate" ref="7fe03bbf807b109c1edb849193d03aa8" args="(double q0, double q1, double q2, double q3)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void rotate           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>q0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>q1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>q2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>q3</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#c754417fa609300f980fcba5405c9989">rotate(const Quaternion&amp;)</a> but with <code>float</code> <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a> parameters. 
</div>
</div><p>
<a class="anchor" name="b15e32161293dce94ae3df3bc3a7b0ad"></a><!-- doxytag: member="qglviewer::Frame::rotate" ref="b15e32161293dce94ae3df3bc3a7b0ad" args="(double &amp;q0, double &amp;q1, double &amp;q2, double &amp;q3)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void rotate           </td>
          <td>(</td>
          <td class="paramtype">double &amp;&nbsp;</td>
          <td class="paramname"> <em>q0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&nbsp;</td>
          <td class="paramname"> <em>q1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&nbsp;</td>
          <td class="paramname"> <em>q2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&nbsp;</td>
          <td class="paramname"> <em>q3</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#38dffd6ee0ad7e395b49082b2b94de33">rotate(Quaternion&amp;)</a> but with <code>float</code> <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a> parameters. 
</div>
</div><p>
<a class="anchor" name="85f48572c1298bc3192f111e8b587bca"></a><!-- doxytag: member="qglviewer::Frame::rotateAroundPoint" ref="85f48572c1298bc3192f111e8b587bca" args="(Quaternion &amp;rotation, const Vec &amp;point)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void rotateAroundPoint           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rotation</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>point</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Makes the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> <a class="el" href="classqglviewer_1_1Frame.html#38dffd6ee0ad7e395b49082b2b94de33">rotate()</a> by <code>rotation</code> around <code>point</code>.<p>
<code>point</code> is defined in the world coordinate system, while the <code>rotation</code> axis is defined in the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinate system.<p>
If the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> has a <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>, <code>rotation</code> is first constrained using <a class="el" href="classqglviewer_1_1Constraint.html#5de5f38e75b58476b7926171dba4b31b">Constraint::constrainRotation()</a>. The translation which results from the filtered rotation around <code>point</code> is then computed and filtered using <a class="el" href="classqglviewer_1_1Constraint.html#b7d724965c6765209f47c1abe7f7b7b4">Constraint::constrainTranslation()</a>. The new <code>rotation</code> value corresponds to the rotation that has actually been applied to the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>.<p>
Emits the <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal. 
</div>
</div><p>
<a class="anchor" name="5f87bae05096c99fb3b30cf5bb52c891"></a><!-- doxytag: member="qglviewer::Frame::rotateAroundPoint" ref="5f87bae05096c99fb3b30cf5bb52c891" args="(const Quaternion &amp;rotation, const Vec &amp;point)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void rotateAroundPoint           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rotation</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>point</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#85f48572c1298bc3192f111e8b587bca">rotateAroundPoint()</a>, but with a <code>const</code> <code>rotation</code> <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a>. Note that the actual rotation may differ since it can be filtered by the <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>. 
</div>
</div><p>
<a class="anchor" name="352fc1d1f806653677eabcdb8a5eb898"></a><!-- doxytag: member="qglviewer::Frame::alignWithFrame" ref="352fc1d1f806653677eabcdb8a5eb898" args="(const Frame *const frame, bool move=false, float threshold=0.85f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void alignWithFrame           </td>
          <td>(</td>
          <td class="paramtype">const Frame *const &nbsp;</td>
          <td class="paramname"> <em>frame</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>move</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>threshold</em> = <code>0.85f</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Aligns the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> with <code>frame</code>, so that two of their axis are parallel.<p>
If one of the X, Y and Z axis of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is almost parallel to any of the X, Y, or Z axis of <code>frame</code>, the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is rotated so that these two axis actually become parallel.<p>
If, after this first rotation, two other axis are also almost parallel, a second alignment is performed. The two frames then have identical orientations, up to 90 degrees rotations.<p>
<code>threshold</code> measures how close two axis must be to be considered parallel. It is compared with the absolute values of the dot product of the normalized axis.<p>
When <code>move</code> is set to <code>true</code>, the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a> is also affected by the alignment. The new <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a> is such that the <code>frame</code> position (computed with <a class="el" href="classqglviewer_1_1Frame.html#c706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a>, in the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinates system) does not change.<p>
<code>frame</code> may be <code>NULL</code> and then represents the world coordinate system (same convention than for the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>).<p>
The rotation (and translation when <code>move</code> is <code>true</code>) applied to the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> are filtered by the possible <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>. 
</div>
</div><p>
<a class="anchor" name="f97ae9e790033879dfcb9837a7312255"></a><!-- doxytag: member="qglviewer::Frame::projectOnLine" ref="f97ae9e790033879dfcb9837a7312255" args="(const Vec &amp;origin, const Vec &amp;direction)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void projectOnLine           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>origin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>direction</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Translates the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> so that its <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a> lies on the line defined by <code>origin</code> and <code>direction</code> (defined in the world coordinate system).<p>
Simply uses an orthogonal projection. <code>direction</code> does not need to be normalized. 
</div>
</div><p>
<a class="anchor" name="c706b338b08d9d7b511fd84d0b6ecf96"></a><!-- doxytag: member="qglviewer::Frame::coordinatesOf" ref="c706b338b08d9d7b511fd84d0b6ecf96" args="(const Vec &amp;src) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> coordinatesOf           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>src</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinates of a point <code>src</code> defined in the world coordinate system (converts from world to <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>).<p>
<a class="el" href="classqglviewer_1_1Frame.html#5bcb22a3f2e11e42e7469602b75b3c1e">inverseCoordinatesOf()</a> performs the inverse convertion. <a class="el" href="classqglviewer_1_1Frame.html#05a3e18419f02427366a95b1e299f12e">transformOf()</a> converts 3D vectors instead of 3D coordinates.<p>
See the <a href="../examples/frameTransform.html">frameTransform example</a> for an illustration. 
</div>
</div><p>
<a class="anchor" name="5bcb22a3f2e11e42e7469602b75b3c1e"></a><!-- doxytag: member="qglviewer::Frame::inverseCoordinatesOf" ref="5bcb22a3f2e11e42e7469602b75b3c1e" args="(const Vec &amp;src) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> inverseCoordinatesOf           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>src</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the world coordinates of the point whose position in the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinate system is <code>src</code> (converts from <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> to world).<p>
<a class="el" href="classqglviewer_1_1Frame.html#c706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a> performs the inverse convertion. Use <a class="el" href="classqglviewer_1_1Frame.html#ba2c6c46c1825a81f09d22322b03d9b5">inverseTransformOf()</a> to transform 3D vectors instead of 3D coordinates. 
</div>
</div><p>
<a class="anchor" name="2b113688a0cab6c439dfbf598fd45e70"></a><!-- doxytag: member="qglviewer::Frame::localCoordinatesOf" ref="2b113688a0cab6c439dfbf598fd45e70" args="(const Vec &amp;src) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> localCoordinatesOf           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>src</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinates of a point <code>src</code> defined in the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> coordinate system (converts from <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> to <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>).<p>
<a class="el" href="classqglviewer_1_1Frame.html#4e6ac1c504a2f70fdbc0e7383c1aa7c7">localInverseCoordinatesOf()</a> performs the inverse convertion. See also <a class="el" href="classqglviewer_1_1Frame.html#37239448835f46771b9598a31b964cf2">localTransformOf()</a>. 
</div>
</div><p>
<a class="anchor" name="4e6ac1c504a2f70fdbc0e7383c1aa7c7"></a><!-- doxytag: member="qglviewer::Frame::localInverseCoordinatesOf" ref="4e6ac1c504a2f70fdbc0e7383c1aa7c7" args="(const Vec &amp;src) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> localInverseCoordinatesOf           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>src</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> coordinates of a point <code>src</code> defined in the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinate system (converts from <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> to <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>).<p>
<a class="el" href="classqglviewer_1_1Frame.html#2b113688a0cab6c439dfbf598fd45e70">localCoordinatesOf()</a> performs the inverse convertion. See also <a class="el" href="classqglviewer_1_1Frame.html#d36cf320ff7cf6c8f9a2ac527c924f9e">localInverseTransformOf()</a>. 
</div>
</div><p>
<a class="anchor" name="8c3c1e66b248a0f29e304e6c786b9391"></a><!-- doxytag: member="qglviewer::Frame::coordinatesOfIn" ref="8c3c1e66b248a0f29e304e6c786b9391" args="(const Vec &amp;src, const Frame *const in) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> coordinatesOfIn           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Frame *const &nbsp;</td>
          <td class="paramname"> <em>in</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the <code>in</code> coordinates of the point whose position in the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinate system is <code>src</code> (converts from <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> to <code>in</code>).<p>
<a class="el" href="classqglviewer_1_1Frame.html#adad46a46365f6977e4aac6dc18318ce">coordinatesOfFrom()</a> performs the inverse transformation. 
</div>
</div><p>
<a class="anchor" name="adad46a46365f6977e4aac6dc18318ce"></a><!-- doxytag: member="qglviewer::Frame::coordinatesOfFrom" ref="adad46a46365f6977e4aac6dc18318ce" args="(const Vec &amp;src, const Frame *const from) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> coordinatesOfFrom           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Frame *const &nbsp;</td>
          <td class="paramname"> <em>from</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinates of the point whose position in the <code>from</code> coordinate system is <code>src</code> (converts from <code>from</code> to <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>).<p>
<a class="el" href="classqglviewer_1_1Frame.html#8c3c1e66b248a0f29e304e6c786b9391">coordinatesOfIn()</a> performs the inverse transformation. 
</div>
</div><p>
<a class="anchor" name="3718dc9cc825c674c8da3576b1448764"></a><!-- doxytag: member="qglviewer::Frame::getCoordinatesOf" ref="3718dc9cc825c674c8da3576b1448764" args="(const float src[3], float res[3]) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getCoordinatesOf           </td>
          <td>(</td>
          <td class="paramtype">const float&nbsp;</td>
          <td class="paramname"> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>res</em>[3]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#c706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a>, but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="ede4243bfe48e6d870a2417bbfc711a8"></a><!-- doxytag: member="qglviewer::Frame::getInverseCoordinatesOf" ref="ede4243bfe48e6d870a2417bbfc711a8" args="(const float src[3], float res[3]) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getInverseCoordinatesOf           </td>
          <td>(</td>
          <td class="paramtype">const float&nbsp;</td>
          <td class="paramname"> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>res</em>[3]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#5bcb22a3f2e11e42e7469602b75b3c1e">inverseCoordinatesOf()</a>, but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="be456b2ee906b9def0d2ec0c949a9497"></a><!-- doxytag: member="qglviewer::Frame::getLocalCoordinatesOf" ref="be456b2ee906b9def0d2ec0c949a9497" args="(const float src[3], float res[3]) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getLocalCoordinatesOf           </td>
          <td>(</td>
          <td class="paramtype">const float&nbsp;</td>
          <td class="paramname"> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>res</em>[3]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#2b113688a0cab6c439dfbf598fd45e70">localCoordinatesOf()</a>, but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="dbd3252d2089f077e23e78345b3723c2"></a><!-- doxytag: member="qglviewer::Frame::getLocalInverseCoordinatesOf" ref="dbd3252d2089f077e23e78345b3723c2" args="(const float src[3], float res[3]) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getLocalInverseCoordinatesOf           </td>
          <td>(</td>
          <td class="paramtype">const float&nbsp;</td>
          <td class="paramname"> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>res</em>[3]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#4e6ac1c504a2f70fdbc0e7383c1aa7c7">localInverseCoordinatesOf()</a>, but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="f2748e8dd6a4edad38d195132a8c8b30"></a><!-- doxytag: member="qglviewer::Frame::getCoordinatesOfIn" ref="f2748e8dd6a4edad38d195132a8c8b30" args="(const float src[3], float res[3], const Frame *const in) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getCoordinatesOfIn           </td>
          <td>(</td>
          <td class="paramtype">const float&nbsp;</td>
          <td class="paramname"> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>res</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Frame *const &nbsp;</td>
          <td class="paramname"> <em>in</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#8c3c1e66b248a0f29e304e6c786b9391">coordinatesOfIn()</a>, but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="36a2d7b27ab27bcff37ab9cbfab20a17"></a><!-- doxytag: member="qglviewer::Frame::getCoordinatesOfFrom" ref="36a2d7b27ab27bcff37ab9cbfab20a17" args="(const float src[3], float res[3], const Frame *const from) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getCoordinatesOfFrom           </td>
          <td>(</td>
          <td class="paramtype">const float&nbsp;</td>
          <td class="paramname"> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>res</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Frame *const &nbsp;</td>
          <td class="paramname"> <em>from</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#adad46a46365f6977e4aac6dc18318ce">coordinatesOfFrom()</a>, but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="05a3e18419f02427366a95b1e299f12e"></a><!-- doxytag: member="qglviewer::Frame::transformOf" ref="05a3e18419f02427366a95b1e299f12e" args="(const Vec &amp;src) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> transformOf           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>src</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> transform of a vector <code>src</code> defined in the world coordinate system (converts vectors from world to <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>).<p>
<a class="el" href="classqglviewer_1_1Frame.html#ba2c6c46c1825a81f09d22322b03d9b5">inverseTransformOf()</a> performs the inverse transformation. <a class="el" href="classqglviewer_1_1Frame.html#c706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a> converts 3D coordinates instead of 3D vectors (here only the rotational part of the transformation is taken into account).<p>
See the <a href="../examples/frameTransform.html">frameTransform example</a> for an illustration. 
</div>
</div><p>
<a class="anchor" name="ba2c6c46c1825a81f09d22322b03d9b5"></a><!-- doxytag: member="qglviewer::Frame::inverseTransformOf" ref="ba2c6c46c1825a81f09d22322b03d9b5" args="(const Vec &amp;src) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> inverseTransformOf           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>src</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the world transform of the vector whose coordinates in the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinate system is <code>src</code> (converts vectors from <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> to world).<p>
<a class="el" href="classqglviewer_1_1Frame.html#05a3e18419f02427366a95b1e299f12e">transformOf()</a> performs the inverse transformation. Use <a class="el" href="classqglviewer_1_1Frame.html#5bcb22a3f2e11e42e7469602b75b3c1e">inverseCoordinatesOf()</a> to transform 3D coordinates instead of 3D vectors. 
</div>
</div><p>
<a class="anchor" name="37239448835f46771b9598a31b964cf2"></a><!-- doxytag: member="qglviewer::Frame::localTransformOf" ref="37239448835f46771b9598a31b964cf2" args="(const Vec &amp;src) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> localTransformOf           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>src</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> transform of a vector <code>src</code> defined in the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> coordinate system (converts vectors from <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> to <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>).<p>
<a class="el" href="classqglviewer_1_1Frame.html#d36cf320ff7cf6c8f9a2ac527c924f9e">localInverseTransformOf()</a> performs the inverse transformation. See also <a class="el" href="classqglviewer_1_1Frame.html#2b113688a0cab6c439dfbf598fd45e70">localCoordinatesOf()</a>. 
</div>
</div><p>
<a class="anchor" name="d36cf320ff7cf6c8f9a2ac527c924f9e"></a><!-- doxytag: member="qglviewer::Frame::localInverseTransformOf" ref="d36cf320ff7cf6c8f9a2ac527c924f9e" args="(const Vec &amp;src) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> localInverseTransformOf           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>src</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> transform of a vector <code>src</code> defined in the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinate system (converts vectors from <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> to <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>).<p>
<a class="el" href="classqglviewer_1_1Frame.html#37239448835f46771b9598a31b964cf2">localTransformOf()</a> performs the inverse transformation. See also <a class="el" href="classqglviewer_1_1Frame.html#4e6ac1c504a2f70fdbc0e7383c1aa7c7">localInverseCoordinatesOf()</a>. 
</div>
</div><p>
<a class="anchor" name="01636f93c09d6fd9fca90cb671afdda0"></a><!-- doxytag: member="qglviewer::Frame::transformOfIn" ref="01636f93c09d6fd9fca90cb671afdda0" args="(const Vec &amp;src, const Frame *const in) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> transformOfIn           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Frame *const &nbsp;</td>
          <td class="paramname"> <em>in</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the <code>in</code> transform of the vector whose coordinates in the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinate system is <code>src</code> (converts vectors from <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> to <code>in</code>).<p>
<a class="el" href="classqglviewer_1_1Frame.html#3416ca5a53c1f2d932fca1906ec1c6c7">transformOfFrom()</a> performs the inverse transformation. 
</div>
</div><p>
<a class="anchor" name="3416ca5a53c1f2d932fca1906ec1c6c7"></a><!-- doxytag: member="qglviewer::Frame::transformOfFrom" ref="3416ca5a53c1f2d932fca1906ec1c6c7" args="(const Vec &amp;src, const Frame *const from) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> transformOfFrom           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Frame *const &nbsp;</td>
          <td class="paramname"> <em>from</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> transform of the vector whose coordinates in the <code>from</code> coordinate system is <code>src</code> (converts vectors from <code>from</code> to <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>).<p>
<a class="el" href="classqglviewer_1_1Frame.html#01636f93c09d6fd9fca90cb671afdda0">transformOfIn()</a> performs the inverse transformation. 
</div>
</div><p>
<a class="anchor" name="ac70b883f8e3635d88356cb08b1abae3"></a><!-- doxytag: member="qglviewer::Frame::getTransformOf" ref="ac70b883f8e3635d88356cb08b1abae3" args="(const float src[3], float res[3]) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getTransformOf           </td>
          <td>(</td>
          <td class="paramtype">const float&nbsp;</td>
          <td class="paramname"> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>res</em>[3]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#05a3e18419f02427366a95b1e299f12e">transformOf()</a>, but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="6a2eb1467ca31f7db460a2d6b7166a07"></a><!-- doxytag: member="qglviewer::Frame::getInverseTransformOf" ref="6a2eb1467ca31f7db460a2d6b7166a07" args="(const float src[3], float res[3]) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getInverseTransformOf           </td>
          <td>(</td>
          <td class="paramtype">const float&nbsp;</td>
          <td class="paramname"> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>res</em>[3]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#ba2c6c46c1825a81f09d22322b03d9b5">inverseTransformOf()</a>, but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="6e4aeb1d5aafee31442cc3c82a6ee215"></a><!-- doxytag: member="qglviewer::Frame::getLocalTransformOf" ref="6e4aeb1d5aafee31442cc3c82a6ee215" args="(const float src[3], float res[3]) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getLocalTransformOf           </td>
          <td>(</td>
          <td class="paramtype">const float&nbsp;</td>
          <td class="paramname"> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>res</em>[3]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#37239448835f46771b9598a31b964cf2">localTransformOf()</a>, but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="62b201feca5e0ebecc03a71b9566d97c"></a><!-- doxytag: member="qglviewer::Frame::getLocalInverseTransformOf" ref="62b201feca5e0ebecc03a71b9566d97c" args="(const float src[3], float res[3]) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getLocalInverseTransformOf           </td>
          <td>(</td>
          <td class="paramtype">const float&nbsp;</td>
          <td class="paramname"> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>res</em>[3]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#d36cf320ff7cf6c8f9a2ac527c924f9e">localInverseTransformOf()</a>, but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="7d36c3c2d4b004b3e5d296aa58541f9f"></a><!-- doxytag: member="qglviewer::Frame::getTransformOfIn" ref="7d36c3c2d4b004b3e5d296aa58541f9f" args="(const float src[3], float res[3], const Frame *const in) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getTransformOfIn           </td>
          <td>(</td>
          <td class="paramtype">const float&nbsp;</td>
          <td class="paramname"> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>res</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Frame *const &nbsp;</td>
          <td class="paramname"> <em>in</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#01636f93c09d6fd9fca90cb671afdda0">transformOfIn()</a>, but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="4eed4b2770a62e5ebb32d3dcee642c52"></a><!-- doxytag: member="qglviewer::Frame::getTransformOfFrom" ref="4eed4b2770a62e5ebb32d3dcee642c52" args="(const float src[3], float res[3], const Frame *const from) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getTransformOfFrom           </td>
          <td>(</td>
          <td class="paramtype">const float&nbsp;</td>
          <td class="paramname"> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>res</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Frame *const &nbsp;</td>
          <td class="paramname"> <em>from</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#3416ca5a53c1f2d932fca1906ec1c6c7">transformOfFrom()</a>, but with <code>float</code> parameters. 
</div>
</div><p>
<a class="anchor" name="0974dfe336ed84a20adb8c6cdf8dedd9"></a><!-- doxytag: member="qglviewer::Frame::constraint" ref="0974dfe336ed84a20adb8c6cdf8dedd9" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a>* constraint           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the current constraint applied to the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>.<p>
A <code>NULL</code> value (default) means that no <a class="el" href="classqglviewer_1_1Constraint.html" title="An interface class for Frame constraints.">Constraint</a> is used to filter <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> translation and rotation. See the <a class="el" href="classqglviewer_1_1Constraint.html" title="An interface class for Frame constraints.">Constraint</a> class documentation for details.<p>
You may have to use a <code>dynamic_cast</code> to convert the result to a <a class="el" href="classqglviewer_1_1Constraint.html" title="An interface class for Frame constraints.">Constraint</a> derived class. 
</div>
</div><p>
<a class="anchor" name="dffa44cd173714b29f2441848a39c224"></a><!-- doxytag: member="qglviewer::Frame::setConstraint" ref="dffa44cd173714b29f2441848a39c224" args="(Constraint *const constraint)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setConstraint           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a> *const &nbsp;</td>
          <td class="paramname"> <em>constraint</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> attached to the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>.<p>
A <code>NULL</code> value means no constraint. The previous <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> should be deleted by the calling method if needed. 
</div>
</div><p>
<a class="anchor" name="a12123cf45f68b9f7fe0526b70ab0047"></a><!-- doxytag: member="qglviewer::Frame::matrix" ref="a12123cf45f68b9f7fe0526b70ab0047" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const GLdouble * matrix           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the 4x4 OpenGL transformation matrix represented by the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>.<p>
This method should be used in conjunction with <code>glMultMatrixd()</code> to modify the OpenGL modelview matrix from a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> hierarchy. With this <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> hierarchy: <div class="fragment"><pre class="fragment">  <a class="code" href="classqglviewer_1_1Frame.html#b71e6ee46f0c2593266f9a62d9c5e029">Frame</a>* body     = <span class="keyword">new</span> <a class="code" href="classqglviewer_1_1Frame.html#b71e6ee46f0c2593266f9a62d9c5e029">Frame</a>();
  <a class="code" href="classqglviewer_1_1Frame.html#b71e6ee46f0c2593266f9a62d9c5e029">Frame</a>* leftArm  = <span class="keyword">new</span> <a class="code" href="classqglviewer_1_1Frame.html#b71e6ee46f0c2593266f9a62d9c5e029">Frame</a>();
  <a class="code" href="classqglviewer_1_1Frame.html#b71e6ee46f0c2593266f9a62d9c5e029">Frame</a>* rightArm = <span class="keyword">new</span> <a class="code" href="classqglviewer_1_1Frame.html#b71e6ee46f0c2593266f9a62d9c5e029">Frame</a>();
  leftArm-&gt;setReferenceFrame(body);
  rightArm-&gt;setReferenceFrame(body);
</pre></div><p>
The associated OpenGL drawing code should look like: <div class="fragment"><pre class="fragment">  <span class="keywordtype">void</span> Viewer::draw()
  {
    glPushMatrix();
    glMultMatrixd(body-&gt;matrix());
    drawBody();

    glPushMatrix();
    glMultMatrixd(leftArm-&gt;matrix());
    drawArm();
    glPopMatrix();

    glPushMatrix();
    glMultMatrixd(rightArm-&gt;matrix());
    drawArm();
    glPopMatrix();

    glPopMatrix();
  }
</pre></div> Note the use of nested <code>glPushMatrix()</code> and <code>glPopMatrix()</code> blocks to represent the frame hierarchy: <code>leftArm</code> and <code>rightArm</code> are both correctly drawn with respect to the <code>body</code> coordinate system.<p>
This matrix only represents the local <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> transformation (i.e. with respect to the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>). Use <a class="el" href="classqglviewer_1_1Frame.html#39aa0648db05006e2b2f22ac5d971141">worldMatrix()</a> to get the full <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> transformation matrix (i.e. from the world to the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinate system). These two match when the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> is <code>NULL</code>.<p>
The result is only valid until the next call to <a class="el" href="classqglviewer_1_1Frame.html#a12123cf45f68b9f7fe0526b70ab0047">matrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#4915640a54a6b48a99cbdd0cd42fec48">getMatrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#39aa0648db05006e2b2f22ac5d971141">worldMatrix()</a> or <a class="el" href="classqglviewer_1_1Frame.html#45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix()</a>. Use it immediately (as above) or use <a class="el" href="classqglviewer_1_1Frame.html#4915640a54a6b48a99cbdd0cd42fec48">getMatrix()</a> instead.<p>
<dl class="attention" compact><dt><b>Attention:</b></dt><dd>The OpenGL format of the result is the transpose of the actual mathematical European representation (translation is on the last <em>line</em> instead of the last <em>column</em>).</dd></dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>The scaling factor of the 4x4 matrix is 1.0. </dd></dl>

</div>
</div><p>
<a class="anchor" name="4915640a54a6b48a99cbdd0cd42fec48"></a><!-- doxytag: member="qglviewer::Frame::getMatrix" ref="4915640a54a6b48a99cbdd0cd42fec48" args="(GLdouble m[4][4]) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getMatrix           </td>
          <td>(</td>
          <td class="paramtype">GLdouble&nbsp;</td>
          <td class="paramname"> <em>m</em>[4][4]          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<code>GLdouble</code>[4][4] version of <a class="el" href="classqglviewer_1_1Frame.html#a12123cf45f68b9f7fe0526b70ab0047">matrix()</a>. See also <a class="el" href="classqglviewer_1_1Frame.html#45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a12123cf45f68b9f7fe0526b70ab0047">matrix()</a>. 
</div>
</div><p>
<a class="anchor" name="15f0dc7596dc78437154302466ac3c0a"></a><!-- doxytag: member="qglviewer::Frame::getMatrix" ref="15f0dc7596dc78437154302466ac3c0a" args="(GLdouble m[16]) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getMatrix           </td>
          <td>(</td>
          <td class="paramtype">GLdouble&nbsp;</td>
          <td class="paramname"> <em>m</em>[16]          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<code>GLdouble</code>[16] version of <a class="el" href="classqglviewer_1_1Frame.html#a12123cf45f68b9f7fe0526b70ab0047">matrix()</a>. See also <a class="el" href="classqglviewer_1_1Frame.html#45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a12123cf45f68b9f7fe0526b70ab0047">matrix()</a>. 
</div>
</div><p>
<a class="anchor" name="39aa0648db05006e2b2f22ac5d971141"></a><!-- doxytag: member="qglviewer::Frame::worldMatrix" ref="39aa0648db05006e2b2f22ac5d971141" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const GLdouble * worldMatrix           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the 4x4 OpenGL transformation matrix represented by the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>.<p>
This method should be used in conjunction with <code>glMultMatrixd()</code> to modify the OpenGL modelview matrix from a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>: <div class="fragment"><pre class="fragment">  <span class="comment">// The modelview here corresponds to the world coordinate system.</span>
  <a class="code" href="classqglviewer_1_1Frame.html#b71e6ee46f0c2593266f9a62d9c5e029">Frame</a> fr(pos, Quaternion(from, to));
  glPushMatrix();
  glMultMatrixd(fr.worldMatrix());
  <span class="comment">// draw object in the fr coordinate system.</span>
  glPopMatrix();
</pre></div><p>
This matrix represents the global <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> transformation: the entire <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> hierarchy is taken into account to define the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> transformation from the world coordinate system. Use <a class="el" href="classqglviewer_1_1Frame.html#a12123cf45f68b9f7fe0526b70ab0047">matrix()</a> to get the local <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> transformation matrix (i.e. defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>). These two match when the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> is <code>NULL</code>.<p>
The OpenGL format of the result is the transpose of the actual mathematical European representation (translation is on the last <em>line</em> instead of the last <em>column</em>).<p>
<dl class="attention" compact><dt><b>Attention:</b></dt><dd>The result is only valid until the next call to <a class="el" href="classqglviewer_1_1Frame.html#a12123cf45f68b9f7fe0526b70ab0047">matrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#4915640a54a6b48a99cbdd0cd42fec48">getMatrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#39aa0648db05006e2b2f22ac5d971141">worldMatrix()</a> or <a class="el" href="classqglviewer_1_1Frame.html#45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix()</a>. Use it immediately (as above) or use <a class="el" href="classqglviewer_1_1Frame.html#45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix()</a> instead.</dd></dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>The scaling factor of the 4x4 matrix is 1.0. </dd></dl>

</div>
</div><p>
<a class="anchor" name="45358fae434b3912ce81577dc7cf4fc9"></a><!-- doxytag: member="qglviewer::Frame::getWorldMatrix" ref="45358fae434b3912ce81577dc7cf4fc9" args="(GLdouble m[4][4]) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getWorldMatrix           </td>
          <td>(</td>
          <td class="paramtype">GLdouble&nbsp;</td>
          <td class="paramname"> <em>m</em>[4][4]          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
float[4][4] parameter version of <a class="el" href="classqglviewer_1_1Frame.html#39aa0648db05006e2b2f22ac5d971141">worldMatrix()</a>. See also <a class="el" href="classqglviewer_1_1Frame.html#4915640a54a6b48a99cbdd0cd42fec48">getMatrix()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a12123cf45f68b9f7fe0526b70ab0047">matrix()</a>. 
</div>
</div><p>
<a class="anchor" name="c808850371649942726dd474aba29ead"></a><!-- doxytag: member="qglviewer::Frame::getWorldMatrix" ref="c808850371649942726dd474aba29ead" args="(GLdouble m[16]) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getWorldMatrix           </td>
          <td>(</td>
          <td class="paramtype">GLdouble&nbsp;</td>
          <td class="paramname"> <em>m</em>[16]          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
float[16] parameter version of <a class="el" href="classqglviewer_1_1Frame.html#39aa0648db05006e2b2f22ac5d971141">worldMatrix()</a>. See also <a class="el" href="classqglviewer_1_1Frame.html#4915640a54a6b48a99cbdd0cd42fec48">getMatrix()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a12123cf45f68b9f7fe0526b70ab0047">matrix()</a>. 
</div>
</div><p>
<a class="anchor" name="5408d08ab204157ec29f555b6813f9e4"></a><!-- doxytag: member="qglviewer::Frame::setFromMatrix" ref="5408d08ab204157ec29f555b6813f9e4" args="(const GLdouble m[4][4])" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setFromMatrix           </td>
          <td>(</td>
          <td class="paramtype">const GLdouble&nbsp;</td>
          <td class="paramname"> <em>m</em>[4][4]          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This is an overloaded method provided for convenience. Same as <a class="el" href="classqglviewer_1_1Frame.html#5408d08ab204157ec29f555b6813f9e4">setFromMatrix()</a>. 
</div>
</div><p>
<a class="anchor" name="0c4d51f142f43235e30198e7b8abc626"></a><!-- doxytag: member="qglviewer::Frame::setFromMatrix" ref="0c4d51f142f43235e30198e7b8abc626" args="(const GLdouble m[16])" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setFromMatrix           </td>
          <td>(</td>
          <td class="paramtype">const GLdouble&nbsp;</td>
          <td class="paramname"> <em>m</em>[16]          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> from an OpenGL matrix representation (rotation in the upper left 3x3 matrix and translation on the last line).<p>
Hence, if a code fragment looks like: <div class="fragment"><pre class="fragment"> GLdouble m[16]={...};
 glMultMatrixd(m);
</pre></div> It is equivalent to write: <div class="fragment"><pre class="fragment"> <a class="code" href="classqglviewer_1_1Frame.html#b71e6ee46f0c2593266f9a62d9c5e029">Frame</a> fr;
 fr.setFromMatrix(m);
 glMultMatrixd(fr.matrix());
</pre></div><p>
Using this conversion, you can benefit from the powerful <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> transformation methods to translate points and vectors to and from the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinate system to any other <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> coordinate system (including the world coordinate system). See <a class="el" href="classqglviewer_1_1Frame.html#c706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a> and <a class="el" href="classqglviewer_1_1Frame.html#05a3e18419f02427366a95b1e299f12e">transformOf()</a>.<p>
Emits the <a class="el" href="classqglviewer_1_1Frame.html#b6722375e68e03d151762ebfc83c5459">modified()</a> signal. See also <a class="el" href="classqglviewer_1_1Frame.html#a12123cf45f68b9f7fe0526b70ab0047">matrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#4915640a54a6b48a99cbdd0cd42fec48">getMatrix()</a> and <a class="el" href="classqglviewer_1_1Quaternion.html#1880f20e8080ee670b6a88ed0c7d69ac">Quaternion::setFromRotationMatrix()</a>.<p>
<dl class="attention" compact><dt><b>Attention:</b></dt><dd>A <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> does not contain a scale factor. The possible scaling in <code>m</code> will not be converted into the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> by this method. </dd></dl>

</div>
</div><p>
<a class="anchor" name="4534c3188c217feb8d21465d4cefd4ad"></a><!-- doxytag: member="qglviewer::Frame::inverse" ref="4534c3188c217feb8d21465d4cefd4ad" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Frame inverse           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> representing the inverse of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> space transformation.<p>
The <a class="el" href="classqglviewer_1_1Frame.html#19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> of the new <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is the <a class="el" href="classqglviewer_1_1Quaternion.html#c378ebc684d691dc25336b895f24a82e">Quaternion::inverse()</a> of the original rotation. Its <a class="el" href="classqglviewer_1_1Frame.html#388a5f38140104323aa51fc207fde642">translation()</a> is the negated inverse rotated image of the original translation.<p>
If a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is considered as a space rigid transformation (translation and rotation), the <a class="el" href="classqglviewer_1_1Frame.html#4534c3188c217feb8d21465d4cefd4ad">inverse()</a> <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> performs the inverse transformation.<p>
Only the local <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> transformation (i.e. defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>) is inverted. Use <a class="el" href="classqglviewer_1_1Frame.html#37d4da8cfd297273e7bb55538debaa3e">worldInverse()</a> for a global inverse.<p>
The resulting <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> has the same <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> as the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> and a <code>NULL</code> <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>.<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>The scaling factor of the 4x4 matrix is 1.0. </dd></dl>

</div>
</div><p>
<a class="anchor" name="37d4da8cfd297273e7bb55538debaa3e"></a><!-- doxytag: member="qglviewer::Frame::worldInverse" ref="37d4da8cfd297273e7bb55538debaa3e" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Frame worldInverse           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the <a class="el" href="classqglviewer_1_1Frame.html#4534c3188c217feb8d21465d4cefd4ad">inverse()</a> of the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> world transformation.<p>
The <a class="el" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation()</a> of the new <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> is the <a class="el" href="classqglviewer_1_1Quaternion.html#c378ebc684d691dc25336b895f24a82e">Quaternion::inverse()</a> of the original orientation. Its <a class="el" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position()</a> is the negated and inverse rotated image of the original position.<p>
The result <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> has a <code>NULL</code> <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> and a <code>NULL</code> <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>.<p>
Use <a class="el" href="classqglviewer_1_1Frame.html#4534c3188c217feb8d21465d4cefd4ad">inverse()</a> for a local (i.e. with respect to <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a>) transformation inverse. 
</div>
</div><p>
<a class="anchor" name="48e0e2dd26cd96418c8b889ceabe80f6"></a><!-- doxytag: member="qglviewer::Frame::domElement" ref="48e0e2dd26cd96418c8b889ceabe80f6" args="(const QString &amp;name, QDomDocument &amp;document) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">QDomElement domElement           </td>
          <td>(</td>
          <td class="paramtype">const QString &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">QDomDocument &amp;&nbsp;</td>
          <td class="paramname"> <em>document</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns an XML <code>QDomElement</code> that represents the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a>.<p>
<code>name</code> is the name of the QDomElement tag. <code>doc</code> is the <code>QDomDocument</code> factory used to create QDomElement.<p>
The resulting QDomElement looks like: <div class="fragment"><pre class="fragment"> &lt;name&gt;
   &lt;<a class="code" href="classqglviewer_1_1Frame.html#bc38a05a597e07c9ff525122682adc50">position</a> x=<span class="stringliteral">".."</span> y=<span class="stringliteral">".."</span> z=<span class="stringliteral">".."</span> /&gt;
   &lt;<a class="code" href="classqglviewer_1_1Frame.html#691af39b54669fad8b4e73599de22094">orientation</a> q0=<span class="stringliteral">".."</span> q1=<span class="stringliteral">".."</span> q2=<span class="stringliteral">".."</span> q3=<span class="stringliteral">".."</span> /&gt;
 &lt;/name&gt;
</pre></div><p>
Use <a class="el" href="classqglviewer_1_1Frame.html#cd13d2ddeca530cb9f26ead47f7d25d3">initFromDOMElement()</a> to restore the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> state from the resulting <code>QDomElement</code>.<p>
See <a class="el" href="classqglviewer_1_1Vec.html#48e0e2dd26cd96418c8b889ceabe80f6">Vec::domElement()</a> for a complete example. See also <a class="el" href="classqglviewer_1_1Quaternion.html#48e0e2dd26cd96418c8b889ceabe80f6">Quaternion::domElement()</a>, <a class="el" href="classqglviewer_1_1Camera.html#48e0e2dd26cd96418c8b889ceabe80f6">Camera::domElement()</a>...<p>
<dl class="attention" compact><dt><b>Attention:</b></dt><dd>The <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> are not saved in the QDomElement. </dd></dl>

<p>Reimplemented in <a class="el" href="classqglviewer_1_1ManipulatedCameraFrame.html#48e0e2dd26cd96418c8b889ceabe80f6">ManipulatedCameraFrame</a>, and <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#48e0e2dd26cd96418c8b889ceabe80f6">ManipulatedFrame</a>.</p>

</div>
</div><p>
<a class="anchor" name="cd13d2ddeca530cb9f26ead47f7d25d3"></a><!-- doxytag: member="qglviewer::Frame::initFromDOMElement" ref="cd13d2ddeca530cb9f26ead47f7d25d3" args="(const QDomElement &amp;element)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void initFromDOMElement           </td>
          <td>(</td>
          <td class="paramtype">const QDomElement &amp;&nbsp;</td>
          <td class="paramname"> <em>element</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [virtual, slot]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Restores the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation...">Frame</a> state from a <code>QDomElement</code> created by <a class="el" href="classqglviewer_1_1Frame.html#48e0e2dd26cd96418c8b889ceabe80f6">domElement()</a>.<p>
See <a class="el" href="classqglviewer_1_1Frame.html#48e0e2dd26cd96418c8b889ceabe80f6">domElement()</a> for the <code>QDomElement</code> syntax. See the <a class="el" href="classqglviewer_1_1Vec.html#cd13d2ddeca530cb9f26ead47f7d25d3">Vec::initFromDOMElement()</a> and <a class="el" href="classqglviewer_1_1Quaternion.html#cd13d2ddeca530cb9f26ead47f7d25d3">Quaternion::initFromDOMElement()</a> documentations for details on default values if an argument is missing.<p>
<dl class="attention" compact><dt><b>Attention:</b></dt><dd>The <a class="el" href="classqglviewer_1_1Frame.html#0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#9794b079db5f492e8804631d3d23baec">referenceFrame()</a> are not restored by this method and are left unchanged. </dd></dl>

<p>Reimplemented in <a class="el" href="classqglviewer_1_1ManipulatedCameraFrame.html#cd13d2ddeca530cb9f26ead47f7d25d3">ManipulatedCameraFrame</a>, and <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#cd13d2ddeca530cb9f26ead47f7d25d3">ManipulatedFrame</a>.</p>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>libQGLViewer 2.3.1 documentation generated by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>
</html>