Sophie

Sophie

distrib > Fedora > 16 > i386 > by-pkgid > 942400fecdd956c4a42f319760a792c6 > files > 120

libQGLViewer-doc-2.3.9-1.fc16.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>libQGLViewer: ManipulatedFrame Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<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="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.7.2 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
  <div class="tabs2">
    <ul class="tablist">
      <li><a href="../index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>

      <li id="searchli">
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div class="navpath">
    <ul>
      <li>ManipulatedFrame      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#signals">Signals</a> &#124;
<a href="#pub-methods">Public Member Functions</a>  </div>
  <div class="headertitle">
<h1>ManipulatedFrame Class Reference</h1>  </div>
</div>
<div class="contents">
<!-- doxytag: class="qglviewer::ManipulatedFrame" --><!-- doxytag: inherits="qglviewer::Frame,qglviewer::MouseGrabber" -->
<p>A ManipulatedFrame is 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> that can be rotated and translated using the mouse.  
<a href="#_details">More...</a></p>

<p><a href="classqglviewer_1_1ManipulatedFrame-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="signals"></a>
Signals</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a841d6d550acbe6e9103c32ac3b75c0c2">manipulated</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a8e3a52ff9f948f42269cab711bb92b5c">spun</a> ()</td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a1e9e849ecaeee6226bfb615d7a74a091">ManipulatedFrame</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#ae2ffc5f93122c6628e80dc254977c4cf">~ManipulatedFrame</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a9b1534a226c056993bc9ed594de9cc7e">ManipulatedFrame</a> (const ManipulatedFrame &amp;mf)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">ManipulatedFrame &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#ad6d13eba8611869fe824da2dab500f50">operator=</a> (const ManipulatedFrame &amp;mf)</td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Manipulation sensitivity</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a4573c3414e63c10dec06a3064d37532f">rotationSensitivity</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a28fd6b0ca560be97bb899e1a7e3c821a">translationSensitivity</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a1025480797d5dd046d6d717de59ffbca">spinningSensitivity</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#ad9e7fc4134c9733e8cfecf8bf80dbd44">wheelSensitivity</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a239ba71eaf212e169fe31918ed2d9c11">setRotationSensitivity</a> (float sensitivity)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#ac0cdf6be7c1443e2e984012490569871">setTranslationSensitivity</a> (float sensitivity)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#aa319d217b34f0a861e30d90b78a5c39b">setSpinningSensitivity</a> (float sensitivity)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#afd6cb097279239492a3401893d317499">setWheelSensitivity</a> (float sensitivity)</td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Spinning</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a975dfbf6b972b7128520b30a4ffe11dd">isSpinning</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a7b8b14da64c84fed1cbdb8d98191d276">spinningQuaternion</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#aaa23ed0375ee472156f439eaee070ec9">setSpinningQuaternion</a> (const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;spinningQuaternion)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a9942b6eab3fb197805f7af7e0edfdccf">startSpinning</a> (int updateInterval)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a9dc6e4b2c4c4a3ae195dfc39bb2ce8ac">stopSpinning</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#af87828117d0582d0031f563933f97bfd">spin</a> ()</td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Current state</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a032c48e2e7cdced01dea0cb7eca14022">isManipulated</a> () const </td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
MouseGrabber implementation</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#abe537c0091ddf3c907ca0e32861d701d">checkIfGrabsMouse</a> (int x, int y, const <a class="el" href="classqglviewer_1_1Camera.html">Camera</a> *const camera)</td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
XML representation</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual QDomElement&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a48e0e2dd26cd96418c8b889ceabe80f6">domElement</a> (const QString &amp;name, QDomDocument &amp;document) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#acd13d2ddeca530cb9f26ead47f7d25d3">initFromDOMElement</a> (const QDomElement &amp;element)</td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Mouse event handlers</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a9b4cce9d77e0495202100a8f1055f1f3">mousePressEvent</a> (QMouseEvent *const event, <a class="el" href="classqglviewer_1_1Camera.html">Camera</a> *const camera)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a609d287c3721aff697068efa3dfc4b4c">mouseMoveEvent</a> (QMouseEvent *const event, <a class="el" href="classqglviewer_1_1Camera.html">Camera</a> *const camera)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#aec95b0f05a05c1cdfc940ef4621d5db3">mouseReleaseEvent</a> (QMouseEvent *const event, <a class="el" href="classqglviewer_1_1Camera.html">Camera</a> *const camera)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a866619719201540ace1f05a1f8b1f156">mouseDoubleClickEvent</a> (QMouseEvent *const event, <a class="el" href="classqglviewer_1_1Camera.html">Camera</a> *const camera)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1ManipulatedFrame.html#ae5e5914dbdcba274fc9f58c558ba6a36">wheelEvent</a> (QWheelEvent *const event, <a class="el" href="classqglviewer_1_1Camera.html">Camera</a> *const camera)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>A ManipulatedFrame is 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> that can be rotated and translated using the mouse. </p>
<p>It converts the mouse motion into a translation and an orientation updates. A ManipulatedFrame is used to move an object in the scene. Combined with object selection, its <a class="el" href="classqglviewer_1_1MouseGrabber.html" title="Abstract class for objects that grab mouse focus in a QGLViewer.">MouseGrabber</a> properties and a dynamic update of the scene, the ManipulatedFrame introduces a great reactivity in your applications.</p>
<p>A ManipulatedFrame is attached to a <a class="el" href="classQGLViewer.html" title="A versatile 3D OpenGL viewer based on QGLWidget.">QGLViewer</a> using <a class="el" href="classQGLViewer.html#ac6964ec1ebb2f42464313e0c43e767a3">QGLViewer::setManipulatedFrame()</a>: </p>
<div class="fragment"><pre class="fragment">  init() { setManipulatedFrame( <span class="keyword">new</span> <a class="code" href="classqglviewer_1_1ManipulatedFrame.html#a1e9e849ecaeee6226bfb615d7a74a091">ManipulatedFrame</a>() ); }

  draw()
  {
    glPushMatrix();
    glMultMatrixd(manipulatedFrame()-&gt;<a class="code" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix</a>());
    <span class="comment">// draw the manipulated object here</span>
    glPopMatrix();
  }
