Sophie

Sophie

distrib > Mandriva > 10.0-com > i586 > by-pkgid > 9347541fe87a5ea3f3b8dbc50f660e8e > files > 264

libQGLViewer-devel-1.3.6-1mdk.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>libQGLViewer: Frame class Reference</title>
<link href="qglviewer.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.3 -->
<div class="qindex"><a class="qindex" href="../index.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Compound&nbsp;List</a> | <a class="qindex" href="functions.html">All&nbsp;functions</a> | <a class="qindex" doxygen="_cgi:http://www-imagis.imag.fr/cgi-bin/DOXYGEN/search.cgi" href="http://www-imagis.imag.fr/cgi-bin/DOXYGEN/search.cgi">Search</a></div>
<h1>Frame Class Reference</h1>A frame in 3D space (position and orientation), with possible displacement constraints.  
<a href="#_details">More...</a>
<p>
Inherited by <a class="el" href="classqglviewer_1_1SpinningFrame.html">SpinningFrame</a>.
<p>
<a href="classqglviewer_1_1Frame-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>World Coordinate position and orientation</h2></td></tr>
<tr><td colspan=2>Methods to set and restore the frame position and orientation (with respect to the <em>world</em> coordinate system).<p>
<code>position</code> is the absolute position of the origin of the frame, and <code>orientation</code> <em>then</em> defines its orientation (as a rotation around the new translated frame origin).<p>
Use translation() and rotation() to get the <em>local</em> (defined with respect to the referenceFrame()) frame characteristics. <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classqglviewer_1_1Frame.html#z33_0">Frame</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;pos, const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;orien)</td></tr>

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

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

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

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

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

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

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

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

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

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

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

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

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

<tr><td colspan=2><br><h2>Composition of frames</h2></td></tr>
<tr><td colspan=2>A frame is defined with respect to a given coordinate system. Default is the world coordinate system, corresponding to a <code>NULL</code> referenceFrame().<p>
Setting the reference frame to non <code>NULL</code> will define the frame with respect to this reference frame. Hierarchical frame structures can then be represented in a tree, whose root would be the world coordinate system (<code>NULL</code>). <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame</a> () const</td></tr>

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

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

<tr><td colspan=2><br><h2>Local frame translation and rotation</h2></td></tr>
<tr><td colspan=2>Methods to set and get the frame translation and rotation (defined with respect to the <em>reference</em> frame).<p>
A frame is defined by its translation with respect to its reference frame, and <em>then</em> by a rotation of the coordinate system around the new translated origin. These values (translation and then rotation) are hence defined with respect to the local reference frame. Use position() and orientation() to get the <em>world</em> coordinates of the frame. <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classqglviewer_1_1Frame.html#z37_0">setTranslation</a> (const float x, const float y, const float z)</td></tr>

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

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

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

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

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

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

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

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

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

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

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

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

<tr><td colspan=2><br><h2>Displacement of frames</h2></td></tr>
<tr><td colspan=2>These methods translate/rotate the Frame. The associated constraint (if defined) is satisfied. The modified() signal is emitted. <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classqglviewer_1_1Frame.html#z39_0">translate</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;t)</td></tr>

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

<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classqglviewer_1_1Frame.html#z39_2">translate</a> (float t[3])</td></tr>

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

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

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

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

<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classqglviewer_1_1Frame.html#z39_7">rotate</a> (float q[4])</td></tr>

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

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

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

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

<tr><td colspan=2><br><h2>Coordinate system transformation of 3D points</h2></td></tr>
<tr><td colspan=2>A frame is as a new coordinate system, defined with respect to a reference frame (the world coordinate system by default, see the "Composition of frame" section).<p>
The coordinatesOf() (resp. inverseCoordinatesOf()) functions transform a 3D point from (resp. to) the world coordinates system. This section defines the 3D <em>point</em> transformation functions. See the Coordinate system transformation of vectors below for the transformation of 3D <em>vectors</em>. The difference between the two sets of functions is simple : for vectors, only the rotational part of the transformations is taken into account, while translation is also considered for 3D points.<p>
When <em>local</em> is prepended to the names of the functions, the functions simply transform from (and to) the reference frame.<p>
When <em>In</em> (resp. From) is appended to the names, the functions transform from (resp. To) the frame that is given as an argument. The frame does not need to be in the same branch or the hierarchical tree, and can be <code>NULL</code> (the world coordinates system).<p>
Combining any of these functions with its inverse (in any order) leads to the identity.<p>
See the <a href="../examples/frameTransform.html">frameTransform</a> example for an illustration of some these functions. <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classqglviewer_1_1Frame.html#z41_0">coordinatesOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const</td></tr>

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

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

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

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

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

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

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

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

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

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

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

<tr><td colspan=2><br><h2>Coordinate system transformation of vectors</h2></td></tr>
<tr><td colspan=2>A frame is as a new coordinate system, defined with respect to a reference frame (the world coordinate system by default, see the "Composition of frame" section).<p>
The transformOf() (resp. inverseTransformOf()) functions transform a 3D <em>vector</em> from (resp. to) the world coordinates system. This section defines the 3D <em>vector</em> transformation functions. See the Coordinate system transformation of 3D points above for the transformation of 3D <em>points</em>. The difference between the two sets of functions is simple : for vectors, only the rotational part of the transformations is taken into account, while translation is also considered for 3D points.<p>
The length of the resulting transformed vector is identical to the one of the source vector for all the described functions.<p>
When <em>local</em> is prepended to the names of the functions, the functions simply transform from (and to) the reference frame.<p>
When <em>In</em> (resp. From) is appended to the names, the functions transform from (resp. To) the frame that is given as an argument. The frame does not need to be in the same branch or the hierarchical tree, and can be <code>NULL</code> (the world coordinates system).<p>
Combining any of these functions with its inverse (in any order) leads to the identity. <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classqglviewer_1_1Frame.html#z43_0">transformOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const</td></tr>

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

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

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

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

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

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

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

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

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

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

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

<tr><td colspan=2><br><h2>Constraints on the displacement</h2></td></tr>
<tr><td colspan=2>A constraint can be attached to the frame to limit its displacement. The translate() and rotate() function will satisfy this constraint. Default value is a non-constraint constraint. See the Constraint and derived class documentation. <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint</a> () const</td></tr>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
A frame in 3D space (position and orientation), with possible displacement constraints. 
<p>
A <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> is a 3D coordinate system, represented by a <a class="el" href="classqglviewer_1_1Frame.html#z33_10">position()</a> and an <a class="el" href="classqglviewer_1_1Frame.html#z33_12">orientation()</a>. The order of these transformations is important : in libQGLViewer, the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> is <em>firstly</em> translated <em>and</em> <em>then</em> rotated around the new translated origin. A <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> is useful to define the position and orientation of a 3D rigid object :<p>
<div class="fragment"><pre>  <a class="code" href="classqglviewer_1_1Frame.html#a0">Frame</a> fr;
  fr.setPosition(1,0,3);
  fr.setOrientationAxisAngle(0,1,0, M_PI/2); <span class="comment">// Rotation around the Y axis.</span>
  glPushMatrix();
  glMultMatrixd(fr.matrix());
  <span class="comment">// Draw your object here</span>
  glPopMatrix();
