<!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: AxisPlaneConstraint 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 Page</span></a></li> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> <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>AxisPlaneConstraint </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> </div> <div class="headertitle"> <h1>AxisPlaneConstraint Class Reference</h1> </div> </div> <div class="contents"> <!-- doxytag: class="qglviewer::AxisPlaneConstraint" --><!-- doxytag: inherits="qglviewer::Constraint" --> <p>An abstract class for <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> Constraints defined by an axis or a plane. <a href="#_details">More...</a></p> <p><a href="classqglviewer_1_1AxisPlaneConstraint-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="pub-types"></a> Public Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a> { <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7acc62d1576546f3245237e1b232d838b6">FREE</a>, <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a1ad785f7d0b0b3a5a52cdd4385785a6b">AXIS</a>, <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a67572d1492c84d8d417b61e864f13f24">PLANE</a>, <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a4b4068e636cd02a6e87e8d3920383d67">FORBIDDEN</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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1049b4e70e2fc0d46b4cfaf93d167515">AxisPlaneConstraint</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a88334a0bc0770afe6bd3af525f70ad9f">~AxisPlaneConstraint</a> ()</td></tr> <tr><td colspan="2"><h2><a name="member-group"></a> Translation constraint</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#ab7d724965c6765209f47c1abe7f7b7b4">constrainTranslation</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &translation, <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *const frame)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a722c30f7303a078681fbf516499579de">setTranslationConstraint</a> (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a> type, const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &direction)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a0cee03d4db5722e992c20f042601eaa5">setTranslationConstraintType</a> (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a> type)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a2b676c088af158a52724bbbab15d1a65">setTranslationConstraintDirection</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &direction)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a12ad675910ffa86fbabefff2cd6a594a">translationConstraintType</a> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a431b0d36842122de9db3b4e4f00b8d7c">translationConstraintDirection</a> () const </td></tr> <tr><td colspan="2"><h2><a name="member-group"></a> Rotation constraint</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a5de5f38e75b58476b7926171dba4b31b">constrainRotation</a> (<a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &rotation, <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *const frame)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a116f0f394030f165b031287c1e1cf5ea">setRotationConstraint</a> (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a> type, const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &direction)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a7c0dc83d6a770742719c8d3ffa67c4e5">setRotationConstraintType</a> (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a> type)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a7cb6055005e69d6edac8fbb0d14dd0fa">setRotationConstraintDirection</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &direction)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a61a05b9e18948b2b787e355c90b7b85f">rotationConstraintType</a> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#af982989dbeb2e0e63c85eecc09bd88d7">rotationConstraintDirection</a> () const </td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>An abstract class for <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> Constraints defined by an axis or a plane. </p> <p>AxisPlaneConstraint is an interface for (translation and/or rotation) <a class="el" href="classqglviewer_1_1Constraint.html" title="An interface class for Frame constraints.">Constraint</a> that are defined by a direction. <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a12ad675910ffa86fbabefff2cd6a594a">translationConstraintType()</a> and <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a61a05b9e18948b2b787e355c90b7b85f">rotationConstraintType()</a> define how this direction should be interpreted: as an axis (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a1ad785f7d0b0b3a5a52cdd4385785a6b">AxisPlaneConstraint::AXIS</a>) or as a plane normal (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a67572d1492c84d8d417b61e864f13f24">AxisPlaneConstraint::PLANE</a>). See the <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type()</a> documentation for details.</p> <p>The three implementations of this class: <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> differ by the coordinate system in which this direction is expressed.</p> <p>Different implementations of this class are illustrated in the <a href="../examples/constrainedCamera.html">contrainedCamera</a> and <a href="../examples/constrainedFrame.html">constrainedFrame</a> examples.</p> <dl class="attention"><dt><b>Attention:</b></dt><dd>When applied, the rotational <a class="el" href="classqglviewer_1_1Constraint.html" title="An interface class for Frame constraints.">Constraint</a> may not intuitively follow the mouse displacement. A solution would be to directly measure the rotation angle in screen coordinates, but that would imply to know the <a class="el" href="classQGLViewer.html#a27a9e97573822d296b48e1c408b74042">QGLViewer::camera()</a>, so that we can compute the projected coordinates of the rotation center (as is done with the <a class="el" href="classQGLViewer.html#aded669cb17515ea2b5971496f9aef875a410b0fa7f49e7eedd6d739db37c67209">SCREEN_ROTATE</a> binding). However, adding an extra pointer to the <a class="el" href="classQGLViewer.html#a27a9e97573822d296b48e1c408b74042">QGLViewer::camera()</a> in all the AxisPlaneConstraint derived classes (which the user would have to update in a multi-viewer application) was judged as an overkill. </dd></dl> <hr/><h2>Member Enumeration Documentation</h2> <a class="anchor" id="a1d1cfd8ffb84e947f82999c682b666a7"></a><!-- doxytag: member="qglviewer::AxisPlaneConstraint::Type" ref="a1d1cfd8ffb84e947f82999c682b666a7" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a></td> </tr> </table> </div> <div class="memdoc"> <p>Type lists the different types of translation and rotation constraints that are available.</p> <p>It specifies the meaning of the constraint direction (see <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a431b0d36842122de9db3b4e4f00b8d7c">translationConstraintDirection()</a> and <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#af982989dbeb2e0e63c85eecc09bd88d7">rotationConstraintDirection()</a>): as an axis direction (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a1ad785f7d0b0b3a5a52cdd4385785a6b">AxisPlaneConstraint::AXIS</a>) or a plane normal (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a67572d1492c84d8d417b61e864f13f24">AxisPlaneConstraint::PLANE</a>). <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7acc62d1576546f3245237e1b232d838b6">AxisPlaneConstraint::FREE</a> means no constraint while <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a4b4068e636cd02a6e87e8d3920383d67">AxisPlaneConstraint::FORBIDDEN</a> completely forbids the translation and/or the rotation.</p> <p>See <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a12ad675910ffa86fbabefff2cd6a594a">translationConstraintType()</a> and <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a61a05b9e18948b2b787e355c90b7b85f">rotationConstraintType()</a>.</p> <dl class="attention"><dt><b>Attention:</b></dt><dd>The <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a67572d1492c84d8d417b61e864f13f24">AxisPlaneConstraint::PLANE</a> Type is not valid for rotational constraint.</dd></dl> <p>New derived classes can use their own extended enum for specific constraints: </p> <div class="fragment"><pre class="fragment"> <span class="keyword">class </span>MyAxisPlaneConstraint : <span class="keyword">public</span> <a class="code" href="classqglviewer_1_1AxisPlaneConstraint.html#a1049b4e70e2fc0d46b4cfaf93d167515">AxisPlaneConstraint</a> { <span class="keyword">public</span>: <span class="keyword">enum</span> MyType { <a class="code" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7acc62d1576546f3245237e1b232d838b6">FREE</a>, <a class="code" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a1ad785f7d0b0b3a5a52cdd4385785a6b">AXIS</a>, <a class="code" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a67572d1492c84d8d417b61e864f13f24">PLANE</a>, <a class="code" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a4b4068e636cd02a6e87e8d3920383d67">FORBIDDEN</a>, CUSTOM }; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classqglviewer_1_1AxisPlaneConstraint.html#ab7d724965c6765209f47c1abe7f7b7b4">constrainTranslation</a>(Vec &translation, Frame *<span class="keyword">const</span> frame) { <span class="comment">// translationConstraintType() is simply an int. CUSTOM Type is handled seamlessly.</span> <span class="keywordflow">switch</span> (<a class="code" href="classqglviewer_1_1AxisPlaneConstraint.html#a12ad675910ffa86fbabefff2cd6a594a">translationConstraintType</a>()) { <span class="keywordflow">case</span> MyAxisPlaneConstraint::FREE: ... <span class="keywordflow">break</span>; <span class="keywordflow">case</span> MyAxisPlaneConstraint::CUSTOM: ... <span class="keywordflow">break</span>; } }; MyAxisPlaneConstraint* c = <span class="keyword">new</span> MyAxisPlaneConstraint(); <span class="comment">// Note the Type conversion</span> c->setTranslationConstraintType(<a class="code" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">AxisPlaneConstraint::Type</a>(MyAxisPlaneConstraint::CUSTOM)); }; </pre></div> <dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" id="a1d1cfd8ffb84e947f82999c682b666a7acc62d1576546f3245237e1b232d838b6"></a><!-- doxytag: member="FREE" ref="a1d1cfd8ffb84e947f82999c682b666a7acc62d1576546f3245237e1b232d838b6" args="" -->FREE</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="a1d1cfd8ffb84e947f82999c682b666a7a1ad785f7d0b0b3a5a52cdd4385785a6b"></a><!-- doxytag: member="AXIS" ref="a1d1cfd8ffb84e947f82999c682b666a7a1ad785f7d0b0b3a5a52cdd4385785a6b" args="" -->AXIS</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="a1d1cfd8ffb84e947f82999c682b666a7a67572d1492c84d8d417b61e864f13f24"></a><!-- doxytag: member="PLANE" ref="a1d1cfd8ffb84e947f82999c682b666a7a67572d1492c84d8d417b61e864f13f24" args="" -->PLANE</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" id="a1d1cfd8ffb84e947f82999c682b666a7a4b4068e636cd02a6e87e8d3920383d67"></a><!-- doxytag: member="FORBIDDEN" ref="a1d1cfd8ffb84e947f82999c682b666a7a4b4068e636cd02a6e87e8d3920383d67" args="" -->FORBIDDEN</em> </td><td> </td></tr> </table> </dd> </dl> </div> </div> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="a1049b4e70e2fc0d46b4cfaf93d167515"></a><!-- doxytag: member="qglviewer::AxisPlaneConstraint::AxisPlaneConstraint" ref="a1049b4e70e2fc0d46b4cfaf93d167515" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">AxisPlaneConstraint </td> <td>(</td> <td class="paramname"> )</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Default constructor.</p> <p><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a12ad675910ffa86fbabefff2cd6a594a">translationConstraintType()</a> and <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a61a05b9e18948b2b787e355c90b7b85f">rotationConstraintType()</a> are set to <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7acc62d1576546f3245237e1b232d838b6">AxisPlaneConstraint::FREE</a>. <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a431b0d36842122de9db3b4e4f00b8d7c">translationConstraintDirection()</a> and <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#af982989dbeb2e0e63c85eecc09bd88d7">rotationConstraintDirection()</a> are set to (0,0,0). </p> </div> </div> <a class="anchor" id="a88334a0bc0770afe6bd3af525f70ad9f"></a><!-- doxytag: member="qglviewer::AxisPlaneConstraint::~AxisPlaneConstraint" ref="a88334a0bc0770afe6bd3af525f70ad9f" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual ~AxisPlaneConstraint </td> <td>(</td> <td class="paramname"> )</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Virtual destructor. Empty. </p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a5de5f38e75b58476b7926171dba4b31b"></a><!-- doxytag: member="qglviewer::AxisPlaneConstraint::constrainRotation" ref="a5de5f38e75b58476b7926171dba4b31b" args="(Quaternion &rotation, Frame *const frame)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void constrainRotation </td> <td>(</td> <td class="paramtype"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> & </td> <td class="paramname"> <em>rotation</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *const  </td> <td class="paramname"> <em>frame</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Overloading of <a class="el" href="classqglviewer_1_1Constraint.html#a5de5f38e75b58476b7926171dba4b31b">Constraint::constrainRotation()</a>. Empty. </p> <p>Reimplemented from <a class="el" href="classqglviewer_1_1Constraint.html#a5de5f38e75b58476b7926171dba4b31b">Constraint</a>.</p> <p>Reimplemented in <a class="el" href="classqglviewer_1_1LocalConstraint.html#a71c099a2c356f715f8bf34052875cd25">LocalConstraint</a>, <a class="el" href="classqglviewer_1_1WorldConstraint.html#a71c099a2c356f715f8bf34052875cd25">WorldConstraint</a>, and <a class="el" href="classqglviewer_1_1CameraConstraint.html#a71c099a2c356f715f8bf34052875cd25">CameraConstraint</a>.</p> </div> </div> <a class="anchor" id="ab7d724965c6765209f47c1abe7f7b7b4"></a><!-- doxytag: member="qglviewer::AxisPlaneConstraint::constrainTranslation" ref="ab7d724965c6765209f47c1abe7f7b7b4" args="(Vec &translation, Frame *const frame)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void constrainTranslation </td> <td>(</td> <td class="paramtype"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> & </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_1Frame.html">Frame</a> *const  </td> <td class="paramname"> <em>frame</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Overloading of <a class="el" href="classqglviewer_1_1Constraint.html#ab7d724965c6765209f47c1abe7f7b7b4">Constraint::constrainTranslation()</a>. Empty </p> <p>Reimplemented from <a class="el" href="classqglviewer_1_1Constraint.html#ab7d724965c6765209f47c1abe7f7b7b4">Constraint</a>.</p> <p>Reimplemented in <a class="el" href="classqglviewer_1_1LocalConstraint.html#adc695bfbc605b5631be663b28a4ea9f6">LocalConstraint</a>, <a class="el" href="classqglviewer_1_1WorldConstraint.html#adc695bfbc605b5631be663b28a4ea9f6">WorldConstraint</a>, and <a class="el" href="classqglviewer_1_1CameraConstraint.html#adc695bfbc605b5631be663b28a4ea9f6">CameraConstraint</a>.</p> </div> </div> <a class="anchor" id="af982989dbeb2e0e63c85eecc09bd88d7"></a><!-- doxytag: member="qglviewer::AxisPlaneConstraint::rotationConstraintDirection" ref="af982989dbeb2e0e63c85eecc09bd88d7" 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> rotationConstraintDirection </td> <td>(</td> <td class="paramname"> )</td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Returns the axis direction used by the rotation constraint.</p> <p>This direction is defined only when <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a61a05b9e18948b2b787e355c90b7b85f">rotationConstraintType()</a> is <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a1ad785f7d0b0b3a5a52cdd4385785a6b">AxisPlaneConstraint::AXIS</a>.</p> <p>The AxisPlaneConstraint derived classes express this direction in different coordinate system (camera for <a class="el" href="classqglviewer_1_1CameraConstraint.html" title="An AxisPlaneConstraint defined in the camera coordinate system.">CameraConstraint</a>, local for <a class="el" href="classqglviewer_1_1LocalConstraint.html" title="An AxisPlaneConstraint defined in the Frame local coordinate system.">LocalConstraint</a>, and world for <a class="el" href="classqglviewer_1_1WorldConstraint.html" title="An AxisPlaneConstraint defined in the world coordinate system.">WorldConstraint</a>). This value can be modified with <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a7cb6055005e69d6edac8fbb0d14dd0fa">setRotationConstraintDirection()</a>. </p> </div> </div> <a class="anchor" id="a61a05b9e18948b2b787e355c90b7b85f"></a><!-- doxytag: member="qglviewer::AxisPlaneConstraint::rotationConstraintType" ref="a61a05b9e18948b2b787e355c90b7b85f" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a> rotationConstraintType </td> <td>(</td> <td class="paramname"> )</td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Returns the rotation constraint <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type()</a>. </p> </div> </div> <a class="anchor" id="a116f0f394030f165b031287c1e1cf5ea"></a><!-- doxytag: member="qglviewer::AxisPlaneConstraint::setRotationConstraint" ref="a116f0f394030f165b031287c1e1cf5ea" args="(Type type, const Vec &direction)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void setRotationConstraint </td> <td>(</td> <td class="paramtype"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a> </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> & </td> <td class="paramname"> <em>direction</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Simply calls <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a7c0dc83d6a770742719c8d3ffa67c4e5">setRotationConstraintType()</a> and <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a7cb6055005e69d6edac8fbb0d14dd0fa">setRotationConstraintDirection()</a>. </p> </div> </div> <a class="anchor" id="a7cb6055005e69d6edac8fbb0d14dd0fa"></a><!-- doxytag: member="qglviewer::AxisPlaneConstraint::setRotationConstraintDirection" ref="a7cb6055005e69d6edac8fbb0d14dd0fa" args="(const Vec &direction)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void setRotationConstraintDirection </td> <td>(</td> <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> & </td> <td class="paramname"> <em>direction</em> )</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Defines the <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#af982989dbeb2e0e63c85eecc09bd88d7">rotationConstraintDirection()</a>. The coordinate system where <code>direction</code> is expressed depends on your class implementation. </p> </div> </div> <a class="anchor" id="a7c0dc83d6a770742719c8d3ffa67c4e5"></a><!-- doxytag: member="qglviewer::AxisPlaneConstraint::setRotationConstraintType" ref="a7c0dc83d6a770742719c8d3ffa67c4e5" args="(Type type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void setRotationConstraintType </td> <td>(</td> <td class="paramtype"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a> </td> <td class="paramname"> <em>type</em> )</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Set the <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type()</a> of the <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a61a05b9e18948b2b787e355c90b7b85f">rotationConstraintType()</a>. Default is <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7acc62d1576546f3245237e1b232d838b6">AxisPlaneConstraint::FREE</a>.</p> <p>Depending on this value, 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> will freely rotate (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7acc62d1576546f3245237e1b232d838b6">AxisPlaneConstraint::FREE</a>), will only be able to rotate around an axis (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a1ad785f7d0b0b3a5a52cdd4385785a6b">AxisPlaneConstraint::AXIS</a>), or will not able to rotate at all (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a4b4068e636cd02a6e87e8d3920383d67">AxisPlaneConstraint::FORBIDDEN</a>).</p> <p>Use <a class="el" href="classqglviewer_1_1Frame.html#a6733704520780505759efdef38a68b8b">Frame::setOrientation()</a> to define the orientation of the constrained <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> before it gets constrained.</p> <dl class="attention"><dt><b>Attention:</b></dt><dd>An <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a67572d1492c84d8d417b61e864f13f24">AxisPlaneConstraint::PLANE</a> <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type()</a> is not meaningful for rotational constraints and will be ignored. </dd></dl> </div> </div> <a class="anchor" id="a722c30f7303a078681fbf516499579de"></a><!-- doxytag: member="qglviewer::AxisPlaneConstraint::setTranslationConstraint" ref="a722c30f7303a078681fbf516499579de" args="(Type type, const Vec &direction)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void setTranslationConstraint </td> <td>(</td> <td class="paramtype"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a> </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> & </td> <td class="paramname"> <em>direction</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Simply calls <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a0cee03d4db5722e992c20f042601eaa5">setTranslationConstraintType()</a> and <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a2b676c088af158a52724bbbab15d1a65">setTranslationConstraintDirection()</a>. </p> </div> </div> <a class="anchor" id="a2b676c088af158a52724bbbab15d1a65"></a><!-- doxytag: member="qglviewer::AxisPlaneConstraint::setTranslationConstraintDirection" ref="a2b676c088af158a52724bbbab15d1a65" args="(const Vec &direction)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void setTranslationConstraintDirection </td> <td>(</td> <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> & </td> <td class="paramname"> <em>direction</em> )</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Defines the <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a431b0d36842122de9db3b4e4f00b8d7c">translationConstraintDirection()</a>. The coordinate system where <code>direction</code> is expressed depends on your class implementation. </p> </div> </div> <a class="anchor" id="a0cee03d4db5722e992c20f042601eaa5"></a><!-- doxytag: member="qglviewer::AxisPlaneConstraint::setTranslationConstraintType" ref="a0cee03d4db5722e992c20f042601eaa5" args="(Type type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void setTranslationConstraintType </td> <td>(</td> <td class="paramtype"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a> </td> <td class="paramname"> <em>type</em> )</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Sets the <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type()</a> of the <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a12ad675910ffa86fbabefff2cd6a594a">translationConstraintType()</a>. Default is <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7acc62d1576546f3245237e1b232d838b6">AxisPlaneConstraint::FREE</a>. </p> </div> </div> <a class="anchor" id="a431b0d36842122de9db3b4e4f00b8d7c"></a><!-- doxytag: member="qglviewer::AxisPlaneConstraint::translationConstraintDirection" ref="a431b0d36842122de9db3b4e4f00b8d7c" 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> translationConstraintDirection </td> <td>(</td> <td class="paramname"> )</td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Returns the direction used by the translation constraint.</p> <p>It represents the axis direction (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a1ad785f7d0b0b3a5a52cdd4385785a6b">AxisPlaneConstraint::AXIS</a>) or the plane normal (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a67572d1492c84d8d417b61e864f13f24">AxisPlaneConstraint::PLANE</a>) depending on the <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a12ad675910ffa86fbabefff2cd6a594a">translationConstraintType()</a>. It is undefined for <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7acc62d1576546f3245237e1b232d838b6">AxisPlaneConstraint::FREE</a> or <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a4b4068e636cd02a6e87e8d3920383d67">AxisPlaneConstraint::FORBIDDEN</a>.</p> <p>The AxisPlaneConstraint derived classes express this direction in different coordinate system (camera for <a class="el" href="classqglviewer_1_1CameraConstraint.html" title="An AxisPlaneConstraint defined in the camera coordinate system.">CameraConstraint</a>, local for <a class="el" href="classqglviewer_1_1LocalConstraint.html" title="An AxisPlaneConstraint defined in the Frame local coordinate system.">LocalConstraint</a>, and world for <a class="el" href="classqglviewer_1_1WorldConstraint.html" title="An AxisPlaneConstraint defined in the world coordinate system.">WorldConstraint</a>). This value can be modified with <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a2b676c088af158a52724bbbab15d1a65">setTranslationConstraintDirection()</a>. </p> </div> </div> <a class="anchor" id="a12ad675910ffa86fbabefff2cd6a594a"></a><!-- doxytag: member="qglviewer::AxisPlaneConstraint::translationConstraintType" ref="a12ad675910ffa86fbabefff2cd6a594a" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type</a> translationConstraintType </td> <td>(</td> <td class="paramname"> )</td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Returns the translation constraint <a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7">Type()</a>.</p> <p>Depending on this value, 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> will freely translate (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7acc62d1576546f3245237e1b232d838b6">AxisPlaneConstraint::FREE</a>), will only be able to translate along an axis direction (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a1ad785f7d0b0b3a5a52cdd4385785a6b">AxisPlaneConstraint::AXIS</a>), will be forced to stay into a plane (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a67572d1492c84d8d417b61e864f13f24">AxisPlaneConstraint::PLANE</a>) or will not able to translate at all (<a class="el" href="classqglviewer_1_1AxisPlaneConstraint.html#a1d1cfd8ffb84e947f82999c682b666a7a4b4068e636cd02a6e87e8d3920383d67">AxisPlaneConstraint::FORBIDDEN</a>).</p> <p>Use <a class="el" href="classqglviewer_1_1Frame.html#a24f5da9b3f4bf4e71dfad7a74a932e52">Frame::setPosition()</a> to define the position of the constrained <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> before it gets constrained. </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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </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  <a href="http://www.doxygen.org/index.html"> doxygen</a> 1.7.2 </small></address> </body> </html>