</pre></div><p> See the <a href="../examples/manipulatedFrame.html">manipulatedFrame example</a> for a complete application.</p>
<p>Mouse events are normally sent to the <a class="el" href="classQGLViewer.html#a27a9e97573822d296b48e1c408b74042">QGLViewer::camera()</a>. You have to press the <a class="el" href="classQGLViewer.html#a5b90ab220b7700ca28db5ecf3217325da200c1bcf1eaa8635daa3cbb5fdd2ebb6">FRAME</a> state key (default is <code>Control</code>) to move the <a class="el" href="classQGLViewer.html#aba8c9c519574192fb7197bdbad8049db">QGLViewer::manipulatedFrame()</a> instead. See the <a href="../mouse.html">mouse page</a> for a description of mouse button bindings.</p>
<h3>Inherited functionalities</h3>
<p>A ManipulatedFrame is an overloaded instance 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>. The powerful coordinate system transformation functions (<a class="el" href="classqglviewer_1_1Frame.html#ac706b338b08d9d7b511fd84d0b6ecf96">Frame::coordinatesOf()</a>, <a class="el" href="classqglviewer_1_1Frame.html#a05a3e18419f02427366a95b1e299f12e">Frame::transformOf()</a>, ...) can hence be applied to a ManipulatedFrame.</p>
<p>A ManipulatedFrame is also a <a class="el" href="classqglviewer_1_1MouseGrabber.html" title="Abstract class for objects that grab mouse focus in a QGLViewer.">MouseGrabber</a>. If the mouse cursor gets within a distance of 10 pixels from the projected position of the ManipulatedFrame, the ManipulatedFrame becomes the new <a class="el" href="classQGLViewer.html#a6c834adafd727025b63741dd27cb6925">QGLViewer::mouseGrabber()</a>. It can then be manipulated directly, without any specific state key, object selection or GUI intervention. This is very convenient to directly move some objects in the scene (typically a light). See the <a href="../examples/mouseGrabber.html">mouseGrabber example</a> as an illustration. Note that QWidget::setMouseTracking() needs to be enabled in order to use this feature (see the <a class="el" href="classqglviewer_1_1MouseGrabber.html" title="Abstract class for objects that grab mouse focus in a QGLViewer.">MouseGrabber</a> documentation).</p>
<h3>Advanced functionalities</h3>
<p>A <a class="el" href="classQGLViewer.html" title="A versatile 3D OpenGL viewer based on QGLWidget.">QGLViewer</a> can handle at most one ManipulatedFrame at a time. If you want to move several objects in the scene, you simply have to keep a list of the different ManipulatedFrames, and to activate the right one (using <a class="el" href="classQGLViewer.html#ac6964ec1ebb2f42464313e0c43e767a3">QGLViewer::setManipulatedFrame()</a>) when needed. This can for instance be done according to an object selection: see the <a href="../examples/luxo.html">luxo example</a> for an illustration.</p>
<p>When the ManipulatedFrame is being manipulated using the mouse (mouse pressed and not yet released), <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a032c48e2e7cdced01dea0cb7eca14022">isManipulated()</a> returns <code>true</code>. This might be used to trigger a specific action or display (as is done with <a class="el" href="classQGLViewer.html#a8b6601997fe7a83e7cd041104d4b21d2">QGLViewer::fastDraw()</a>).</p>
<p>The ManipulatedFrame also emits a <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a841d6d550acbe6e9103c32ac3b75c0c2">manipulated()</a> signal each time its state is modified by the mouse. This signal is automatically connected to the <a class="el" href="classQGLViewer.html#ae12b7378efbffabc24a133ca1deb19ae">QGLViewer::updateGL()</a> slot when the ManipulatedFrame is attached to a viewer using <a class="el" href="classQGLViewer.html#ac6964ec1ebb2f42464313e0c43e767a3">QGLViewer::setManipulatedFrame()</a>.</p>
<p>You can make the ManipulatedFrame <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#af87828117d0582d0031f563933f97bfd">spin()</a> if you release the rotation mouse button while moving the mouse fast enough (see <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a1025480797d5dd046d6d717de59ffbca">spinningSensitivity()</a>). See also <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a28fd6b0ca560be97bb899e1a7e3c821a">translationSensitivity()</a> and <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a4573c3414e63c10dec06a3064d37532f">rotationSensitivity()</a> for sensitivity tuning. </p>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a1e9e849ecaeee6226bfb615d7a74a091"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::ManipulatedFrame" ref="a1e9e849ecaeee6226bfb615d7a74a091" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ManipulatedFrame </td>
          <td>(</td>
          <td class="paramname">&#160;)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Default constructor.</p>
<p>The translation is set to (0,0,0), with an identity rotation (0,0,0,1) (see <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> constructor for details).</p>
<p>The different sensitivities are set to their default values (see <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a4573c3414e63c10dec06a3064d37532f">rotationSensitivity()</a>, <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a28fd6b0ca560be97bb899e1a7e3c821a">translationSensitivity()</a>, <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a1025480797d5dd046d6d717de59ffbca">spinningSensitivity()</a> and <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#ad9e7fc4134c9733e8cfecf8bf80dbd44">wheelSensitivity()</a>). </p>

</div>
</div>
<a class="anchor" id="ae2ffc5f93122c6628e80dc254977c4cf"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::~ManipulatedFrame" ref="ae2ffc5f93122c6628e80dc254977c4cf" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual ~ManipulatedFrame </td>
          <td>(</td>
          <td class="paramname">&#160;)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Virtual destructor. Empty. </p>

</div>
</div>
<a class="anchor" id="a9b1534a226c056993bc9ed594de9cc7e"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::ManipulatedFrame" ref="a9b1534a226c056993bc9ed594de9cc7e" args="(const ManipulatedFrame &amp;mf)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ManipulatedFrame </td>
          <td>(</td>
          <td class="paramtype">const ManipulatedFrame &amp;&#160;</td>
          <td class="paramname"> <em>mf</em>&#160;)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Copy constructor. Performs a deep copy of all attributes using <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#ad6d13eba8611869fe824da2dab500f50">operator=()</a>. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="abe537c0091ddf3c907ca0e32861d701d"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::checkIfGrabsMouse" ref="abe537c0091ddf3c907ca0e32861d701d" args="(int x, int y, const Camera *const camera)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void checkIfGrabsMouse </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"> <em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"> <em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Camera.html">Camera</a> *const &#160;</td>
          <td class="paramname"> <em>camera</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Implementation of the <a class="el" href="classqglviewer_1_1MouseGrabber.html" title="Abstract class for objects that grab mouse focus in a QGLViewer.">MouseGrabber</a> main method.</p>
<p>The ManipulatedFrame <a class="el" href="classqglviewer_1_1MouseGrabber.html#a4eb7e14d035ae255b77ac1711aef039e">grabsMouse()</a> when the mouse is within a 10 pixels region around its <a class="el" href="classqglviewer_1_1Camera.html#ac4dc649d17bd2ae8664a7f4fdd50360f">Camera::projectedCoordinatesOf()</a> <a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a>.</p>
<p>See the <a href="../examples/mouseGrabber.html">mouseGrabber example</a> for an illustration. </p>

<p>Implements <a class="el" href="classqglviewer_1_1MouseGrabber.html#a6110636d4e031373ecebd42c6ea838ea">MouseGrabber</a>.</p>

</div>
</div>
<a class="anchor" id="a48e0e2dd26cd96418c8b889ceabe80f6"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::domElement" ref="a48e0e2dd26cd96418c8b889ceabe80f6" 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;&#160;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">QDomDocument &amp;&#160;</td>
          <td class="paramname"> <em>document</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns an XML <code>QDomElement</code> that represents the ManipulatedFrame.</p>
<p>Adds to the <a class="el" href="classqglviewer_1_1Frame.html#a48e0e2dd26cd96418c8b889ceabe80f6">Frame::domElement()</a> the ManipulatedFrame specific informations in a <code>ManipulatedParameters</code> child QDomElement.</p>
<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>
<p>Use <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#acd13d2ddeca530cb9f26ead47f7d25d3">initFromDOMElement()</a> to restore the ManipulatedFrame state from the resulting <code>QDomElement</code>.</p>
<p>See <a class="el" href="classqglviewer_1_1Vec.html#a48e0e2dd26cd96418c8b889ceabe80f6">Vec::domElement()</a> for a complete example. See also <a class="el" href="classqglviewer_1_1Quaternion.html#a48e0e2dd26cd96418c8b889ceabe80f6">Quaternion::domElement()</a>, <a class="el" href="classqglviewer_1_1Camera.html#a48e0e2dd26cd96418c8b889ceabe80f6">Camera::domElement()</a>... </p>

<p>Reimplemented from <a class="el" href="classqglviewer_1_1Frame.html#a48e0e2dd26cd96418c8b889ceabe80f6">Frame</a>.</p>

<p>Reimplemented in <a class="el" href="classqglviewer_1_1ManipulatedCameraFrame.html#a48e0e2dd26cd96418c8b889ceabe80f6">ManipulatedCameraFrame</a>.</p>

</div>
</div>
<a class="anchor" id="acd13d2ddeca530cb9f26ead47f7d25d3"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::initFromDOMElement" ref="acd13d2ddeca530cb9f26ead47f7d25d3" 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;&#160;</td>
          <td class="paramname"> <em>element</em>&#160;)</td>
          <td><code> [virtual, slot]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Restores the ManipulatedFrame state from a <code>QDomElement</code> created by <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a48e0e2dd26cd96418c8b889ceabe80f6">domElement()</a>.</p>
<p>Fields that are not described in <code>element</code> are set to their default values (see <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a1e9e849ecaeee6226bfb615d7a74a091">ManipulatedFrame()</a>).</p>
<p>First calls <a class="el" href="classqglviewer_1_1Frame.html#acd13d2ddeca530cb9f26ead47f7d25d3">Frame::initFromDOMElement()</a> and then initializes ManipulatedFrame specific parameters. Note that <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> are not restored and are left unchanged.</p>
<p>See <a class="el" href="classqglviewer_1_1Vec.html#acd13d2ddeca530cb9f26ead47f7d25d3">Vec::initFromDOMElement()</a> for a complete code example. </p>

<p>Reimplemented from <a class="el" href="classqglviewer_1_1Frame.html#acd13d2ddeca530cb9f26ead47f7d25d3">Frame</a>.</p>

<p>Reimplemented in <a class="el" href="classqglviewer_1_1ManipulatedCameraFrame.html#acd13d2ddeca530cb9f26ead47f7d25d3">ManipulatedCameraFrame</a>.</p>

</div>
</div>
<a class="anchor" id="a032c48e2e7cdced01dea0cb7eca14022"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::isManipulated" ref="a032c48e2e7cdced01dea0cb7eca14022" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool isManipulated </td>
          <td>(</td>
          <td class="paramname">&#160;)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns <code>true</code> when the ManipulatedFrame is being manipulated with the mouse.</p>
<p>Can be used to change the display of the manipulated object during manipulation.</p>
<p>When <a class="el" href="classqglviewer_1_1Camera.html#ad367db656b03fe0bc87b021801d66b75">Camera::frame()</a> of the <a class="el" href="classQGLViewer.html#a27a9e97573822d296b48e1c408b74042">QGLViewer::camera()</a> <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a032c48e2e7cdced01dea0cb7eca14022">isManipulated()</a>, <a class="el" href="classQGLViewer.html#a8b6601997fe7a83e7cd041104d4b21d2">QGLViewer::fastDraw()</a> is used in place of <a class="el" href="classQGLViewer.html#abc45d04e5f5ce1fbd68f920fcdb2d0e0">QGLViewer::draw()</a> for scene rendering. A simplified drawing will then allow for interactive camera displacements. </p>

</div>
</div>
<a class="anchor" id="a975dfbf6b972b7128520b30a4ffe11dd"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::isSpinning" ref="a975dfbf6b972b7128520b30a4ffe11dd" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool isSpinning </td>
          <td>(</td>
          <td class="paramname">&#160;)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns <code>true</code> when the ManipulatedFrame is spinning.</p>
<p>During spinning, <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#af87828117d0582d0031f563933f97bfd">spin()</a> rotates the ManipulatedFrame by its <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a7b8b14da64c84fed1cbdb8d98191d276">spinningQuaternion()</a> at a frequency defined when the ManipulatedFrame <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a9942b6eab3fb197805f7af7e0edfdccf">startSpinning()</a>.</p>
<p>Use <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a9942b6eab3fb197805f7af7e0edfdccf">startSpinning()</a> and <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a9dc6e4b2c4c4a3ae195dfc39bb2ce8ac">stopSpinning()</a> to change this state. Default value is <code>false</code>. </p>

</div>
</div>
<a class="anchor" id="a841d6d550acbe6e9103c32ac3b75c0c2"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::manipulated" ref="a841d6d550acbe6e9103c32ac3b75c0c2" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void manipulated </td>
          <td>(</td>
          <td class="paramname">&#160;)</td>
          <td><code> [signal]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This signal is emitted when ever the ManipulatedFrame is manipulated (i.e. rotated or translated) using the mouse. Connect this signal to any object that should be notified.</p>
<p>Note that this signal is automatically connected to the <a class="el" href="classQGLViewer.html#ae12b7378efbffabc24a133ca1deb19ae">QGLViewer::updateGL()</a> slot, when the ManipulatedFrame is attached to a viewer using <a class="el" href="classQGLViewer.html#ac6964ec1ebb2f42464313e0c43e767a3">QGLViewer::setManipulatedFrame()</a>, which is probably all you need.</p>
<p>Use the <a class="el" href="classQGLViewer.html#a32d7a506084c50fd97a24f94d9ca4864">QGLViewer::QGLViewerPool()</a> if you need to connect this signal to all the viewers.</p>
<p>See also the <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a8e3a52ff9f948f42269cab711bb92b5c">spun()</a>, <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a>, <a class="el" href="classqglviewer_1_1Frame.html#ab55c2a4f1732b90057fae4b6037399de">interpolated()</a> and <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab55c2a4f1732b90057fae4b6037399de">KeyFrameInterpolator::interpolated()</a> signals' documentations. </p>

</div>
</div>
<a class="anchor" id="a866619719201540ace1f05a1f8b1f156"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::mouseDoubleClickEvent" ref="a866619719201540ace1f05a1f8b1f156" args="(QMouseEvent *const event, Camera *const camera)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mouseDoubleClickEvent </td>
          <td>(</td>
          <td class="paramtype">QMouseEvent *const &#160;</td>
          <td class="paramname"> <em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Camera.html">Camera</a> *const &#160;</td>
          <td class="paramname"> <em>camera</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Overloading of <a class="el" href="classqglviewer_1_1MouseGrabber.html#a7c092390bad31d7f73ea474667159859">MouseGrabber::mouseDoubleClickEvent()</a>.</p>
<p>Left button double click aligns the ManipulatedFrame with the <code>camera</code> axis (see <a class="el" href="classqglviewer_1_1Frame.html#a352fc1d1f806653677eabcdb8a5eb898">alignWithFrame()</a> and <a class="el" href="classQGLViewer.html#a85fe75121d351785616b75b2c5661d8fa3d318f59bc81979e3922c7e716085304">ALIGN_FRAME</a>). Right button projects the ManipulatedFrame on the <code>camera</code> view direction. </p>

<p>Reimplemented from <a class="el" href="classqglviewer_1_1MouseGrabber.html#a7c092390bad31d7f73ea474667159859">MouseGrabber</a>.</p>

</div>
</div>
<a class="anchor" id="a609d287c3721aff697068efa3dfc4b4c"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::mouseMoveEvent" ref="a609d287c3721aff697068efa3dfc4b4c" args="(QMouseEvent *const event, Camera *const camera)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mouseMoveEvent </td>
          <td>(</td>
          <td class="paramtype">QMouseEvent *const &#160;</td>
          <td class="paramname"> <em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Camera.html">Camera</a> *const &#160;</td>
          <td class="paramname"> <em>camera</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Modifies the ManipulatedFrame according to the mouse motion.</p>
<p>Actual behavior depends on mouse bindings. See the <a class="el" href="classQGLViewer.html#aded669cb17515ea2b5971496f9aef875">QGLViewer::MouseAction</a> enum and the <a href="../mouse.html">QGLViewer mouse page</a> for details.</p>
<p>The <code>camera</code> is used to fit the mouse motion with the display parameters (see <a class="el" href="classqglviewer_1_1Camera.html#a80386c5943505b915246563262825d8e">Camera::screenWidth()</a>, <a class="el" href="classqglviewer_1_1Camera.html#a9fb925ffbf82e93898ae6db366a8d794">Camera::screenHeight()</a>, <a class="el" href="classqglviewer_1_1Camera.html#a89f1a2e62f7edf51de2d1c077ea5d330">Camera::fieldOfView()</a>).</p>
<p>Emits the <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a841d6d550acbe6e9103c32ac3b75c0c2">manipulated()</a> signal. </p>

<p>Reimplemented from <a class="el" href="classqglviewer_1_1MouseGrabber.html#a6e2baf9735a27e4c8a928518cc273d5c">MouseGrabber</a>.</p>

<p>Reimplemented in <a class="el" href="classqglviewer_1_1ManipulatedCameraFrame.html#a609d287c3721aff697068efa3dfc4b4c">ManipulatedCameraFrame</a>.</p>

</div>
</div>
<a class="anchor" id="a9b4cce9d77e0495202100a8f1055f1f3"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::mousePressEvent" ref="a9b4cce9d77e0495202100a8f1055f1f3" args="(QMouseEvent *const event, Camera *const camera)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mousePressEvent </td>
          <td>(</td>
          <td class="paramtype">QMouseEvent *const &#160;</td>
          <td class="paramname"> <em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Camera.html">Camera</a> *const &#160;</td>
          <td class="paramname"> <em>camera</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Initiates the ManipulatedFrame mouse manipulation.</p>
<p>Overloading of <a class="el" href="classqglviewer_1_1MouseGrabber.html#a56df172a6eff56ecc1a99d2e7d548d31">MouseGrabber::mousePressEvent()</a>. See also <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a609d287c3721aff697068efa3dfc4b4c">mouseMoveEvent()</a> and <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#aec95b0f05a05c1cdfc940ef4621d5db3">mouseReleaseEvent()</a>.</p>
<p>The mouse behavior depends on which button is pressed. See the <a href="../mouse.html">QGLViewer mouse page</a> for details. </p>

<p>Reimplemented from <a class="el" href="classqglviewer_1_1MouseGrabber.html#a56df172a6eff56ecc1a99d2e7d548d31">MouseGrabber</a>.</p>

</div>
</div>
<a class="anchor" id="aec95b0f05a05c1cdfc940ef4621d5db3"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::mouseReleaseEvent" ref="aec95b0f05a05c1cdfc940ef4621d5db3" args="(QMouseEvent *const event, Camera *const camera)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mouseReleaseEvent </td>
          <td>(</td>
          <td class="paramtype">QMouseEvent *const &#160;</td>
          <td class="paramname"> <em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Camera.html">Camera</a> *const &#160;</td>
          <td class="paramname"> <em>camera</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Stops the ManipulatedFrame mouse manipulation.</p>
<p>Overloading of <a class="el" href="classqglviewer_1_1MouseGrabber.html#a2e07bf5f7c6c96f40e7f1d1fdb031b0c">MouseGrabber::mouseReleaseEvent()</a>.</p>
<p>If the action was a <a class="el" href="classQGLViewer.html#aded669cb17515ea2b5971496f9aef875a3dcfe0046eb5876e287dbf0914819b16">ROTATE</a> <a class="el" href="classQGLViewer.html#aded669cb17515ea2b5971496f9aef875">QGLViewer::MouseAction</a>, a continuous spinning is possible if the speed of the mouse cursor is larger than <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a1025480797d5dd046d6d717de59ffbca">spinningSensitivity()</a> when the button is released. Press the rotate button again to stop spinning. See <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a9942b6eab3fb197805f7af7e0edfdccf">startSpinning()</a> and <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a975dfbf6b972b7128520b30a4ffe11dd">isSpinning()</a>. </p>

<p>Reimplemented from <a class="el" href="classqglviewer_1_1MouseGrabber.html#a2e07bf5f7c6c96f40e7f1d1fdb031b0c">MouseGrabber</a>.</p>

<p>Reimplemented in <a class="el" href="classqglviewer_1_1ManipulatedCameraFrame.html#aec95b0f05a05c1cdfc940ef4621d5db3">ManipulatedCameraFrame</a>.</p>

</div>
</div>
<a class="anchor" id="ad6d13eba8611869fe824da2dab500f50"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::operator=" ref="ad6d13eba8611869fe824da2dab500f50" args="(const ManipulatedFrame &amp;mf)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ManipulatedFrame &amp; operator= </td>
          <td>(</td>
          <td class="paramtype">const ManipulatedFrame &amp;&#160;</td>
          <td class="paramname"> <em>mf</em>&#160;)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Equal operator. Calls <a class="el" href="classqglviewer_1_1Frame.html#aeb0f5ceffbb62f990b89b200d6ce728c">Frame::operator=()</a> and then copy attributes. </p>

</div>
</div>
<a class="anchor" id="a4573c3414e63c10dec06a3064d37532f"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::rotationSensitivity" ref="a4573c3414e63c10dec06a3064d37532f" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float rotationSensitivity </td>
          <td>(</td>
          <td class="paramname">&#160;)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the influence of a mouse displacement on the ManipulatedFrame rotation.</p>
<p>Default value is 1.0. With an identical mouse displacement, a higher value will generate a larger rotation (and inversely for lower values). A 0.0 value will forbid ManipulatedFrame mouse rotation (see also <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>).</p>
<p>See also <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a239ba71eaf212e169fe31918ed2d9c11">setRotationSensitivity()</a>, <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a28fd6b0ca560be97bb899e1a7e3c821a">translationSensitivity()</a>, <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a1025480797d5dd046d6d717de59ffbca">spinningSensitivity()</a> and <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#ad9e7fc4134c9733e8cfecf8bf80dbd44">wheelSensitivity()</a>. </p>

</div>
</div>
<a class="anchor" id="a239ba71eaf212e169fe31918ed2d9c11"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::setRotationSensitivity" ref="a239ba71eaf212e169fe31918ed2d9c11" args="(float sensitivity)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setRotationSensitivity </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"> <em>sensitivity</em>&#160;)</td>
          <td><code> [slot]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Defines the <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a4573c3414e63c10dec06a3064d37532f">rotationSensitivity()</a>. </p>

</div>
</div>
<a class="anchor" id="aaa23ed0375ee472156f439eaee070ec9"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::setSpinningQuaternion" ref="aaa23ed0375ee472156f439eaee070ec9" args="(const Quaternion &amp;spinningQuaternion)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setSpinningQuaternion </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&#160;</td>
          <td class="paramname"> <em>spinningQuaternion</em>&#160;)</td>
          <td><code> [slot]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Defines the <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a7b8b14da64c84fed1cbdb8d98191d276">spinningQuaternion()</a>. Its axis is defined in the ManipulatedFrame coordinate system. </p>

</div>
</div>
<a class="anchor" id="aa319d217b34f0a861e30d90b78a5c39b"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::setSpinningSensitivity" ref="aa319d217b34f0a861e30d90b78a5c39b" args="(float sensitivity)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setSpinningSensitivity </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"> <em>sensitivity</em>&#160;)</td>
          <td><code> [slot]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Defines the <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a1025480797d5dd046d6d717de59ffbca">spinningSensitivity()</a>, in pixels per milliseconds. </p>

</div>
</div>
<a class="anchor" id="ac0cdf6be7c1443e2e984012490569871"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::setTranslationSensitivity" ref="ac0cdf6be7c1443e2e984012490569871" args="(float sensitivity)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setTranslationSensitivity </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"> <em>sensitivity</em>&#160;)</td>
          <td><code> [slot]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Defines the <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a28fd6b0ca560be97bb899e1a7e3c821a">translationSensitivity()</a>. </p>

</div>
</div>
<a class="anchor" id="afd6cb097279239492a3401893d317499"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::setWheelSensitivity" ref="afd6cb097279239492a3401893d317499" args="(float sensitivity)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setWheelSensitivity </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"> <em>sensitivity</em>&#160;)</td>
          <td><code> [slot]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Defines the <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#ad9e7fc4134c9733e8cfecf8bf80dbd44">wheelSensitivity()</a>. </p>

</div>
</div>
<a class="anchor" id="af87828117d0582d0031f563933f97bfd"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::spin" ref="af87828117d0582d0031f563933f97bfd" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void spin </td>
          <td>(</td>
          <td class="paramname">&#160;)</td>
          <td><code> [protected, virtual, slot]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Rotates the ManipulatedFrame by its <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a7b8b14da64c84fed1cbdb8d98191d276">spinningQuaternion()</a>. Called by a timer when the ManipulatedFrame <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a975dfbf6b972b7128520b30a4ffe11dd">isSpinning()</a>. </p>

<p>Reimplemented in <a class="el" href="classqglviewer_1_1ManipulatedCameraFrame.html#af87828117d0582d0031f563933f97bfd">ManipulatedCameraFrame</a>.</p>

</div>
</div>
<a class="anchor" id="a7b8b14da64c84fed1cbdb8d98191d276"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::spinningQuaternion" ref="a7b8b14da64c84fed1cbdb8d98191d276" 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> spinningQuaternion </td>
          <td>(</td>
          <td class="paramname">&#160;)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the incremental rotation that is applied by <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#af87828117d0582d0031f563933f97bfd">spin()</a> to the ManipulatedFrame orientation when it <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a975dfbf6b972b7128520b30a4ffe11dd">isSpinning()</a>.</p>
<p>Default value is a null rotation (identity <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a>). Use <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#aaa23ed0375ee472156f439eaee070ec9">setSpinningQuaternion()</a> to change this value.</p>
<p>The <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a7b8b14da64c84fed1cbdb8d98191d276">spinningQuaternion()</a> axis is defined in the ManipulatedFrame coordinate system. You can use <a class="el" href="classqglviewer_1_1Frame.html#a3416ca5a53c1f2d932fca1906ec1c6c7">Frame::transformOfFrom()</a> to convert this axis from an 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. </p>

</div>
</div>
<a class="anchor" id="a1025480797d5dd046d6d717de59ffbca"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::spinningSensitivity" ref="a1025480797d5dd046d6d717de59ffbca" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float spinningSensitivity </td>
          <td>(</td>
          <td class="paramname">&#160;)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the minimum mouse speed required (at button release) to make the ManipulatedFrame <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#af87828117d0582d0031f563933f97bfd">spin()</a>.</p>
<p>See <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#af87828117d0582d0031f563933f97bfd">spin()</a>, <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a7b8b14da64c84fed1cbdb8d98191d276">spinningQuaternion()</a> and <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a9942b6eab3fb197805f7af7e0edfdccf">startSpinning()</a> for details.</p>
<p>Mouse speed is expressed in pixels per milliseconds. Default value is 0.3 (300 pixels per second). Use <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#aa319d217b34f0a861e30d90b78a5c39b">setSpinningSensitivity()</a> to tune this value. A higher value will make spinning more difficult (a value of 100.0 forbids spinning in practice).</p>
<p>See also <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#aa319d217b34f0a861e30d90b78a5c39b">setSpinningSensitivity()</a>, <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a28fd6b0ca560be97bb899e1a7e3c821a">translationSensitivity()</a>, <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a4573c3414e63c10dec06a3064d37532f">rotationSensitivity()</a> and <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#ad9e7fc4134c9733e8cfecf8bf80dbd44">wheelSensitivity()</a>. </p>

</div>
</div>
<a class="anchor" id="a8e3a52ff9f948f42269cab711bb92b5c"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::spun" ref="a8e3a52ff9f948f42269cab711bb92b5c" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void spun </td>
          <td>(</td>
          <td class="paramname">&#160;)</td>
          <td><code> [signal]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This signal is emitted when the ManipulatedFrame <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a975dfbf6b972b7128520b30a4ffe11dd">isSpinning()</a>.</p>
<p>Note that for the <a class="el" href="classQGLViewer.html#aba8c9c519574192fb7197bdbad8049db">QGLViewer::manipulatedFrame()</a>, this signal is automatically connected to the <a class="el" href="classQGLViewer.html#ae12b7378efbffabc24a133ca1deb19ae">QGLViewer::updateGL()</a> slot.</p>
<p>Connect this signal to any object that should be notified. Use the <a class="el" href="classQGLViewer.html#a32d7a506084c50fd97a24f94d9ca4864">QGLViewer::QGLViewerPool()</a> if you need to connect this signal to all the viewers.</p>
<p>See also the <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a841d6d550acbe6e9103c32ac3b75c0c2">manipulated()</a>, <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a>, <a class="el" href="classqglviewer_1_1Frame.html#ab55c2a4f1732b90057fae4b6037399de">interpolated()</a> and <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab55c2a4f1732b90057fae4b6037399de">KeyFrameInterpolator::interpolated()</a> signals' documentations. </p>

</div>
</div>
<a class="anchor" id="a9942b6eab3fb197805f7af7e0edfdccf"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::startSpinning" ref="a9942b6eab3fb197805f7af7e0edfdccf" args="(int updateInterval)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void startSpinning </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"> <em>updateInterval</em>&#160;)</td>
          <td><code> [virtual, slot]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Starts the spinning of the ManipulatedFrame.</p>
<p>This method starts a timer that will call <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#af87828117d0582d0031f563933f97bfd">spin()</a> every <code>updateInterval</code> milliseconds. The ManipulatedFrame <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a975dfbf6b972b7128520b30a4ffe11dd">isSpinning()</a> until you call <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a9dc6e4b2c4c4a3ae195dfc39bb2ce8ac">stopSpinning()</a>. </p>

</div>
</div>
<a class="anchor" id="a9dc6e4b2c4c4a3ae195dfc39bb2ce8ac"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::stopSpinning" ref="a9dc6e4b2c4c4a3ae195dfc39bb2ce8ac" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void stopSpinning </td>
          <td>(</td>
          <td class="paramname">&#160;)</td>
          <td><code> [virtual, slot]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Stops the spinning motion started using <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a9942b6eab3fb197805f7af7e0edfdccf">startSpinning()</a>. <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a975dfbf6b972b7128520b30a4ffe11dd">isSpinning()</a> will return <code>false</code> after this call. </p>

</div>
</div>
<a class="anchor" id="a28fd6b0ca560be97bb899e1a7e3c821a"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::translationSensitivity" ref="a28fd6b0ca560be97bb899e1a7e3c821a" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float translationSensitivity </td>
          <td>(</td>
          <td class="paramname">&#160;)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the influence of a mouse displacement on the ManipulatedFrame translation.</p>
<p>Default value is 1.0. You should not have to modify this value, since with 1.0 the ManipulatedFrame precisely stays under the mouse cursor.</p>
<p>With an identical mouse displacement, a higher value will generate a larger translation (and inversely for lower values). A 0.0 value will forbid ManipulatedFrame mouse translation (see also <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>).</p>
<dl class="note"><dt><b>Note:</b></dt><dd>When the ManipulatedFrame is used to move a <em><a class="el" href="classqglviewer_1_1Camera.html" title="A perspective or orthographic camera.">Camera</a></em> (see the <a class="el" href="classqglviewer_1_1ManipulatedCameraFrame.html" title="The ManipulatedCameraFrame class represents a ManipulatedFrame with Camera specific mouse bindings...">ManipulatedCameraFrame</a> class documentation), after zooming on a small region of your scene, the camera may translate too fast. For a camera, it is the <a class="el" href="classqglviewer_1_1Camera.html#afd168442e2a05bd41881936fb722b5fe">Camera::revolveAroundPoint()</a> that exactly matches the mouse displacement. Hence, instead of changing the <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a28fd6b0ca560be97bb899e1a7e3c821a">translationSensitivity()</a>, solve the problem by (temporarily) setting the <a class="el" href="classqglviewer_1_1Camera.html#afd168442e2a05bd41881936fb722b5fe">Camera::revolveAroundPoint()</a> to a point on the zoomed region (see the <a class="el" href="classQGLViewer.html#a85fe75121d351785616b75b2c5661d8fa6423101303db857a4217e8e66606128a">RAP_FROM_PIXEL</a> mouse binding in the <a href="../mouse.html">mouse page</a>).</dd></dl>
<p>See also <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#ac0cdf6be7c1443e2e984012490569871">setTranslationSensitivity()</a>, <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a4573c3414e63c10dec06a3064d37532f">rotationSensitivity()</a>, <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a1025480797d5dd046d6d717de59ffbca">spinningSensitivity()</a> and <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#ad9e7fc4134c9733e8cfecf8bf80dbd44">wheelSensitivity()</a>. </p>

</div>
</div>
<a class="anchor" id="ae5e5914dbdcba274fc9f58c558ba6a36"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::wheelEvent" ref="ae5e5914dbdcba274fc9f58c558ba6a36" args="(QWheelEvent *const event, Camera *const camera)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void wheelEvent </td>
          <td>(</td>
          <td class="paramtype">QWheelEvent *const &#160;</td>
          <td class="paramname"> <em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Camera.html">Camera</a> *const &#160;</td>
          <td class="paramname"> <em>camera</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Overloading of <a class="el" href="classqglviewer_1_1MouseGrabber.html#a07a7d880d107f0b532ef779b29884e08">MouseGrabber::wheelEvent()</a>.</p>
<p>Using the wheel is equivalent to a <a class="el" href="classQGLViewer.html#aded669cb17515ea2b5971496f9aef875a604adefe799fe794cab6b76ed1108201">ZOOM</a> <a class="el" href="classQGLViewer.html#aded669cb17515ea2b5971496f9aef875">QGLViewer::MouseAction</a>. See <a class="el" href="classQGLViewer.html#a4198b3b668c342e39752bade04f78c64">QGLViewer::setWheelBinding()</a> and <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#afd6cb097279239492a3401893d317499">setWheelSensitivity()</a>. </p>

<p>Reimplemented from <a class="el" href="classqglviewer_1_1MouseGrabber.html#a07a7d880d107f0b532ef779b29884e08">MouseGrabber</a>.</p>

<p>Reimplemented in <a class="el" href="classqglviewer_1_1ManipulatedCameraFrame.html#ae5e5914dbdcba274fc9f58c558ba6a36">ManipulatedCameraFrame</a>.</p>

</div>
</div>
<a class="anchor" id="ad9e7fc4134c9733e8cfecf8bf80dbd44"></a><!-- doxytag: member="qglviewer::ManipulatedFrame::wheelSensitivity" ref="ad9e7fc4134c9733e8cfecf8bf80dbd44" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float wheelSensitivity </td>
          <td>(</td>
          <td class="paramname">&#160;)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the mouse wheel sensitivity.</p>
<p>Default value is 1.0. A higher value will make the wheel action more efficient (usually meaning a faster zoom). Use a negative value to invert the zoom in and out directions.</p>
<p>See also <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#afd6cb097279239492a3401893d317499">setWheelSensitivity()</a>, <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a28fd6b0ca560be97bb899e1a7e3c821a">translationSensitivity()</a>, <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a4573c3414e63c10dec06a3064d37532f">rotationSensitivity()</a> and <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a1025480797d5dd046d6d717de59ffbca">spinningSensitivity()</a>. </p>

</div>
</div>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr class="footer"/><address class="footer"><small>Generated on Mon Dec 6 2010 01:42:48 for libQGLViewer by&#160;
<a href="http://www.doxygen.org/index.html">
doxygen</a> 1.7.2 </small></address>
</body>
</html>