</pre></div><p>
Many functions are provided to transform a 3D point from one coordinate system to an other : see <a class="el" href="classqglviewer_1_1Frame.html#z41_0">coordinatesOf()</a>, <a class="el" href="classqglviewer_1_1Frame.html#z41_1">inverseCoordinatesOf()</a>, <a class="el" href="classqglviewer_1_1Frame.html#z41_4">coordinatesOfIn()</a>, <a class="el" href="classqglviewer_1_1Frame.html#z41_5">coordinatesOfFrom()</a>...<p>
You may also want to transform a 3D <em>vector</em> from one frame to an other, which corresponds to applying only the rotational part of the frame transformation : see <a class="el" href="classqglviewer_1_1Frame.html#z43_0">transformOf()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z43_1">inverseTransformOf()</a>.<p>
See the <a href="../examples/frameTransform.html">frameTransform</a> example for an illustration.<p>
The <a class="el" href="classqglviewer_1_1Frame.html#z37_10">translation()</a> and the <a class="el" href="classqglviewer_1_1Frame.html#z37_12">rotation()</a> that are encapsulated in a <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> can also be used to represent a <em>solid</em> <em>transformation</em> of space. Such a solid transformation can also be interpreted as a change of coordinate system, and the coordinate system conversion functions actually allow you to use a <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> as a solid transformation. Use <a class="el" href="classqglviewer_1_1Frame.html#z41_1">inverseCoordinatesOf()</a> (resp. <a class="el" href="classqglviewer_1_1Frame.html#z41_0">coordinatesOf()</a>) to apply the transformation (resp. its inverse). Note the inversion.<p>
<h3>Hierarchy of frames</h3>
<p>
The position and the rotation of a <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> are actually defined with respect to a <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a>. The default <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> is the world coordinate system, but this value can be set to any other frame using <a class="el" href="classqglviewer_1_1Frame.html#z35_1">setReferenceFrame()</a>. When a <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> is specified, one must differentiate :<p>
<ul>
<li>the <em>local</em> <a class="el" href="classqglviewer_1_1Frame.html#z37_10">translation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z37_12">rotation()</a>, defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> and</li>
</ul>
<ul>
<li>the <em>global</em> <a class="el" href="classqglviewer_1_1Frame.html#z33_10">position()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z33_12">orientation()</a>, defined with respect to the world coordinate system.</li>
</ul>
This terminology for <em>local</em> (<a class="el" href="classqglviewer_1_1Frame.html#z37_10">translation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z37_12">rotation()</a>) and <em>global</em> (<a class="el" href="classqglviewer_1_1Frame.html#z33_10">position()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z33_12">orientation()</a>) definition is used in all the functions' names and should be sufficient to prevent ambiguities. These notions are identical when there is no <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> (a <code>NULL</code> value, corresponding to the world coordinate system).<p>
A <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> is actually defined by its <a class="el" href="classqglviewer_1_1Frame.html#z37_10">translation()</a> with respect to its <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a>, and <em>then</em> by a <a class="el" href="classqglviewer_1_1Frame.html#z37_12">rotation()</a> of the coordinate system around the new translated origin.<p>
Setting a <code>NULL</code> reference frame resets the world coordinate system as the <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> (default value). The world coordinate system is the one you are in at the beginning of the <a class="el" href="classQGLViewer.html#b6">QGLViewer::draw()</a> function.<p>
Frames can hence easily be organized in a tree hierarchy, which root is the world coordinate system. A loop in the hierarchy would result in an inconsistent (multiple) frame definition. <a class="el" href="classqglviewer_1_1Frame.html#z35_2">settingAsReferenceFrameWillCreateALoop()</a> checks this and prevents <a class="el" href="classqglviewer_1_1Frame.html#z35_1">setReferenceFrame()</a> from creating such a loop.<p>
This frame hierarchy is used in methods like <a class="el" href="classqglviewer_1_1Frame.html#z41_4">coordinatesOfIn()</a>, <a class="el" href="classqglviewer_1_1Frame.html#z41_5">coordinatesOfFrom()</a>... which allow coordinates (or vector) conversion from a frame to any other one (including the world coordinate system).<p>
<dl compact><dt><b>Attention:</b></dt><dd>However, one must note that this hierarchical representation is internal to the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> classes. When the frames represent openGL coordinates system, one should map this hierarchical representation to the openGL GL_MODELVIEW matrix stack. If we define this following frame hierarchy: <div class="fragment"><pre>  <a class="code" href="classqglviewer_1_1Frame.html#a0">Frame</a>* body     = <span class="keyword">new</span> <a class="code" href="classqglviewer_1_1Frame.html#a0">Frame</a>();
  Frame* leftArm  = <span class="keyword">new</span> <a class="code" href="classqglviewer_1_1Frame.html#a0">Frame</a>();
  Frame* rightArm = <span class="keyword">new</span> <a class="code" href="classqglviewer_1_1Frame.html#a0">Frame</a>();
  leftArm-&gt;setReferenceFrame(body);
  rightArm-&gt;setReferenceFrame(body);
</pre></div>Then the openGL drawing code associated to this frame representation should look like: <div class="fragment"><pre>  draw()
  {
    glPushMatrix();
    glMultMatrixd(body-&gt;matrix());
    drawBody();

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

    glPushMatrix();
    glMultMatrixd(rightArm-&gt;matrix());
    drawArm();
    glPopMatrix();
    
    glPopMatrix();
  }
</pre></div>Note how we use imbricated glPushMatrix() and glPopMatrix() to represent our frame hierarchy. leftArm and rightArm are hence both defined with respect to the body coordinate system, as in the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> hierarchy.</dd></dl>
<h3>Constraints</h3>
<p>
An interesting feature of Frames is that their displacement can be <em>constrained</em>. When a <a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a> is attached to a <a class="el" href="classqglviewer_1_1Frame.html">Frame</a>, it <em>filters</em> the input of <a class="el" href="classqglviewer_1_1Frame.html#z39_0">translate()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z39_5">rotate()</a>, and only the resulting filtered motion is applied to the frame. The default <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a> is <code>NULL</code> and no filter is applied. Use <a class="el" href="classqglviewer_1_1Frame.html#z45_1">setConstraint()</a> to attach a constraint to a frame.<p>
Constraints are especially usefull for the <a class="el" href="classqglviewer_1_1ManipulatedFrame.html">ManipulatedFrame</a> instances, in order to forbid some mouse motions. See the <a href="../examples/constrainedFrame.html">constrainedFrame</a>, <a href="../examples/constrainedCamera.html">constrainedCamera</a> and <a href="../examples/luxo.html">luxo</a> examples for an illustration.<p>
New constraints can very easily be implemented by deriving a class from the <a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a> class or any of its derived classes. All you need is to provide your own implementation of the <a class="el" href="classqglviewer_1_1Constraint.html#a1">Constraint::constrainTranslation(qglviewer::Vec&amp;, Frame* const)</a> and <a class="el" href="classqglviewer_1_1Constraint.html#a2">Constraint::constrainRotation(qglviewer::Quaternion&amp; , Frame* const)</a> functions.<p>
Classical constraints are provided for convenience : see the <a class="el" href="classqglviewer_1_1LocalConstraint.html">LocalConstraint</a>, <a class="el" href="classqglviewer_1_1WorldConstraint.html">WorldConstraint</a> and <a class="el" href="classqglviewer_1_1CameraConstraint.html">CameraConstraint</a> classes for axial and plane constraints. The <a class="el" href="classqglviewer_1_1TriangleSetConstraint.html">TriangleSetConstraint</a> is very useful for walk through applications, in order to force the camera to remain on a given path.<p>
<h3>Derived classes</h3>
<p>
The <a class="el" href="classqglviewer_1_1ManipulatedFrame.html">ManipulatedFrame</a> class inherits <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> and implements a mouse motion convertion, so that a frame can be manipulated with the mouse. <a class="el" href="classqglviewer_1_1SpinningFrame.html">SpinningFrame</a> are animated Frames with a rotational motion. 
<p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a name="a0" doxytag="qglviewer::Frame::Frame"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Creates a default frame. Positioned in (0,0,0), with an identity rotation (0,0,0,1). The <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> is set to <code>NULL</code> (meaning world coordinate system). No attached constraint.     </td>
  </tr>
</table>
<a name="a1" doxytag="qglviewer::Frame::~Frame"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> virtual ~<a class="el" href="classqglviewer_1_1Frame.html">Frame</a> </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [inline, virtual]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Virtual destructor. Empty.     </td>
  </tr>
</table>
<a name="a3" doxytag="qglviewer::Frame::Frame"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>f</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Copy constructor. <a class="el" href="classqglviewer_1_1Frame.html#z37_10">translation()</a>, <a class="el" href="classqglviewer_1_1Frame.html#z37_12">rotation()</a>, <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> are copied.     </td>
  </tr>
</table>
<a name="z33_0" doxytag="qglviewer::Frame::Frame"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>pos</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>orien</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"><code> [explicit]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Creates an initialized frame, with a position and an orientation. The reference frame is set to NULL (meaning world coordinate system).     </td>
  </tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a name="z47_7" doxytag="qglviewer::Frame::alignWithFrame"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void alignWithFrame </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *const&nbsp;</td>
          <td class="mdname" nowrap> <em>fr</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>bool&nbsp;</td>
          <td class="mdname" nowrap> <em>move</em> = false, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float&nbsp;</td>
          <td class="mdname" nowrap> <em>threshold</em> = 0.85f</td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Align the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> with an other <a class="el" href="classqglviewer_1_1Frame.html">Frame</a>, so that two of their axis are parallel.<p>
If the X, Y and Z axis of the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> is almost parallel to any of the X, Y, or Z axis of <code>fr</code>, the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> is rotated so that these two axis actually become parallel.<p>
If, after this first rotation, two other axis are also almost parallel, a second alignment is performed. The two frames then have identical orientations, up to rotations of 90 degrees.<p>
<code>threshold</code> measure how close two axis must be to be aligned. It is compared with the absolute values of the dot product of the normalized axis.<p>
When <code>move</code> is set to <code>true</code>, the frame position will also be affected by the alignment. The new position is such that the <code>fr's</code> <a class="el" href="classqglviewer_1_1Frame.html#z33_10">position()</a> is identical to the previous one (as computed with <a class="el" href="classqglviewer_1_1Frame.html#z41_0">coordinatesOf()</a>).<p>
<code>fr</code> may be NULL and then represents the world coordinate system (same convention than for the <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a>).<p>
<a class="el" href="classqglviewer_1_1MouseGrabber.html#z81_1">ManipulatedFrame::mouseDoubleClickEvent()</a> calls this function when the left mouse button is double clicked.     </td>
  </tr>
</table>
<a name="z45_0" doxytag="qglviewer::Frame::constraint"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a>* constraint </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const<code> [inline]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns the current constraint. Result is of type <a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a> and <code>dynamic_cast</code> should be used to convert it to a derived class.<p>
A <code>NULL</code> value means that no <a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a> is applied to filter <a class="el" href="classqglviewer_1_1Frame.html#z39_0">translate()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z39_5">rotate()</a> (default value).     </td>
  </tr>
</table>
<a name="z41_0" doxytag="qglviewer::Frame::coordinatesOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> coordinatesOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>src</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
This returns the <em>frame</em> coordinates of a point <code>src</code> defined in the <em>world</em> coordinate system (converts from world to frame).<p>
If <code>src</code> is actually a vector, use the vector equivalent function <a class="el" href="classqglviewer_1_1Frame.html#z43_0">transformOf()</a> where only the rotational part of the transformation is taken into account.<p>
<a class="el" href="classqglviewer_1_1Frame.html#z41_1">inverseCoordinatesOf()</a> performs the inverse transformation.<p>
See the <a href="../examples/frameTransform.html">frameTransform</a> example for an illustration.     </td>
  </tr>
</table>
<a name="z41_5" doxytag="qglviewer::Frame::coordinatesOfFrom"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> coordinatesOfFrom </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>from</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
This returns the <em>frame</em> coordinate system coordinates of the point whose position in the <code>from</code> coordinate system is <code>src</code> (converts from <code>from</code> to <em>frame</em>). <code>from</code> and the frame do not need to be located in the same branch of the frame tree hierarchy.<p>
If <code>src</code> is actually a vector, use the vector equivalent function <a class="el" href="classqglviewer_1_1Frame.html#z43_5">transformOfFrom()</a> where only the rotational part of the transformation is taken into account.<p>
<a class="el" href="classqglviewer_1_1Frame.html#z41_4">coordinatesOfIn()</a> performs the inverse transformation.     </td>
  </tr>
</table>
<a name="z41_4" doxytag="qglviewer::Frame::coordinatesOfIn"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> coordinatesOfIn </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>in</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
This returns the <code>in</code> coordinate system coordinates of the point whose position in the <em>frame</em> coordinate system is <code>src</code> (converts from frame to <code>in</code>). <code>in</code> and the frame do not need to be located in the same branch of the frame tree hierarchy.<p>
If <code>src</code> is actually a vector, use the vector equivalent function <a class="el" href="classqglviewer_1_1Frame.html#z43_4">transformOfIn()</a> where only the rotational part of the transformation is taken into account.<p>
<a class="el" href="classqglviewer_1_1Frame.html#z41_5">coordinatesOfFrom()</a> performs the inverse transformation.     </td>
  </tr>
</table>
<a name="z49_0" doxytag="qglviewer::Frame::domElement"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> QDomElement domElement </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const QString &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>name</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>QDomDocument &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>doc</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const<code> [virtual]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Creates an XML QDomElement that represents the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a>. <code>name</code> is the name of the QDomElement tag. You need to provide the QDomDocument <code>doc</code> that will hold the resulting element. Typical usage would be: <div class="fragment"><pre> QDomDocument doc(<span class="stringliteral">"myDocument"</span>);
 Frame sunFrame;
 <span class="comment">// ...</span>
 anyNode.addElement(sunFrame.domElement(<span class="stringliteral">"sunFrame"</span>, doc));
 <span class="comment">// ...</span>
</pre></div>Use <a class="el" href="classqglviewer_1_1Frame.html#z49_1">initFromDOMElement()</a> to restore the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> state from the resulting domElement.<p>
See also <a class="el" href="classqglviewer_1_1Camera.html#z23_0">Camera::domElement()</a>, <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#z59_0">KeyFrameInterpolator::domElement()</a>...<p>
<dl compact><dt><b>Attention:</b></dt><dd>The <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> are not (yet) saved in the domElement. </dd></dl>

<p>
Reimplemented in <a class="el" href="classqglviewer_1_1ManipulatedCameraFrame.html#z63_0">ManipulatedCameraFrame</a>, <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#z71_0">ManipulatedFrame</a>, and <a class="el" href="classqglviewer_1_1SpinningFrame.html#a2">SpinningFrame</a>.    </td>
  </tr>
</table>
<a name="z41_6" doxytag="qglviewer::Frame::getCoordinatesOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getCoordinatesOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float&nbsp;</td>
          <td class="mdname" nowrap> <em>res</em>[3]</td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z41_0">coordinatesOf()</a>, but with float parameters.     </td>
  </tr>
</table>
<a name="z41_11" doxytag="qglviewer::Frame::getCoordinatesOfFrom"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getCoordinatesOfFrom </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float&nbsp;</td>
          <td class="mdname" nowrap> <em>res</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>from</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z41_5">coordinatesOfFrom()</a>, but with float parameters.     </td>
  </tr>
</table>
<a name="z41_10" doxytag="qglviewer::Frame::getCoordinatesOfIn"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getCoordinatesOfIn </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float&nbsp;</td>
          <td class="mdname" nowrap> <em>res</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>in</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z41_4">coordinatesOfIn()</a>, but with float parameters.     </td>
  </tr>
</table>
<a name="z41_7" doxytag="qglviewer::Frame::getInverseCoordinatesOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getInverseCoordinatesOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float&nbsp;</td>
          <td class="mdname" nowrap> <em>res</em>[3]</td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z41_1">inverseCoordinatesOf()</a>, but with float parameters.     </td>
  </tr>
</table>
<a name="z43_7" doxytag="qglviewer::Frame::getInverseTransformOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getInverseTransformOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float&nbsp;</td>
          <td class="mdname" nowrap> <em>res</em>[3]</td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z43_1">inverseTransformOf()</a>, but with float parameters.     </td>
  </tr>
</table>
<a name="z41_8" doxytag="qglviewer::Frame::getLocalCoordinatesOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getLocalCoordinatesOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float&nbsp;</td>
          <td class="mdname" nowrap> <em>res</em>[3]</td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z41_2">localCoordinatesOf()</a>, but with float parameters.     </td>
  </tr>
</table>
<a name="z41_9" doxytag="qglviewer::Frame::getLocalInverseCoordinatesOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getLocalInverseCoordinatesOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float&nbsp;</td>
          <td class="mdname" nowrap> <em>res</em>[3]</td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z41_3">localInverseCoordinatesOf()</a>, but with float parameters.     </td>
  </tr>
</table>
<a name="z43_9" doxytag="qglviewer::Frame::getLocalInverseTransformOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getLocalInverseTransformOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float&nbsp;</td>
          <td class="mdname" nowrap> <em>res</em>[3]</td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z43_3">localInverseTransformOf()</a>, but with float parameters.     </td>
  </tr>
</table>
<a name="z43_8" doxytag="qglviewer::Frame::getLocalTransformOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getLocalTransformOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float&nbsp;</td>
          <td class="mdname" nowrap> <em>res</em>[3]</td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z43_2">localTransformOf()</a>, but with float parameters.     </td>
  </tr>
</table>
<a name="z47_2" doxytag="qglviewer::Frame::getMatrix"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getMatrix </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">GLdouble&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>m</em>[16]          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
double[16] parameter version of <a class="el" href="classqglviewer_1_1Frame.html#z47_0">matrix()</a>. See also <a class="el" href="classqglviewer_1_1Frame.html#z47_4">getWorldMatrix()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z47_3">worldMatrix()</a>. This function is very similar to <a class="el" href="classqglviewer_1_1Quaternion.html#z123_1">Quaternion::getMatrix()</a>, it simply includes the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> translation in the last line.     </td>
  </tr>
</table>
<a name="z47_1" doxytag="qglviewer::Frame::getMatrix"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getMatrix </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">GLdouble&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>m</em>[4][4]          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
double[4][4] parameter version of <a class="el" href="classqglviewer_1_1Frame.html#z47_0">matrix()</a>. See also <a class="el" href="classqglviewer_1_1Frame.html#z47_4">getWorldMatrix()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z47_3">worldMatrix()</a>. This function is very similar to <a class="el" href="classqglviewer_1_1Quaternion.html#z123_1">Quaternion::getMatrix()</a>, it simply includes the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> translation in the last line.<p>
<dl compact><dt><b>Note:</b></dt><dd>The scaling factor of the 4x4 matrix is set to 1.0. </dd></dl>
    </td>
  </tr>
</table>
<a name="z33_13" doxytag="qglviewer::Frame::getOrientation"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getOrientation </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>q0</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>q1</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>q2</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>q3</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Get the current orientation of the frame (same as <a class="el" href="classqglviewer_1_1Frame.html#z33_12">orientation()</a>). Parameters are the orientation <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> values. See also <a class="el" href="classqglviewer_1_1Frame.html#z33_4">setOrientation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z33_7">setOrientationAxisAngle()</a>.     </td>
  </tr>
</table>
<a name="z33_11" doxytag="qglviewer::Frame::getPosition"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getPosition </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>x</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>y</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>z</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Get the current position of the frame (same as <a class="el" href="classqglviewer_1_1Frame.html#z33_10">position()</a>). See also <a class="el" href="classqglviewer_1_1Frame.html#z33_1">setPosition()</a>.     </td>
  </tr>
</table>
<a name="z37_11" doxytag="qglviewer::Frame::getRotation"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getRotation </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>x</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>y</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>z</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>a</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Get the current rotation of the frame (same as <a class="el" href="classqglviewer_1_1Frame.html#z37_12">rotation()</a>). Parameters are the rotation <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> values. See also <a class="el" href="classqglviewer_1_1Frame.html#z37_3">setRotation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z37_6">setRotationAxisAngle()</a>.     </td>
  </tr>
</table>
<a name="z43_6" doxytag="qglviewer::Frame::getTransformOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getTransformOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float&nbsp;</td>
          <td class="mdname" nowrap> <em>res</em>[3]</td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z43_0">transformOf()</a>, but with float parameters.     </td>
  </tr>
</table>
<a name="z43_11" doxytag="qglviewer::Frame::getTransformOfFrom"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getTransformOfFrom </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float&nbsp;</td>
          <td class="mdname" nowrap> <em>res</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>from</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z43_5">transformOfFrom()</a>, but with float parameters.     </td>
  </tr>
</table>
<a name="z43_10" doxytag="qglviewer::Frame::getTransformOfIn"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getTransformOfIn </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float&nbsp;</td>
          <td class="mdname" nowrap> <em>res</em>[3], </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>in</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z43_4">transformOfIn()</a>, but with float parameters.     </td>
  </tr>
</table>
<a name="z37_9" doxytag="qglviewer::Frame::getTranslation"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getTranslation </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>x</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>y</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>z</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Get the current local translation of the frame (same as <a class="el" href="classqglviewer_1_1Frame.html#z37_10">translation()</a>). See also <a class="el" href="classqglviewer_1_1Frame.html#z37_0">setTranslation()</a>.     </td>
  </tr>
</table>
<a name="z47_5" doxytag="qglviewer::Frame::getWorldMatrix"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getWorldMatrix </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">GLdouble&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>m</em>[16]          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
float[16] parameter version of <a class="el" href="classqglviewer_1_1Frame.html#z47_3">worldMatrix()</a>. See also <a class="el" href="classqglviewer_1_1Frame.html#z47_1">getMatrix()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z47_0">matrix()</a>.     </td>
  </tr>
</table>
<a name="z47_4" doxytag="qglviewer::Frame::getWorldMatrix"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void getWorldMatrix </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">GLdouble&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>m</em>[4][4]          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
float[4][4] parameter version of <a class="el" href="classqglviewer_1_1Frame.html#z47_3">worldMatrix()</a>. See also <a class="el" href="classqglviewer_1_1Frame.html#z47_1">getMatrix()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z47_0">matrix()</a>.     </td>
  </tr>
</table>
<a name="z49_1" doxytag="qglviewer::Frame::initFromDOMElement"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void initFromDOMElement </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const QDomElement &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>de</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [virtual]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Restore the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> state from a QDomElement created by <a class="el" href="classqglviewer_1_1Frame.html#z49_0">domElement()</a>. See <a class="el" href="classqglviewer_1_1Vec.html#z145_1">Vec::initFromDOMElement()</a> and <a class="el" href="classqglviewer_1_1Quaternion.html#z129_1">Quaternion::initFromDOMElement()</a> for details.<p>
<dl compact><dt><b>Attention:</b></dt><dd>The <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> are not (yet) restored from the domElement. </dd></dl>

<p>
Reimplemented in <a class="el" href="classqglviewer_1_1ManipulatedCameraFrame.html#z63_1">ManipulatedCameraFrame</a>, <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#z71_1">ManipulatedFrame</a>, and <a class="el" href="classqglviewer_1_1SpinningFrame.html#a3">SpinningFrame</a>.    </td>
  </tr>
</table>
<a name="z41_1" doxytag="qglviewer::Frame::inverseCoordinatesOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> inverseCoordinatesOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>src</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
This returns the <em>world</em> coordinates of the point whose position in the <em>frame</em> coordinate system is <code>src</code> (converts from frame to world).<p>
If <code>src</code> is actually a vector, use the vector equivalent function <a class="el" href="classqglviewer_1_1Frame.html#z43_1">inverseTransformOf()</a> where only the rotational part of the transformation is taken into account.<p>
<a class="el" href="classqglviewer_1_1Frame.html#z41_0">coordinatesOf()</a> performs the inverse transformation.<p>
See the <a href="../examples/frameTransform.html">frameTransform</a> example for an illustration.     </td>
  </tr>
</table>
<a name="z43_1" doxytag="qglviewer::Frame::inverseTransformOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> inverseTransformOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>src</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
This returns the <em>world</em> transform of the vector whose coordinates in the <em>frame</em> coordinate system is <code>src</code> (converts from frame to world).<p>
For vectors, only the rotational part of the transformation is taken into account, see <a class="el" href="classqglviewer_1_1Frame.html#z41_1">inverseCoordinatesOf()</a> for the point equivalent function.<p>
<a class="el" href="classqglviewer_1_1Frame.html#z43_0">transformOf()</a> performs the inverse transformation.     </td>
  </tr>
</table>
<a name="z41_2" doxytag="qglviewer::Frame::localCoordinatesOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> localCoordinatesOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>src</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns the <em>frame</em> coordinates of a point <code>src</code> defined in the reference frame (default is the world coordinates system, see <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a>) (converts from reference frame to frame coordinates).<p>
If <code>src</code> is actually a vector, use the vector equivalent function <a class="el" href="classqglviewer_1_1Frame.html#z43_2">localTransformOf()</a> where only the rotational part of the transformation is taken into account.<p>
<a class="el" href="classqglviewer_1_1Frame.html#z41_3">localInverseCoordinatesOf()</a> performs the inverse transformation.     </td>
  </tr>
</table>
<a name="z41_3" doxytag="qglviewer::Frame::localInverseCoordinatesOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> localInverseCoordinatesOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>src</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns the <em>reference</em> frame coordinates (default is the world coordinates system, see <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a>) of a point <code>src</code> defined in the <em>frame</em> coordinate system (converts from frame to reference frame coordinates).<p>
If <code>src</code> is actually a vector, use the vector equivalent function <a class="el" href="classqglviewer_1_1Frame.html#z43_3">localInverseTransformOf()</a> where only the rotational part of the transformation is taken into account.<p>
<a class="el" href="classqglviewer_1_1Frame.html#z41_2">localCoordinatesOf()</a> performs the inverse transformation.     </td>
  </tr>
</table>
<a name="z43_3" doxytag="qglviewer::Frame::localInverseTransformOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> localInverseTransformOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>src</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns the <em>reference</em> frame transform (default is the world coordinates system, see <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a>) of a vector <code>src</code> defined in the <em>frame</em> coordinate system (converts from frame to reference frame).<p>
For vectors, only the rotational part of the transformation is taken into account, see <a class="el" href="classqglviewer_1_1Frame.html#z41_2">localCoordinatesOf()</a> for the point equivalent function.<p>
<a class="el" href="classqglviewer_1_1Frame.html#z43_2">localTransformOf()</a> performs the inverse transformation.     </td>
  </tr>
</table>
<a name="z43_2" doxytag="qglviewer::Frame::localTransformOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> localTransformOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>src</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns the <em>frame</em> transform of a vector <code>src</code> defined in the reference frame (default is the world coordinates system, see <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a>) (converts from reference frame to frame).<p>
For vectors, only the rotational part of the transformation is taken into account, see <a class="el" href="classqglviewer_1_1Frame.html#z41_2">localCoordinatesOf()</a> for the point equivalent function.<p>
<a class="el" href="classqglviewer_1_1Frame.html#z43_3">localInverseTransformOf()</a> performs the inverse transformation.     </td>
  </tr>
</table>
<a name="z47_0" doxytag="qglviewer::Frame::matrix"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> const GLdouble * matrix </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns the current 4x4 frame matrix. Can be used with <code>glMultMatrixd</code>(fr.matrix()) or <code>glLoadMatrixd</code>(fr.matrix()). This matrix only represents the <em>local</em> transformation (see <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> for frame composition). Use <a class="el" href="classqglviewer_1_1Frame.html#z47_4">getWorldMatrix()</a> or <a class="el" href="classqglviewer_1_1Frame.html#z47_3">worldMatrix()</a> to have the full frame transformation matrix (i.e. from the world coordinate system).<p>
<a class="el" href="classqglviewer_1_1Frame.html#z47_3">worldMatrix()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z47_0">matrix()</a> will return identical results when the frame is not composed (<a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> == NULL). See also <a class="el" href="classqglviewer_1_1Frame.html#z47_1">getMatrix()</a>.<p>
<dl compact><dt><b>Attention:</b></dt><dd>The matrix is given in OpenGL format (row-major order) and is the transpose of the actual mathematical European representation. See the difference between <a class="el" href="classqglviewer_1_1Quaternion.html#z123_1">Quaternion::getMatrix()</a> and <a class="el" href="classqglviewer_1_1Quaternion.html#z123_3">Quaternion::getRotationMatrix()</a>.<p>
The result is only valid until the next call to <a class="el" href="classqglviewer_1_1Frame.html#z47_0">matrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#z47_1">getMatrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#z47_3">worldMatrix()</a> or <a class="el" href="classqglviewer_1_1Frame.html#z47_4">getWorldMatrix()</a>. Use it immediately (as in <code>glLoadMatrixd</code>(fr.matrix()) or <code>glLoadMatrixd</code>(fr.matrix())) or store it in an other variable. Consider using <a class="el" href="classqglviewer_1_1Frame.html#z47_1">getMatrix()</a> if needed.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>The scaling factor of the 4x4 matrix is set to 1.0. </dd></dl>
    </td>
  </tr>
</table>
<a name="l0" doxytag="qglviewer::Frame::modified"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void modified </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [signal]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
This signal is emitted whenever the position or the orientation of the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> is modified. Connect this signal to any object that must be notified. <div class="fragment"><pre>    QObject::connect(myFrame, SIGNAL(<a class="code" href="classqglviewer_1_1Frame.html#l0">modified</a>()), myObject, SLOT(update()));
</pre></div><p>
This signal can also be connected to <em>all</em> the viewers using <a class="el" href="classQGLViewer.html#z111_2">QGLViewer::connectSignalToAllViewers()</a>.<p>
<dl compact><dt><b>Note:</b></dt><dd>If your <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> is part of a <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> hierarchy (see <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a>), a modification of one of the parents of this <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> will <em>not</em> emit this <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> <a class="el" href="classqglviewer_1_1Frame.html#l0">modified()</a> signal. Use code like this to change this behavior (you can do this recursively for all the <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> until the <code>NULL</code> world root frame is encountered): <div class="fragment"><pre>    <span class="comment">// Emits the frame modified() signal when its referenceFrame() is modified().</span>
    connect(myFrame-&gt;referenceFrame(), SIGNAL(<a class="code" href="classqglviewer_1_1Frame.html#l0">modified</a>()), myFrame, SIGNAL(<a class="code" href="classqglviewer_1_1Frame.html#l0">modified</a>()));
</pre></div></dd></dl>
<dl compact><dt><b>Attention:</b></dt><dd>Connecting this signal to a QGLWidget::updateGL() function (or a function that calls it) will prevent you from modifying the frame <em>inside</em> your <a class="el" href="classQGLViewer.html#b6">QGLViewer::draw()</a> function as it would result in an infinite loop. </dd></dl>
    </td>
  </tr>
</table>
<a name="a2" doxytag="qglviewer::Frame::operator="></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> &amp; operator= </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>f</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
operator= : <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a> pointers are copied.     </td>
  </tr>
</table>
<a name="z33_12" doxytag="qglviewer::Frame::orientation"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> orientation </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns the current frame orientation (defined with respect to the world coordinate system). See <a class="el" href="classqglviewer_1_1Frame.html#z33_4">setOrientation()</a>.     </td>
  </tr>
</table>
<a name="z33_10" doxytag="qglviewer::Frame::position"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> position </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const<code> [inline]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns the current frame origin position (defined in the world coordinate system). See <a class="el" href="classqglviewer_1_1Frame.html#z33_1">setPosition()</a>.     </td>
  </tr>
</table>
<a name="z47_8" doxytag="qglviewer::Frame::projectOnLine"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void projectOnLine </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>origin</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>dir</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Translates the frame so that its position is on the line defined by <code>origin</code> and <code>axis</code>. Simply uses an orthogonal projection.     </td>
  </tr>
</table>
<a name="z35_0" doxytag="qglviewer::Frame::referenceFrame"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Frame.html">Frame</a>* referenceFrame </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const<code> [inline]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns the current reference frame, defined with <a class="el" href="classqglviewer_1_1Frame.html#z35_1">setReferenceFrame()</a>.<p>
The frame is "child" of the <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a>, meaning that its position and orientation are defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a>. A <code>NULL</code> <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> (default value) means that the frame is defined is the world coordinate system. Chaining frames like this allows you to easily create a hierarchy of frames.<p>
Convenient functions allow you to convert 3D coordinates from one frame to an other : <a class="el" href="classqglviewer_1_1Frame.html#z41_0">coordinatesOf()</a>, <a class="el" href="classqglviewer_1_1Frame.html#z41_2">localCoordinatesOf()</a>, <a class="el" href="classqglviewer_1_1Frame.html#z41_4">coordinatesOfIn()</a> and their inverse functions.<p>
Vectors can also be converted from one frame to an other using <a class="el" href="classqglviewer_1_1Frame.html#z43_0">transformOf()</a>, transformOfIn, <a class="el" href="classqglviewer_1_1Frame.html#z43_2">localTransformOf()</a> and the inverse functions.<p>
A warning is printed if setting <code>fr</code> as a reference frame would create a loop in the frame hierarchy (see <a class="el" href="classqglviewer_1_1Frame.html#z35_2">settingAsReferenceFrameWillCreateALoop()</a>), as this hierarchy needs to be a tree.     </td>
  </tr>
</table>
<a name="z39_9" doxytag="qglviewer::Frame::rotate"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void rotate </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>x</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>y</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>z</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>a</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z39_5">rotate()</a>, but with float parameters (<a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> values). Actual rotation may differ from these values in order to satisfy the rotation <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a>. Use the non-const parameter version of this function to get the filtered values back.     </td>
  </tr>
</table>
<a name="z39_8" doxytag="qglviewer::Frame::rotate"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void rotate </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>x</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>y</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>z</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>a</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z39_5">rotate()</a>, but with float parameters (<a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> values). Parameters may be modified to satisfy rotation <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a>. See also the const parameter version of this function.     </td>
  </tr>
</table>
<a name="z39_7" doxytag="qglviewer::Frame::rotate"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void rotate </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">float&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>q</em>[4]          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z39_5">rotate()</a>, but parameter is given as a float[4]. <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> <code>q</code> may be modified to satisfy rotation <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a>.     </td>
  </tr>
</table>
<a name="z39_6" doxytag="qglviewer::Frame::rotate"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void rotate </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>q</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Compose current frame rotation with <code>q</code> (R = R*q). The actual rotation may differ from <code>q</code> in order to satisfy the rotation <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a>. Consider using the non-const parameter version of this function to get the filtered values back.     </td>
  </tr>
</table>
<a name="z39_5" doxytag="qglviewer::Frame::rotate"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void rotate </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>q</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Compose current frame rotation with <code>q</code> (R = R*q). <code>q</code> may be modified to satisfy rotation <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a>. Use <a class="el" href="classqglviewer_1_1Frame.html#z45_1">setConstraint()</a> to (un)set rotational constraints. Emits the <a class="el" href="classqglviewer_1_1Frame.html#l0">modified()</a> signal.     </td>
  </tr>
</table>
<a name="z39_11" doxytag="qglviewer::Frame::rotateAroundPoint"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void rotateAroundPoint </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>q</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>p</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z39_10">rotateAroundPoint()</a>, but the rotation <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> is <code>const</code>. Note however that the actual rotation may differ according to local constraints.     </td>
  </tr>
</table>
<a name="z39_10" doxytag="qglviewer::Frame::rotateAroundPoint"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void rotateAroundPoint </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classqglviewer_1_1Quaternion.html">qglviewer::Quaternion</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>q</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>p</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z39_5">rotate()</a>, but <a class="el" href="classqglviewer_1_1Frame.html#z33_10">position()</a> is modified as if the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> was rotated of <code>q</code> around the point <code>p</code>. Emits the <a class="el" href="classqglviewer_1_1Frame.html#l0">modified()</a> signal<p>
If the frame is constrained (see <a class="el" href="classqglviewer_1_1Frame.html#z45_1">setConstraint()</a>), <code>q</code> is first constrained using <a class="el" href="classqglviewer_1_1Constraint.html#a2">Constraint::constrainRotation()</a>. The translation which results from the filtered rotation around <code>is</code> then computed and filtered using <a class="el" href="classqglviewer_1_1Constraint.html#a1">Constraint::constrainTranslation()</a>.     </td>
  </tr>
</table>
<a name="z37_12" doxytag="qglviewer::Frame::rotation"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> rotation </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const<code> [inline]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns the current <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> orientation. See <a class="el" href="classqglviewer_1_1Frame.html#z37_3">setRotation()</a>.     </td>
  </tr>
</table>
<a name="z45_1" doxytag="qglviewer::Frame::setConstraint"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setConstraint </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>c</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [inline]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the constraint attached with the frame. A <code>NULL</code> value means no constraint, i.e. a <a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a> instance. The previous constraint pointer should be deleted by the calling function if needed. Use <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a> to get this value.     </td>
  </tr>
</table>
<a name="z47_6" doxytag="qglviewer::Frame::setFromMatrix"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setFromMatrix </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>m</em>[4][4]          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the frame state from a matrix representation. Matrix has to be a proper row-major order transformation representation (rotation is in the upper left 3x3 matrix, while translation is on the last line). <a class="el" href="classqglviewer_1_1Frame.html#z47_0">matrix()</a> returns the current matrix value.<p>
<dl compact><dt><b>Attention:</b></dt><dd>A <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> does <em>not</em> handle a scale factor. The possible scaling in <code>m</code> will be ignored by this method. </dd></dl>
    </td>
  </tr>
</table>
<a name="z33_5" doxytag="qglviewer::Frame::setOrientation"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setOrientation </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>q</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the current orientation of the frame (with respect to the world coordinate system). See <a class="el" href="classqglviewer_1_1Frame.html#z33_12">orientation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z33_6">setOrientationWithConstraint()</a>.     </td>
  </tr>
</table>
<a name="z33_4" doxytag="qglviewer::Frame::setOrientation"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setOrientation </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>x</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>y</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>z</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>a</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z33_4">setOrientation()</a>, but with float parameters.     </td>
  </tr>
</table>
<a name="z33_7" doxytag="qglviewer::Frame::setOrientationAxisAngle"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setOrientationAxisAngle </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>x</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>y</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>z</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>a</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the current orientation of the frame. Parameters are the rotation axis vector and its angle (in radians).     </td>
  </tr>
</table>
<a name="z33_6" doxytag="qglviewer::Frame::setOrientationWithConstraint"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setOrientationWithConstraint </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>q</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z33_4">setOrientation()</a>, but the possible <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a> of the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> is enforced. <code>q</code> is modified to satisfy the constraint. Emits the <a class="el" href="classqglviewer_1_1Frame.html#l0">modified()</a> signal.     </td>
  </tr>
</table>
<a name="z33_2" doxytag="qglviewer::Frame::setPosition"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setPosition </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>x</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>y</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>z</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z33_1">setPosition()</a>, but with <code>float</code> parameters.     </td>
  </tr>
</table>
<a name="z33_1" doxytag="qglviewer::Frame::setPosition"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setPosition </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>t</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the position of the origin of the frame, with respect to the world coordinate system. Use <a class="el" href="classqglviewer_1_1Frame.html#z37_0">setTranslation()</a> to defined to local frame translation (with respect to the reference frame). See also <a class="el" href="classqglviewer_1_1Frame.html#z33_10">position()</a>, <a class="el" href="classqglviewer_1_1Frame.html#z33_12">orientation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z33_3">setPositionWithConstraint()</a>.     </td>
  </tr>
</table>
<a name="z33_8" doxytag="qglviewer::Frame::setPositionAndOrientation"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setPositionAndOrientation </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>p</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>q</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as successive calls to <a class="el" href="classqglviewer_1_1Frame.html#z33_1">setPosition()</a> and then <a class="el" href="classqglviewer_1_1Frame.html#z33_4">setOrientation()</a>.<p>
Only one <a class="el" href="classqglviewer_1_1Frame.html#l0">modified()</a> signal is emitted, which is convenient if this signal is connected to a viewer updateGL() slot. See also <a class="el" href="classqglviewer_1_1Frame.html#z37_7">setTranslationAndRotation()</a> and setPositionAndOrientationWithConstraints().     </td>
  </tr>
</table>
<a name="z33_9" doxytag="qglviewer::Frame::setPositionAndOrientationWithConstraint"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setPositionAndOrientationWithConstraint </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>p</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>q</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z33_8">setPositionAndOrientation()</a> but the position and orientation increments are filtered by the possible <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a>. <code>p</code> and <code>q</code> are modified to satisfy the constraint. Emits the <a class="el" href="classqglviewer_1_1Frame.html#l0">modified()</a> signal.     </td>
  </tr>
</table>
<a name="z33_3" doxytag="qglviewer::Frame::setPositionWithConstraint"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setPositionWithConstraint </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>p</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z33_1">setPosition()</a>, but the possible <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a> of the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> is enforced. <code>p</code> is modified to satisfy the constraint. Emits the <a class="el" href="classqglviewer_1_1Frame.html#l0">modified()</a> signal.     </td>
  </tr>
</table>
<a name="z35_1" doxytag="qglviewer::Frame::setReferenceFrame"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setReferenceFrame </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *const&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>fr</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the current reference frame. The frame then becomes a "child" of the <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a>, meaning that its position and orientation are defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a>.     </td>
  </tr>
</table>
<a name="z37_4" doxytag="qglviewer::Frame::setRotation"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setRotation </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>q</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [inline]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the current rotation <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a>. See <a class="el" href="classqglviewer_1_1Frame.html#z37_12">rotation()</a> and the different <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> constructors. Emits the <a class="el" href="classqglviewer_1_1Frame.html#l0">modified()</a> signal. See also <a class="el" href="classqglviewer_1_1Frame.html#z37_0">setTranslation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z37_5">setRotationWithConstraint()</a>.     </td>
  </tr>
</table>
<a name="z37_3" doxytag="qglviewer::Frame::setRotation"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setRotation </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>x</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>y</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>z</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>a</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the current rotation of the frame. Parameters are the rotation <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> float values. Get current rotation with <a class="el" href="classqglviewer_1_1Frame.html#z37_12">rotation()</a>.     </td>
  </tr>
</table>
<a name="z37_6" doxytag="qglviewer::Frame::setRotationAxisAngle"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setRotationAxisAngle </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>x</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>y</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>z</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>a</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the current rotation of the frame. Parameters are the rotation axis vector and its angle (in radians).     </td>
  </tr>
</table>
<a name="z37_5" doxytag="qglviewer::Frame::setRotationWithConstraint"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setRotationWithConstraint </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>q</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z37_3">setRotation()</a>, but the possible <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a> of the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> is enforced. <code>q</code> is modified to satisfy the constraint. Emits the <a class="el" href="classqglviewer_1_1Frame.html#l0">modified()</a> signal.     </td>
  </tr>
</table>
<a name="z35_2" doxytag="qglviewer::Frame::settingAsReferenceFrameWillCreateALoop"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool settingAsReferenceFrameWillCreateALoop </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *const&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>fr</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns <code>true</code> if setting <code>fr</code> as the reference frame would create a loop in the frame hierarchy.     </td>
  </tr>
</table>
<a name="z37_1" doxytag="qglviewer::Frame::setTranslation"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setTranslation </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>t</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [inline]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the current local translation of the frame. Use <a class="el" href="classqglviewer_1_1Frame.html#z37_10">translation()</a> to get the current frame position. See <a class="el" href="classqglviewer_1_1Frame.html#z33_1">setPosition()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z33_10">position()</a> to get the <em>world</em> position of the frame. Emits the <a class="el" href="classqglviewer_1_1Frame.html#l0">modified()</a> signal. See also <a class="el" href="classqglviewer_1_1Frame.html#z37_3">setRotation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z37_2">setTranslationWithConstraint()</a>.     </td>
  </tr>
</table>
<a name="z37_0" doxytag="qglviewer::Frame::setTranslation"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setTranslation </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>x</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>y</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>z</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the current translation of the frame. Same as <a class="el" href="classqglviewer_1_1Frame.html#z37_0">setTranslation()</a>, but with <code>float</code> parameters. <a class="el" href="classqglviewer_1_1Frame.html#z37_10">translation()</a> returns the current frame position.     </td>
  </tr>
</table>
<a name="z37_7" doxytag="qglviewer::Frame::setTranslationAndRotation"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setTranslationAndRotation </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>t</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>q</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as successive calls to <a class="el" href="classqglviewer_1_1Frame.html#z33_1">setPosition()</a> and then <a class="el" href="classqglviewer_1_1Frame.html#z33_4">setOrientation()</a>.<p>
Only one <a class="el" href="classqglviewer_1_1Frame.html#l0">modified()</a> signal is emitted, which is convenient if this signal is connected to a viewer updateGL() slot. See also <a class="el" href="classqglviewer_1_1Frame.html#z33_8">setPositionAndOrientation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z37_8">setTranslationAndRotationWithConstraint()</a>.     </td>
  </tr>
</table>
<a name="z37_8" doxytag="qglviewer::Frame::setTranslationAndRotationWithConstraint"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setTranslationAndRotationWithConstraint </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>t</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>q</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z37_7">setTranslationAndRotation()</a>, but the possible <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a> of the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> is enforced. <code>t</code> and <code>q</code> are modified to satisfy the constraint. Emits the <a class="el" href="classqglviewer_1_1Frame.html#l0">modified()</a> signal.     </td>
  </tr>
</table>
<a name="z37_2" doxytag="qglviewer::Frame::setTranslationWithConstraint"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void setTranslationWithConstraint </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>t</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z37_0">setTranslation()</a>, but the possible <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a> of the <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> is enforced. <code>t</code> is modified to satisfy the constraint. Emits the <a class="el" href="classqglviewer_1_1Frame.html#l0">modified()</a> signal.     </td>
  </tr>
</table>
<a name="z43_0" doxytag="qglviewer::Frame::transformOf"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> transformOf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>src</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
This returns the <em>frame</em> transform of a vector <code>src</code> defined in the <em>world</em> coordinate system (converts from world to frame).<p>
For vectors, only the rotational part of the transformation is taken into account, see <a class="el" href="classqglviewer_1_1Frame.html#z41_0">coordinatesOf()</a> for the point equivalent function.<p>
<a class="el" href="classqglviewer_1_1Frame.html#z43_1">inverseTransformOf()</a> performs the inverse transformation.     </td>
  </tr>
</table>
<a name="z43_5" doxytag="qglviewer::Frame::transformOfFrom"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> transformOfFrom </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>from</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
This returns the <em>frame</em> coordinate system transform of the vector whose coordinates in the <code>from</code> coordinate system is <code>src</code> (converts from <code>from</code> to <em>frame</em>). <code>from</code> and the frame do not need to be located in the same branch of the frame tree hierarchy.<p>
For vectors, only the rotational part of the transformation is taken into account, see <a class="el" href="classqglviewer_1_1Frame.html#z41_5">coordinatesOfFrom()</a> for the point equivalent function.<p>
<a class="el" href="classqglviewer_1_1Frame.html#z43_4">transformOfIn()</a> performs the inverse transformation.     </td>
  </tr>
</table>
<a name="z43_4" doxytag="qglviewer::Frame::transformOfIn"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> transformOfIn </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>src</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>in</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
This returns the <code>in</code> coordinate system transform of the vector whose coordinates in the <em>frame</em> coordinate system is <code>src</code> (converts from frame to <code>in</code>). <code>in</code> and the frame do not need to be located in the same branch of the frame tree hierarchy.<p>
For vectors, only the rotational part of the transformation is taken into account, see <a class="el" href="classqglviewer_1_1Frame.html#z41_4">coordinatesOfIn()</a> for the point equivalent function.<p>
<a class="el" href="classqglviewer_1_1Frame.html#z43_5">transformOfFrom()</a> performs the inverse transformation.     </td>
  </tr>
</table>
<a name="z39_4" doxytag="qglviewer::Frame::translate"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void translate </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const float&nbsp;</td>
          <td class="mdname" nowrap> <em>x</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>y</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const float&nbsp;</td>
          <td class="mdname" nowrap> <em>z</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z39_0">translate()</a> but with const float parameter. The actual translation may differ from the given parameters in order to satisfy the <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a>. Use the non-const version to get the filtered values back.     </td>
  </tr>
</table>
<a name="z39_3" doxytag="qglviewer::Frame::translate"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void translate </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>x</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>y</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>float &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>z</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z39_0">translate()</a> but with float parameters. Parameters are modified to satisfy translation constraints (see <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a>). See also the non-const parameters version of this version, if you are not interested in the filtered values.     </td>
  </tr>
</table>
<a name="z39_2" doxytag="qglviewer::Frame::translate"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void translate </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">float&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>t</em>[3]          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Same as <a class="el" href="classqglviewer_1_1Frame.html#z39_0">translate()</a> but with a float[3] parameter. <code>t</code> can be modified to fit translation <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a>.     </td>
  </tr>
</table>
<a name="z39_1" doxytag="qglviewer::Frame::translate"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void translate </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>t</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Translate the frame of <code>t</code>. The actual applied translation may differ from <code>t</code> as the constraint will filter <code>t</code> (see <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a>). Use the non-const version of <a class="el" href="classqglviewer_1_1Frame.html#z39_0">translate()</a> to get back the filtered translation value.     </td>
  </tr>
</table>
<a name="z39_0" doxytag="qglviewer::Frame::translate"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void translate </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>t</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Translate the frame of <code>t</code>. <code>t</code> may be modified to satisfy translation <a class="el" href="classqglviewer_1_1Frame.html#z45_0">constraint()</a>. Use <a class="el" href="classqglviewer_1_1Frame.html#z45_1">setConstraint()</a> to (un)set the translation constraints. Emits the <a class="el" href="classqglviewer_1_1Frame.html#l0">modified()</a> signal.     </td>
  </tr>
</table>
<a name="z37_10" doxytag="qglviewer::Frame::translation"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> translation </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const<code> [inline]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns the current frame position. See <a class="el" href="classqglviewer_1_1Frame.html#z37_0">setTranslation()</a>.     </td>
  </tr>
</table>
<a name="z47_3" doxytag="qglviewer::Frame::worldMatrix"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> const GLdouble * worldMatrix </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns the 4x4 frame matrix, defined in the world coordinate system. Can be used with <code>glMultMatrixd</code>(fr.worldMatrix()) or <code>glLoadMatrixd</code>(fr.worldMatrix()). This matrix represents the <em>global</em> transformation from the world coordinate system to the frame coordinate system, including the entire frame composition chain (see <a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> for frame composition). Use <a class="el" href="classqglviewer_1_1Frame.html#z47_1">getMatrix()</a> or <a class="el" href="classqglviewer_1_1Frame.html#z47_0">matrix()</a> to have the <em>local</em> frame transformation matrix (i.e. the <a class="el" href="classqglviewer_1_1Frame.html#z37_10">translation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z37_12">rotation()</a> part).<p>
<a class="el" href="classqglviewer_1_1Frame.html#z47_3">worldMatrix()</a> and <a class="el" href="classqglviewer_1_1Frame.html#z47_0">matrix()</a> will return identical results when the frame is not composed (<a class="el" href="classqglviewer_1_1Frame.html#z35_0">referenceFrame()</a> == NULL). See also <a class="el" href="classqglviewer_1_1Frame.html#z47_4">getWorldMatrix()</a>.<p>
<dl compact><dt><b>Attention:</b></dt><dd>The matrix is given in OpenGL format (row-major order) and is the transpose of the actual mathematical European representation.<p>
The result is only valid until the next call to <a class="el" href="classqglviewer_1_1Frame.html#z47_0">matrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#z47_1">getMatrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#z47_3">worldMatrix()</a> or <a class="el" href="classqglviewer_1_1Frame.html#z47_4">getWorldMatrix()</a>. Use it immediately (as in <code>glLoadMatrixd</code>(fr.worldMatrix()) or <code>glLoadMatrixd</code>(fr.worldMatrix())) or store it in an other variable. Consider using <a class="el" href="classqglviewer_1_1Frame.html#z47_4">getWorldMatrix()</a> if needed. </dd></dl>
    </td>
  </tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Wed Feb 11 17:22:07 2004 for libQGLViewer by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 > 
</a>1.3.3 </small></address>
</body>
</html>