~ubuntu-branches/debian/experimental/libqglviewer/experimental

« back to all changes in this revision

Viewing changes to doc/refManual/classqglviewer_1_1Frame.html

  • Committer: Package Import Robot
  • Author(s): Anton Gladky, Artur R. Czechowski, Anton Gladky
  • Date: 2013-01-25 23:07:30 UTC
  • mfrom: (1.2.2) (3.1.5 sid)
  • Revision ID: package-import@ubuntu.com-20130125230730-uc908mvqm230nns4
Tags: 2.3.17-1
[ Artur R. Czechowski ]
* New upstream release:
  + uses CONFIG += no_keywords so that the library can be used with Boost
    (LP: #414975) (Closes: #697660)
* Using upstream name convention: libQGLViewer instead of libqglviewer
* Don't build Qt3 version anymore
* Drop no longer needed patches:
  + 01qt3-qt4
  + 04glu-include
  + 99compile-examples
* Convert to 3.0 (quilt) format
  + remove dpatch from Build-Deps and all calls from debian/rules
  + update patches in debian/patches
  + replace debian/00list with debian/series
  + remove README.source
  + rename remaining patches - remove NN prefix
* Pass multiarch related LIB_DIR to qmake in debian/rules
* Lintian cleanup:
  + fix descriptions
  + libqglviewer-qt4-2 depends on ${misc:Depends}
  + build-arch and build-indep provided in debian/rules
* Update Standards-Version to 3.9.3
  + sort Breaks/Replaces/Provides dependencies for transition
* Remove transition related stuff. The dev package is libqglviewer-dev,
  the shared library package is libqglviewer2.
* Headers moved from libqglviewer-dev-common to libqglviewer-dev
* Documentation moved from libqglviewer-dev-common to new libqglviewer-doc
* Remove debian/README.Multiflavour and other qt3 related artifacts from
  debian/
* README.Debian cleanup
  + Merge all *.README.Debian into one file - the content is the same
  + Corrected upstream name in README.Debian
  + Updated URL of homepage
* Provide upstreams GPL_EXCEPTION file, mention it in copyright one.
* Tighten shlibs dependencies, as upstream confirmed no ABI compatibility
  is assured between even minor releases
* Hardening the binaries
  + build depends on dpkg-dev > 1.16.1~
  + use dpkg-buildflags
  + pass build flags to qmake
  + don't remove -g option in qmake - new patch: compile-with--g-option
  + add lintian overrides for false positive hardening-no-stackprotector
    warning, see #673112

[ Anton Gladky ]
* [4b87fd4] Use compat-level 9.
* [2a3db76] Clean in rules-file.
* [51c8386] Use override_dh commands.
* [b79d40d] Use DEP-5 for copyright-file. 
            Remove adding exception in each package.
* [934a9b8] Remove compile-with--g-option patch. The -g options is transmitted
            with other CFLAGS in debian/rules.
* [173c034] Remove olsolete DM-Upload-Allowed flag.
* [e694744] Change maintainership to Debian-Science Team. (Closes: #688520)
* [f0627f1] Remove symlink of copyright-file during upgrade. (Closes: #691441)
* [f79e4f8] Properly remove old binaries.
* [1a200fe] Bumped Standards-Version: 3.9.4. No changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
5
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
6
<title>libQGLViewer: Frame Class Reference</title>
7
 
 
8
7
<link href="tabs.css" rel="stylesheet" type="text/css"/>
 
8
<script type="text/javascript" src="jquery.js"></script>
 
9
<script type="text/javascript" src="dynsections.js"></script>
 
10
<link href="search/search.css" rel="stylesheet" type="text/css"/>
 
11
<script type="text/javascript" src="search/search.js"></script>
 
12
<script type="text/javascript">
 
13
  $(document).ready(function() { searchBox.OnSelectItem(0); });
 
14
</script>
9
15
<link rel="shortcut icon" href="../images/qglviewer.ico" type="image/x-icon" />
10
16
<link rel="icon" href="../images/qglviewer.icon.png" type="image/png" />
11
17
<link href="doxygen.css" rel="stylesheet" type="text/css" />
12
 
 
13
 
<link href="search/search.css" rel="stylesheet" type="text/css"/>
14
 
<script type="text/javascript" src="jquery.js"></script>
15
 
<script type="text/javascript" src="search/search.js"></script>
16
 
<script type="text/javascript">
17
 
  $(document).ready(function() { searchBox.OnSelectItem(0); });
18
 
</script>
19
 
 
20
18
</head>
21
19
<body>
22
 
<div id="top"><!-- do not remove this div! -->
23
 
 
24
 
 
 
20
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
25
21
<div id="titlearea">
26
22
<table cellspacing="0" cellpadding="0">
27
23
 <tbody>
28
24
 <tr style="height: 56px;">
29
 
  
30
 
  
31
25
  <td style="padding-left: 0.5em;">
32
26
   <div id="projectname">libQGLViewer
33
 
   &#160;<span id="projectnumber">Version 2.3.15</span>
 
27
   &#160;<span id="projectnumber">Version 2.3.17</span>
34
28
   </div>
35
 
   
36
29
  </td>
37
 
  
38
 
  
39
 
  
40
30
 </tr>
41
31
 </tbody>
42
32
</table>
43
33
</div>
44
 
 
45
 
<!-- Generated by Doxygen 1.7.6.1 -->
 
34
<!-- end header part -->
 
35
<!-- Generated by Doxygen 1.8.1 -->
46
36
<script type="text/javascript">
47
37
var searchBox = new SearchBox("searchBox", "search",false,'Search');
48
38
</script>
49
39
  <div id="navrow1" class="tabs">
50
40
    <ul class="tablist">
51
 
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
 
41
      <li><a href="../index.html"><span>Main&#160;Page</span></a></li>
52
42
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
53
43
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
54
44
      <li><a href="files.html"><span>Files</span></a></li>
55
 
      <li><a href="dirs.html"><span>Directories</span></a></li>
56
45
      <li>
57
46
        <div id="MSearchBox" class="MSearchBoxInactive">
58
47
        <span class="left">
83
72
     onmouseover="return searchBox.OnSearchSelectShow()"
84
73
     onmouseout="return searchBox.OnSearchSelectHide()"
85
74
     onkeydown="return searchBox.OnSearchSelectKey(event)">
86
 
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Defines</a></div>
 
75
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Macros</a></div>
87
76
 
88
77
<!-- iframe showing the search results (closed by default) -->
89
78
<div id="MSearchResultsWindow">
92
81
</iframe>
93
82
</div>
94
83
 
95
 
  <div id="nav-path" class="navpath">
96
 
    <ul>
97
 
      <li class="navelem">Frame      </li>
98
 
    </ul>
99
 
  </div>
 
84
<div id="nav-path" class="navpath">
 
85
  <ul>
 
86
<li class="navelem"><a class="el" href="namespaceqglviewer.html">qglviewer</a></li><li class="navelem">Frame</li>  </ul>
100
87
</div>
 
88
</div><!-- top -->
101
89
<div class="header">
102
90
  <div class="summary">
103
91
<a href="#signals">Signals</a> &#124;
106
94
<div class="title">Frame Class Reference</div>  </div>
107
95
</div><!--header-->
108
96
<div class="contents">
109
 
<!-- doxytag: class="qglviewer::Frame" -->
 
97
 
110
98
<p>The Frame class represents a coordinate system, defined by a position and an orientation.  
111
99
 <a href="classqglviewer_1_1Frame.html#details">More...</a></p>
112
100
 
113
101
<p><a href="classqglviewer_1_1Frame-members.html">List of all members.</a></p>
114
102
<table class="memberdecls">
115
 
<tr><td colspan="2"><h2><a name="signals"></a>
 
103
<tr class="heading"><td colspan="2"><h2><a name="signals"></a>
116
104
Signals</h2></td></tr>
117
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified</a> ()</td></tr>
118
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ab55c2a4f1732b90057fae4b6037399de">interpolated</a> ()</td></tr>
119
 
<tr><td colspan="2"><h2><a name="pub-methods"></a>
 
105
<tr class="memitem:ab6722375e68e03d151762ebfc83c5459"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified</a> ()</td></tr>
 
106
<tr class="memitem:ab55c2a4f1732b90057fae4b6037399de"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ab55c2a4f1732b90057fae4b6037399de">interpolated</a> ()</td></tr>
 
107
</table><table class="memberdecls">
 
108
<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
120
109
Public Member Functions</h2></td></tr>
121
 
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a> ()</td></tr>
122
 
<tr><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ae0c994a30d9a018000fe8ad66ff0a86d">~Frame</a> ()</td></tr>
123
 
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a7864fb955cec11fe78c3b2bb81230516">Frame</a> (const Frame &amp;frame)</td></tr>
124
 
<tr><td class="memItemLeft" align="right" valign="top">Frame &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aeb0f5ceffbb62f990b89b200d6ce728c">operator=</a> (const Frame &amp;frame)</td></tr>
125
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
110
<tr class="memitem:ab71e6ee46f0c2593266f9a62d9c5e029"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a> ()</td></tr>
 
111
<tr class="memitem:ae0c994a30d9a018000fe8ad66ff0a86d"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ae0c994a30d9a018000fe8ad66ff0a86d">~Frame</a> ()</td></tr>
 
112
<tr class="memitem:a7864fb955cec11fe78c3b2bb81230516"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a7864fb955cec11fe78c3b2bb81230516">Frame</a> (const Frame &amp;frame)</td></tr>
 
113
<tr class="memitem:aeb0f5ceffbb62f990b89b200d6ce728c"><td class="memItemLeft" align="right" valign="top">Frame &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aeb0f5ceffbb62f990b89b200d6ce728c">operator=</a> (const Frame &amp;frame)</td></tr>
 
114
</table><table class="memberdecls">
 
115
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
126
116
World coordinates position and orientation</h2></td></tr>
127
 
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a2f649a1218291aa3776ce08d0a2879b1">Frame</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position</a>, const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation</a>)</td></tr>
128
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a24f5da9b3f4bf4e71dfad7a74a932e52">setPosition</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position</a>)</td></tr>
129
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aff7308b903966afc6c87b5cd766a9083">setPosition</a> (float x, float y, float z)</td></tr>
130
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a5081403cb47f1324edae5278d5438a38">setPositionWithConstraint</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position</a>)</td></tr>
131
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a6733704520780505759efdef38a68b8b">setOrientation</a> (const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation</a>)</td></tr>
132
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ae3ac2bf6dcfe21252d40325789503ce6">setOrientation</a> (double q0, double q1, double q2, double q3)</td></tr>
133
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a8b69106a268d78daf27d32854d455da4">setOrientationWithConstraint</a> (<a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation</a>)</td></tr>
134
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a47912d16be51eb85d68d3dcb4a4fb087">setPositionAndOrientation</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position</a>, const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation</a>)</td></tr>
135
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a8501c5582c1aa2a82a929ce36439ab3a">setPositionAndOrientationWithConstraint</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position</a>, <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation</a>)</td></tr>
136
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position</a> () const </td></tr>
137
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation</a> () const </td></tr>
138
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ab3ca600424074ccaf5ee078c8d3149c3">getPosition</a> (float &amp;x, float &amp;y, float &amp;z) const </td></tr>
139
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ac47c3b7fd6023734ba40249bea1fd253">getOrientation</a> (double &amp;q0, double &amp;q1, double &amp;q2, double &amp;q3) const </td></tr>
140
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
117
<tr class="memitem:a2f649a1218291aa3776ce08d0a2879b1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a2f649a1218291aa3776ce08d0a2879b1">Frame</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position</a>, const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation</a>)</td></tr>
 
118
<tr class="memitem:a24f5da9b3f4bf4e71dfad7a74a932e52"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a24f5da9b3f4bf4e71dfad7a74a932e52">setPosition</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position</a>)</td></tr>
 
119
<tr class="memitem:aff7308b903966afc6c87b5cd766a9083"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aff7308b903966afc6c87b5cd766a9083">setPosition</a> (float x, float y, float z)</td></tr>
 
120
<tr class="memitem:a5081403cb47f1324edae5278d5438a38"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a5081403cb47f1324edae5278d5438a38">setPositionWithConstraint</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position</a>)</td></tr>
 
121
<tr class="memitem:a6733704520780505759efdef38a68b8b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a6733704520780505759efdef38a68b8b">setOrientation</a> (const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation</a>)</td></tr>
 
122
<tr class="memitem:ae3ac2bf6dcfe21252d40325789503ce6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ae3ac2bf6dcfe21252d40325789503ce6">setOrientation</a> (double q0, double q1, double q2, double q3)</td></tr>
 
123
<tr class="memitem:a8b69106a268d78daf27d32854d455da4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a8b69106a268d78daf27d32854d455da4">setOrientationWithConstraint</a> (<a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation</a>)</td></tr>
 
124
<tr class="memitem:a47912d16be51eb85d68d3dcb4a4fb087"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a47912d16be51eb85d68d3dcb4a4fb087">setPositionAndOrientation</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position</a>, const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation</a>)</td></tr>
 
125
<tr class="memitem:a8501c5582c1aa2a82a929ce36439ab3a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a8501c5582c1aa2a82a929ce36439ab3a">setPositionAndOrientationWithConstraint</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position</a>, <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation</a>)</td></tr>
 
126
<tr class="memitem:abc38a05a597e07c9ff525122682adc50"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position</a> () const </td></tr>
 
127
<tr class="memitem:a691af39b54669fad8b4e73599de22094"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation</a> () const </td></tr>
 
128
<tr class="memitem:ab3ca600424074ccaf5ee078c8d3149c3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ab3ca600424074ccaf5ee078c8d3149c3">getPosition</a> (float &amp;x, float &amp;y, float &amp;z) const </td></tr>
 
129
<tr class="memitem:ac47c3b7fd6023734ba40249bea1fd253"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ac47c3b7fd6023734ba40249bea1fd253">getOrientation</a> (double &amp;q0, double &amp;q1, double &amp;q2, double &amp;q3) const </td></tr>
 
130
</table><table class="memberdecls">
 
131
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
141
132
Local translation and rotation w/r reference Frame</h2></td></tr>
142
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ae5495cd791858225ba7c85ce39329704">setTranslation</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation</a>)</td></tr>
143
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aeafb612e3ad0d6a81de91884eb4bdef1">setTranslation</a> (float x, float y, float z)</td></tr>
144
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a7f3395d24d164a7af9a8b99e4e6bafc0">setTranslationWithConstraint</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation</a>)</td></tr>
145
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a857aacdb88a574ec4a363335f6152a1e">setRotation</a> (const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a>)</td></tr>
146
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a26c462ecae655fa82c4d2efa42f9cd2e">setRotation</a> (double q0, double q1, double q2, double q3)</td></tr>
147
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint</a> (<a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a>)</td></tr>
148
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a0fbfd129a52b36b6753cc1589ff87a48">setTranslationAndRotation</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation</a>, const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a>)</td></tr>
149
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a3a08480e8de4a36536ff95e0f05303db">setTranslationAndRotationWithConstraint</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation</a>, <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a>)</td></tr>
150
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation</a> () const </td></tr>
151
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a> () const </td></tr>
152
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a39804059e5c4e694a6cb13b71347da97">getTranslation</a> (float &amp;x, float &amp;y, float &amp;z) const </td></tr>
153
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a475a20f772ff87508b673a586fc50bbb">getRotation</a> (double &amp;q0, double &amp;q1, double &amp;q2, double &amp;q3) const </td></tr>
154
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
133
<tr class="memitem:ae5495cd791858225ba7c85ce39329704"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ae5495cd791858225ba7c85ce39329704">setTranslation</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation</a>)</td></tr>
 
134
<tr class="memitem:aeafb612e3ad0d6a81de91884eb4bdef1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aeafb612e3ad0d6a81de91884eb4bdef1">setTranslation</a> (float x, float y, float z)</td></tr>
 
135
<tr class="memitem:a7f3395d24d164a7af9a8b99e4e6bafc0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a7f3395d24d164a7af9a8b99e4e6bafc0">setTranslationWithConstraint</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation</a>)</td></tr>
 
136
<tr class="memitem:a857aacdb88a574ec4a363335f6152a1e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a857aacdb88a574ec4a363335f6152a1e">setRotation</a> (const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a>)</td></tr>
 
137
<tr class="memitem:a26c462ecae655fa82c4d2efa42f9cd2e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a26c462ecae655fa82c4d2efa42f9cd2e">setRotation</a> (double q0, double q1, double q2, double q3)</td></tr>
 
138
<tr class="memitem:a9d4ab1388820d002d44304c5463fbfbd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint</a> (<a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a>)</td></tr>
 
139
<tr class="memitem:a0fbfd129a52b36b6753cc1589ff87a48"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a0fbfd129a52b36b6753cc1589ff87a48">setTranslationAndRotation</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation</a>, const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a>)</td></tr>
 
140
<tr class="memitem:a3a08480e8de4a36536ff95e0f05303db"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a3a08480e8de4a36536ff95e0f05303db">setTranslationAndRotationWithConstraint</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation</a>, <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a>)</td></tr>
 
141
<tr class="memitem:a388a5f38140104323aa51fc207fde642"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation</a> () const </td></tr>
 
142
<tr class="memitem:a19ee9243c60f412dfc4eac3dcf45a5a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a> () const </td></tr>
 
143
<tr class="memitem:a39804059e5c4e694a6cb13b71347da97"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a39804059e5c4e694a6cb13b71347da97">getTranslation</a> (float &amp;x, float &amp;y, float &amp;z) const </td></tr>
 
144
<tr class="memitem:a475a20f772ff87508b673a586fc50bbb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a475a20f772ff87508b673a586fc50bbb">getRotation</a> (double &amp;q0, double &amp;q1, double &amp;q2, double &amp;q3) const </td></tr>
 
145
</table><table class="memberdecls">
 
146
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
155
147
Frame hierarchy</h2></td></tr>
156
 
<tr><td class="memItemLeft" align="right" valign="top">const Frame *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame</a> () const </td></tr>
157
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#abca9e0c2e40957fffeee4a52139facd8">setReferenceFrame</a> (const Frame *const refFrame)</td></tr>
158
 
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aa4891a91c825effc65b73f1329ae49c7">settingAsReferenceFrameWillCreateALoop</a> (const Frame *const frame)</td></tr>
159
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
148
<tr class="memitem:a9794b079db5f492e8804631d3d23baec"><td class="memItemLeft" align="right" valign="top">const Frame *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame</a> () const </td></tr>
 
149
<tr class="memitem:abca9e0c2e40957fffeee4a52139facd8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#abca9e0c2e40957fffeee4a52139facd8">setReferenceFrame</a> (const Frame *const refFrame)</td></tr>
 
150
<tr class="memitem:aa4891a91c825effc65b73f1329ae49c7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aa4891a91c825effc65b73f1329ae49c7">settingAsReferenceFrameWillCreateALoop</a> (const Frame *const frame)</td></tr>
 
151
</table><table class="memberdecls">
 
152
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
160
153
Frame modification</h2></td></tr>
161
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a4cb0cf5ff79e1acf0755befdaceb6f4a">translate</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;t)</td></tr>
162
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ac774331eeae8d29acc94f5653b2f2c3b">translate</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;t)</td></tr>
163
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a9081ed23141a5980f028b21d58fa3290">translate</a> (float x, float y, float z)</td></tr>
164
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a2ae644799a164d7519769ba393565c5d">translate</a> (float &amp;x, float &amp;y, float &amp;z)</td></tr>
165
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a38dffd6ee0ad7e395b49082b2b94de33">rotate</a> (<a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;q)</td></tr>
166
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ac754417fa609300f980fcba5405c9989">rotate</a> (const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;q)</td></tr>
167
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a7fe03bbf807b109c1edb849193d03aa8">rotate</a> (double q0, double q1, double q2, double q3)</td></tr>
168
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ab15e32161293dce94ae3df3bc3a7b0ad">rotate</a> (double &amp;q0, double &amp;q1, double &amp;q2, double &amp;q3)</td></tr>
169
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a85f48572c1298bc3192f111e8b587bca">rotateAroundPoint</a> (<a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a>, const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;point)</td></tr>
170
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a5f87bae05096c99fb3b30cf5bb52c891">rotateAroundPoint</a> (const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a>, const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;point)</td></tr>
171
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a352fc1d1f806653677eabcdb8a5eb898">alignWithFrame</a> (const Frame *const frame, bool move=false, float threshold=0.85f)</td></tr>
172
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#af97ae9e790033879dfcb9837a7312255">projectOnLine</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;origin, const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;direction)</td></tr>
173
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
154
<tr class="memitem:a4cb0cf5ff79e1acf0755befdaceb6f4a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a4cb0cf5ff79e1acf0755befdaceb6f4a">translate</a> (<a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;t)</td></tr>
 
155
<tr class="memitem:ac774331eeae8d29acc94f5653b2f2c3b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ac774331eeae8d29acc94f5653b2f2c3b">translate</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;t)</td></tr>
 
156
<tr class="memitem:a9081ed23141a5980f028b21d58fa3290"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a9081ed23141a5980f028b21d58fa3290">translate</a> (float x, float y, float z)</td></tr>
 
157
<tr class="memitem:a2ae644799a164d7519769ba393565c5d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a2ae644799a164d7519769ba393565c5d">translate</a> (float &amp;x, float &amp;y, float &amp;z)</td></tr>
 
158
<tr class="memitem:a38dffd6ee0ad7e395b49082b2b94de33"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a38dffd6ee0ad7e395b49082b2b94de33">rotate</a> (<a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;q)</td></tr>
 
159
<tr class="memitem:ac754417fa609300f980fcba5405c9989"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ac754417fa609300f980fcba5405c9989">rotate</a> (const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;q)</td></tr>
 
160
<tr class="memitem:a7fe03bbf807b109c1edb849193d03aa8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a7fe03bbf807b109c1edb849193d03aa8">rotate</a> (double q0, double q1, double q2, double q3)</td></tr>
 
161
<tr class="memitem:ab15e32161293dce94ae3df3bc3a7b0ad"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ab15e32161293dce94ae3df3bc3a7b0ad">rotate</a> (double &amp;q0, double &amp;q1, double &amp;q2, double &amp;q3)</td></tr>
 
162
<tr class="memitem:a85f48572c1298bc3192f111e8b587bca"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a85f48572c1298bc3192f111e8b587bca">rotateAroundPoint</a> (<a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a>, const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;point)</td></tr>
 
163
<tr class="memitem:a5f87bae05096c99fb3b30cf5bb52c891"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a5f87bae05096c99fb3b30cf5bb52c891">rotateAroundPoint</a> (const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;<a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a>, const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;point)</td></tr>
 
164
<tr class="memitem:a352fc1d1f806653677eabcdb8a5eb898"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a352fc1d1f806653677eabcdb8a5eb898">alignWithFrame</a> (const Frame *const frame, bool move=false, float threshold=0.85f)</td></tr>
 
165
<tr class="memitem:af97ae9e790033879dfcb9837a7312255"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#af97ae9e790033879dfcb9837a7312255">projectOnLine</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;origin, const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;direction)</td></tr>
 
166
</table><table class="memberdecls">
 
167
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
174
168
Coordinate system transformation of 3D coordinates</h2></td></tr>
175
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ac706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
176
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a5bcb22a3f2e11e42e7469602b75b3c1e">inverseCoordinatesOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
177
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a2b113688a0cab6c439dfbf598fd45e70">localCoordinatesOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
178
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a4e6ac1c504a2f70fdbc0e7383c1aa7c7">localInverseCoordinatesOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
179
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a8c3c1e66b248a0f29e304e6c786b9391">coordinatesOfIn</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src, const Frame *const in) const </td></tr>
180
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aadad46a46365f6977e4aac6dc18318ce">coordinatesOfFrom</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src, const Frame *const from) const </td></tr>
181
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a3718dc9cc825c674c8da3576b1448764">getCoordinatesOf</a> (const float src[3], float res[3]) const </td></tr>
182
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aede4243bfe48e6d870a2417bbfc711a8">getInverseCoordinatesOf</a> (const float src[3], float res[3]) const </td></tr>
183
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#abe456b2ee906b9def0d2ec0c949a9497">getLocalCoordinatesOf</a> (const float src[3], float res[3]) const </td></tr>
184
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#adbd3252d2089f077e23e78345b3723c2">getLocalInverseCoordinatesOf</a> (const float src[3], float res[3]) const </td></tr>
185
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#af2748e8dd6a4edad38d195132a8c8b30">getCoordinatesOfIn</a> (const float src[3], float res[3], const Frame *const in) const </td></tr>
186
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a36a2d7b27ab27bcff37ab9cbfab20a17">getCoordinatesOfFrom</a> (const float src[3], float res[3], const Frame *const from) const </td></tr>
187
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
169
<tr class="memitem:ac706b338b08d9d7b511fd84d0b6ecf96"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ac706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
 
170
<tr class="memitem:a5bcb22a3f2e11e42e7469602b75b3c1e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a5bcb22a3f2e11e42e7469602b75b3c1e">inverseCoordinatesOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
 
171
<tr class="memitem:a2b113688a0cab6c439dfbf598fd45e70"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a2b113688a0cab6c439dfbf598fd45e70">localCoordinatesOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
 
172
<tr class="memitem:a4e6ac1c504a2f70fdbc0e7383c1aa7c7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a4e6ac1c504a2f70fdbc0e7383c1aa7c7">localInverseCoordinatesOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
 
173
<tr class="memitem:a8c3c1e66b248a0f29e304e6c786b9391"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a8c3c1e66b248a0f29e304e6c786b9391">coordinatesOfIn</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src, const Frame *const in) const </td></tr>
 
174
<tr class="memitem:aadad46a46365f6977e4aac6dc18318ce"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aadad46a46365f6977e4aac6dc18318ce">coordinatesOfFrom</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src, const Frame *const from) const </td></tr>
 
175
<tr class="memitem:a3718dc9cc825c674c8da3576b1448764"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a3718dc9cc825c674c8da3576b1448764">getCoordinatesOf</a> (const float src[3], float res[3]) const </td></tr>
 
176
<tr class="memitem:aede4243bfe48e6d870a2417bbfc711a8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aede4243bfe48e6d870a2417bbfc711a8">getInverseCoordinatesOf</a> (const float src[3], float res[3]) const </td></tr>
 
177
<tr class="memitem:abe456b2ee906b9def0d2ec0c949a9497"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#abe456b2ee906b9def0d2ec0c949a9497">getLocalCoordinatesOf</a> (const float src[3], float res[3]) const </td></tr>
 
178
<tr class="memitem:adbd3252d2089f077e23e78345b3723c2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#adbd3252d2089f077e23e78345b3723c2">getLocalInverseCoordinatesOf</a> (const float src[3], float res[3]) const </td></tr>
 
179
<tr class="memitem:af2748e8dd6a4edad38d195132a8c8b30"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#af2748e8dd6a4edad38d195132a8c8b30">getCoordinatesOfIn</a> (const float src[3], float res[3], const Frame *const in) const </td></tr>
 
180
<tr class="memitem:a36a2d7b27ab27bcff37ab9cbfab20a17"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a36a2d7b27ab27bcff37ab9cbfab20a17">getCoordinatesOfFrom</a> (const float src[3], float res[3], const Frame *const from) const </td></tr>
 
181
</table><table class="memberdecls">
 
182
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
188
183
Coordinate system transformation of vectors</h2></td></tr>
189
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a05a3e18419f02427366a95b1e299f12e">transformOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
190
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aba2c6c46c1825a81f09d22322b03d9b5">inverseTransformOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
191
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a37239448835f46771b9598a31b964cf2">localTransformOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
192
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ad36cf320ff7cf6c8f9a2ac527c924f9e">localInverseTransformOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
193
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a01636f93c09d6fd9fca90cb671afdda0">transformOfIn</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src, const Frame *const in) const </td></tr>
194
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a3416ca5a53c1f2d932fca1906ec1c6c7">transformOfFrom</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src, const Frame *const from) const </td></tr>
195
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aac70b883f8e3635d88356cb08b1abae3">getTransformOf</a> (const float src[3], float res[3]) const </td></tr>
196
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a6a2eb1467ca31f7db460a2d6b7166a07">getInverseTransformOf</a> (const float src[3], float res[3]) const </td></tr>
197
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a6e4aeb1d5aafee31442cc3c82a6ee215">getLocalTransformOf</a> (const float src[3], float res[3]) const </td></tr>
198
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a62b201feca5e0ebecc03a71b9566d97c">getLocalInverseTransformOf</a> (const float src[3], float res[3]) const </td></tr>
199
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a7d36c3c2d4b004b3e5d296aa58541f9f">getTransformOfIn</a> (const float src[3], float res[3], const Frame *const in) const </td></tr>
200
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a4eed4b2770a62e5ebb32d3dcee642c52">getTransformOfFrom</a> (const float src[3], float res[3], const Frame *const from) const </td></tr>
201
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
184
<tr class="memitem:a05a3e18419f02427366a95b1e299f12e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a05a3e18419f02427366a95b1e299f12e">transformOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
 
185
<tr class="memitem:aba2c6c46c1825a81f09d22322b03d9b5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aba2c6c46c1825a81f09d22322b03d9b5">inverseTransformOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
 
186
<tr class="memitem:a37239448835f46771b9598a31b964cf2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a37239448835f46771b9598a31b964cf2">localTransformOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
 
187
<tr class="memitem:ad36cf320ff7cf6c8f9a2ac527c924f9e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ad36cf320ff7cf6c8f9a2ac527c924f9e">localInverseTransformOf</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src) const </td></tr>
 
188
<tr class="memitem:a01636f93c09d6fd9fca90cb671afdda0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a01636f93c09d6fd9fca90cb671afdda0">transformOfIn</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src, const Frame *const in) const </td></tr>
 
189
<tr class="memitem:a3416ca5a53c1f2d932fca1906ec1c6c7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a3416ca5a53c1f2d932fca1906ec1c6c7">transformOfFrom</a> (const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;src, const Frame *const from) const </td></tr>
 
190
<tr class="memitem:aac70b883f8e3635d88356cb08b1abae3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aac70b883f8e3635d88356cb08b1abae3">getTransformOf</a> (const float src[3], float res[3]) const </td></tr>
 
191
<tr class="memitem:a6a2eb1467ca31f7db460a2d6b7166a07"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a6a2eb1467ca31f7db460a2d6b7166a07">getInverseTransformOf</a> (const float src[3], float res[3]) const </td></tr>
 
192
<tr class="memitem:a6e4aeb1d5aafee31442cc3c82a6ee215"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a6e4aeb1d5aafee31442cc3c82a6ee215">getLocalTransformOf</a> (const float src[3], float res[3]) const </td></tr>
 
193
<tr class="memitem:a62b201feca5e0ebecc03a71b9566d97c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a62b201feca5e0ebecc03a71b9566d97c">getLocalInverseTransformOf</a> (const float src[3], float res[3]) const </td></tr>
 
194
<tr class="memitem:a7d36c3c2d4b004b3e5d296aa58541f9f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a7d36c3c2d4b004b3e5d296aa58541f9f">getTransformOfIn</a> (const float src[3], float res[3], const Frame *const in) const </td></tr>
 
195
<tr class="memitem:a4eed4b2770a62e5ebb32d3dcee642c52"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a4eed4b2770a62e5ebb32d3dcee642c52">getTransformOfFrom</a> (const float src[3], float res[3], const Frame *const from) const </td></tr>
 
196
</table><table class="memberdecls">
 
197
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
202
198
Constraint on the displacement</h2></td></tr>
203
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint</a> () const </td></tr>
204
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#adffa44cd173714b29f2441848a39c224">setConstraint</a> (<a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a> *const <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint</a>)</td></tr>
205
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
199
<tr class="memitem:a0974dfe336ed84a20adb8c6cdf8dedd9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint</a> () const </td></tr>
 
200
<tr class="memitem:adffa44cd173714b29f2441848a39c224"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#adffa44cd173714b29f2441848a39c224">setConstraint</a> (<a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a> *const <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint</a>)</td></tr>
 
201
</table><table class="memberdecls">
 
202
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
206
203
Associated matrices</h2></td></tr>
207
 
<tr><td class="memItemLeft" align="right" valign="top">const GLdouble *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix</a> () const </td></tr>
208
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a4915640a54a6b48a99cbdd0cd42fec48">getMatrix</a> (GLdouble m[4][4]) const </td></tr>
209
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a15f0dc7596dc78437154302466ac3c0a">getMatrix</a> (GLdouble m[16]) const </td></tr>
210
 
<tr><td class="memItemLeft" align="right" valign="top">const GLdouble *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a39aa0648db05006e2b2f22ac5d971141">worldMatrix</a> () const </td></tr>
211
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix</a> (GLdouble m[4][4]) const </td></tr>
212
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ac808850371649942726dd474aba29ead">getWorldMatrix</a> (GLdouble m[16]) const </td></tr>
213
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a5408d08ab204157ec29f555b6813f9e4">setFromMatrix</a> (const GLdouble m[4][4])</td></tr>
214
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a0c4d51f142f43235e30198e7b8abc626">setFromMatrix</a> (const GLdouble m[16])</td></tr>
215
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
204
<tr class="memitem:aa12123cf45f68b9f7fe0526b70ab0047"><td class="memItemLeft" align="right" valign="top">const GLdouble *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix</a> () const </td></tr>
 
205
<tr class="memitem:a4915640a54a6b48a99cbdd0cd42fec48"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a4915640a54a6b48a99cbdd0cd42fec48">getMatrix</a> (GLdouble m[4][4]) const </td></tr>
 
206
<tr class="memitem:a15f0dc7596dc78437154302466ac3c0a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a15f0dc7596dc78437154302466ac3c0a">getMatrix</a> (GLdouble m[16]) const </td></tr>
 
207
<tr class="memitem:a39aa0648db05006e2b2f22ac5d971141"><td class="memItemLeft" align="right" valign="top">const GLdouble *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a39aa0648db05006e2b2f22ac5d971141">worldMatrix</a> () const </td></tr>
 
208
<tr class="memitem:a45358fae434b3912ce81577dc7cf4fc9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix</a> (GLdouble m[4][4]) const </td></tr>
 
209
<tr class="memitem:ac808850371649942726dd474aba29ead"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#ac808850371649942726dd474aba29ead">getWorldMatrix</a> (GLdouble m[16]) const </td></tr>
 
210
<tr class="memitem:a5408d08ab204157ec29f555b6813f9e4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a5408d08ab204157ec29f555b6813f9e4">setFromMatrix</a> (const GLdouble m[4][4])</td></tr>
 
211
<tr class="memitem:a0c4d51f142f43235e30198e7b8abc626"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a0c4d51f142f43235e30198e7b8abc626">setFromMatrix</a> (const GLdouble m[16])</td></tr>
 
212
</table><table class="memberdecls">
 
213
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
216
214
Inversion of the transformation</h2></td></tr>
217
 
<tr><td class="memItemLeft" align="right" valign="top">Frame&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a4534c3188c217feb8d21465d4cefd4ad">inverse</a> () const </td></tr>
218
 
<tr><td class="memItemLeft" align="right" valign="top">Frame&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a37d4da8cfd297273e7bb55538debaa3e">worldInverse</a> () const </td></tr>
219
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
215
<tr class="memitem:a4534c3188c217feb8d21465d4cefd4ad"><td class="memItemLeft" align="right" valign="top">Frame&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a4534c3188c217feb8d21465d4cefd4ad">inverse</a> () const </td></tr>
 
216
<tr class="memitem:a37d4da8cfd297273e7bb55538debaa3e"><td class="memItemLeft" align="right" valign="top">Frame&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a37d4da8cfd297273e7bb55538debaa3e">worldInverse</a> () const </td></tr>
 
217
</table><table class="memberdecls">
 
218
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
220
219
XML representation</h2></td></tr>
221
 
<tr><td class="memItemLeft" align="right" valign="top">virtual QDomElement&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a48e0e2dd26cd96418c8b889ceabe80f6">domElement</a> (const QString &amp;name, QDomDocument &amp;document) const </td></tr>
222
 
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#acd13d2ddeca530cb9f26ead47f7d25d3">initFromDOMElement</a> (const QDomElement &amp;element)</td></tr>
 
220
<tr class="memitem:a48e0e2dd26cd96418c8b889ceabe80f6"><td class="memItemLeft" align="right" valign="top">virtual QDomElement&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#a48e0e2dd26cd96418c8b889ceabe80f6">domElement</a> (const QString &amp;name, QDomDocument &amp;document) const </td></tr>
 
221
<tr class="memitem:acd13d2ddeca530cb9f26ead47f7d25d3"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1Frame.html#acd13d2ddeca530cb9f26ead47f7d25d3">initFromDOMElement</a> (const QDomElement &amp;element)</td></tr>
 
222
</table><table class="memberdecls">
 
223
<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
 
224
Additional Inherited Members</h2></td></tr>
223
225
</table>
224
226
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
225
227
<div class="textblock"><p>The Frame class represents a coordinate system, defined by a position and an orientation. </p>
226
228
<p>A Frame is a 3D coordinate system, represented by a <a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a> and an <a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation()</a>. The order of these transformations is important: the Frame is first translated <em>and</em> <em>then</em> rotated around the new translated origin.</p>
227
229
<p>A Frame is useful to define the position and orientation of a 3D rigid object, using its <a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix()</a> method, as shown below: </p>
228
 
<div class="fragment"><pre class="fragment">  <span class="comment">// Builds a Frame at position (0.5,0,0) and oriented such that its Y axis is along the (1,1,1)</span>
229
 
  <span class="comment">// direction. One could also have used setPosition() and setOrientation().</span>
230
 
  <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a> fr(Vec(0.5,0,0), Quaternion(Vec(0,1,0), Vec(1,1,1)));
231
 
  glPushMatrix();
232
 
  glMultMatrixd(fr.matrix());
233
 
  <span class="comment">// Draw your object here, in the local fr coordinate system.</span>
234
 
  glPopMatrix();
235
 
</pre></div><p>Many functions are provided to transform a 3D point from one coordinate system (Frame) to an other: see <a class="el" href="classqglviewer_1_1Frame.html#ac706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a>, <a class="el" href="classqglviewer_1_1Frame.html#a5bcb22a3f2e11e42e7469602b75b3c1e">inverseCoordinatesOf()</a>, <a class="el" href="classqglviewer_1_1Frame.html#a8c3c1e66b248a0f29e304e6c786b9391">coordinatesOfIn()</a>, <a class="el" href="classqglviewer_1_1Frame.html#aadad46a46365f6977e4aac6dc18318ce">coordinatesOfFrom()</a>...</p>
 
230
<div class="fragment"><div class="line">  <span class="comment">// Builds a Frame at position (0.5,0,0) and oriented such that its Y axis is along the (1,1,1)</span></div>
 
231
<div class="line">  <span class="comment">// direction. One could also have used setPosition() and setOrientation().</span></div>
 
232
<div class="line">  <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a> fr(Vec(0.5,0,0), Quaternion(Vec(0,1,0), Vec(1,1,1)));</div>
 
233
<div class="line">  glPushMatrix();</div>
 
234
<div class="line">  glMultMatrixd(fr.matrix());</div>
 
235
<div class="line">  <span class="comment">// Draw your object here, in the local fr coordinate system.</span></div>
 
236
<div class="line">  glPopMatrix();</div>
 
237
</div><!-- fragment --><p>Many functions are provided to transform a 3D point from one coordinate system (Frame) to an other: see <a class="el" href="classqglviewer_1_1Frame.html#ac706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a>, <a class="el" href="classqglviewer_1_1Frame.html#a5bcb22a3f2e11e42e7469602b75b3c1e">inverseCoordinatesOf()</a>, <a class="el" href="classqglviewer_1_1Frame.html#a8c3c1e66b248a0f29e304e6c786b9391">coordinatesOfIn()</a>, <a class="el" href="classqglviewer_1_1Frame.html#aadad46a46365f6977e4aac6dc18318ce">coordinatesOfFrom()</a>...</p>
236
238
<p>You may also want to transform a 3D vector (such as a normal), which corresponds to applying only the rotational part of the frame transformation: see <a class="el" href="classqglviewer_1_1Frame.html#a05a3e18419f02427366a95b1e299f12e">transformOf()</a> and <a class="el" href="classqglviewer_1_1Frame.html#aba2c6c46c1825a81f09d22322b03d9b5">inverseTransformOf()</a>. See the <a href="../examples/frameTransform.html">frameTransform example</a> for an illustration.</p>
237
239
<p>The <a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation()</a> and the <a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> that are encapsulated in a Frame can also be used to represent a <em>rigid</em> <em>transformation</em> of space. Such a transformation can also be interpreted as a change of coordinate system, and the coordinate system conversion functions actually allow you to use a Frame as a rigid transformation. Use <a class="el" href="classqglviewer_1_1Frame.html#a5bcb22a3f2e11e42e7469602b75b3c1e">inverseCoordinatesOf()</a> (resp. <a class="el" href="classqglviewer_1_1Frame.html#ac706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a>) to apply the transformation (resp. its inverse). Note the inversion.</p>
238
240
<h3>Hierarchy of Frames</h3>
255
257
<h3>Derived classes</h3>
256
258
<p>The <a class="el" href="classqglviewer_1_1ManipulatedFrame.html" title="A ManipulatedFrame is a Frame that can be rotated and translated using the mouse.">ManipulatedFrame</a> class inherits Frame and implements a mouse motion convertion, so that a Frame (and hence an object) can be manipulated in the scene with the mouse. </p>
257
259
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
258
 
<a class="anchor" id="ab71e6ee46f0c2593266f9a62d9c5e029"></a><!-- doxytag: member="qglviewer::Frame::Frame" ref="ab71e6ee46f0c2593266f9a62d9c5e029" args="()" -->
 
260
<a class="anchor" id="ab71e6ee46f0c2593266f9a62d9c5e029"></a>
259
261
<div class="memitem">
260
262
<div class="memproto">
261
263
      <table class="memname">
266
268
          <td></td>
267
269
        </tr>
268
270
      </table>
269
 
</div>
270
 
<div class="memdoc">
 
271
</div><div class="memdoc">
271
272
<p>Creates a default Frame.</p>
272
273
<p>Its <a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a> is (0,0,0) and it has an identity <a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation()</a> <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a>. The <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> and the <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> are <code>NULL</code>. </p>
273
274
 
274
275
</div>
275
276
</div>
276
 
<a class="anchor" id="ae0c994a30d9a018000fe8ad66ff0a86d"></a><!-- doxytag: member="qglviewer::Frame::~Frame" ref="ae0c994a30d9a018000fe8ad66ff0a86d" args="()" -->
 
277
<a class="anchor" id="ae0c994a30d9a018000fe8ad66ff0a86d"></a>
277
278
<div class="memitem">
278
279
<div class="memproto">
 
280
<table class="mlabels">
 
281
  <tr>
 
282
  <td class="mlabels-left">
279
283
      <table class="memname">
280
284
        <tr>
281
285
          <td class="memname">virtual ~Frame </td>
282
286
          <td>(</td>
283
287
          <td class="paramname"></td><td>)</td>
284
 
          <td><code> [virtual]</code></td>
 
288
          <td></td>
285
289
        </tr>
286
290
      </table>
287
 
</div>
288
 
<div class="memdoc">
 
291
  </td>
 
292
  <td class="mlabels-right">
 
293
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
 
294
  </tr>
 
295
</table>
 
296
</div><div class="memdoc">
289
297
<p>Virtual destructor. Empty. </p>
290
298
 
291
299
</div>
292
300
</div>
293
 
<a class="anchor" id="a7864fb955cec11fe78c3b2bb81230516"></a><!-- doxytag: member="qglviewer::Frame::Frame" ref="a7864fb955cec11fe78c3b2bb81230516" args="(const Frame &amp;frame)" -->
 
301
<a class="anchor" id="a7864fb955cec11fe78c3b2bb81230516"></a>
294
302
<div class="memitem">
295
303
<div class="memproto">
296
304
      <table class="memname">
302
310
          <td></td>
303
311
        </tr>
304
312
      </table>
305
 
</div>
306
 
<div class="memdoc">
 
313
</div><div class="memdoc">
307
314
<p>Copy constructor.</p>
308
315
<p>The <a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> as well as <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> pointers are copied. </p>
309
316
 
310
317
</div>
311
318
</div>
312
 
<a class="anchor" id="a2f649a1218291aa3776ce08d0a2879b1"></a><!-- doxytag: member="qglviewer::Frame::Frame" ref="a2f649a1218291aa3776ce08d0a2879b1" args="(const Vec &amp;position, const Quaternion &amp;orientation)" -->
 
319
<a class="anchor" id="a2f649a1218291aa3776ce08d0a2879b1"></a>
313
320
<div class="memitem">
314
321
<div class="memproto">
315
322
      <table class="memname">
331
338
          <td></td><td></td>
332
339
        </tr>
333
340
      </table>
334
 
</div>
335
 
<div class="memdoc">
 
341
</div><div class="memdoc">
336
342
<p>Creates a Frame with a <a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a> and an <a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation()</a>.</p>
337
343
<p>See the <a class="el" href="classqglviewer_1_1Vec.html" title="The Vec class represents 3D positions and 3D vectors.">Vec</a> and <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a> documentations for convenient constructors and methods.</p>
338
344
<p>The Frame is defined in the world coordinate system (its <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> is <code>NULL</code>). It has a <code>NULL</code> associated <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>. </p>
340
346
</div>
341
347
</div>
342
348
<hr/><h2>Member Function Documentation</h2>
343
 
<a class="anchor" id="a352fc1d1f806653677eabcdb8a5eb898"></a><!-- doxytag: member="qglviewer::Frame::alignWithFrame" ref="a352fc1d1f806653677eabcdb8a5eb898" args="(const Frame *const frame, bool move=false, float threshold=0.85f)" -->
 
349
<a class="anchor" id="a352fc1d1f806653677eabcdb8a5eb898"></a>
344
350
<div class="memitem">
345
351
<div class="memproto">
346
352
      <table class="memname">
347
353
        <tr>
348
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a352fc1d1f806653677eabcdb8a5eb898">alignWithFrame</a> </td>
 
354
          <td class="memname">void alignWithFrame </td>
349
355
          <td>(</td>
350
356
          <td class="paramtype">const Frame *const&#160;</td>
351
357
          <td class="paramname"><em>frame</em>, </td>
368
374
          <td></td><td></td>
369
375
        </tr>
370
376
      </table>
371
 
</div>
372
 
<div class="memdoc">
 
377
</div><div class="memdoc">
373
378
<p>Aligns the Frame with <code>frame</code>, so that two of their axis are parallel.</p>
374
379
<p>If one of the X, Y and Z axis of the Frame is almost parallel to any of the X, Y, or Z axis of <code>frame</code>, the Frame is rotated so that these two axis actually become parallel.</p>
375
380
<p>If, after this first rotation, two other axis are also almost parallel, a second alignment is performed. The two frames then have identical orientations, up to 90 degrees rotations.</p>
380
385
 
381
386
</div>
382
387
</div>
383
 
<a class="anchor" id="a0974dfe336ed84a20adb8c6cdf8dedd9"></a><!-- doxytag: member="qglviewer::Frame::constraint" ref="a0974dfe336ed84a20adb8c6cdf8dedd9" args="() const " -->
 
388
<a class="anchor" id="a0974dfe336ed84a20adb8c6cdf8dedd9"></a>
384
389
<div class="memitem">
385
390
<div class="memproto">
386
391
      <table class="memname">
387
392
        <tr>
388
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a>* <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint</a> </td>
 
393
          <td class="memname"><a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a>* constraint </td>
389
394
          <td>(</td>
390
395
          <td class="paramname"></td><td>)</td>
391
396
          <td> const</td>
392
397
        </tr>
393
398
      </table>
394
 
</div>
395
 
<div class="memdoc">
 
399
</div><div class="memdoc">
396
400
<p>Returns the current constraint applied to the Frame.</p>
397
401
<p>A <code>NULL</code> value (default) means that no <a class="el" href="classqglviewer_1_1Constraint.html" title="An interface class for Frame constraints.">Constraint</a> is used to filter Frame translation and rotation. See the <a class="el" href="classqglviewer_1_1Constraint.html" title="An interface class for Frame constraints.">Constraint</a> class documentation for details.</p>
398
402
<p>You may have to use a <code>dynamic_cast</code> to convert the result to a <a class="el" href="classqglviewer_1_1Constraint.html" title="An interface class for Frame constraints.">Constraint</a> derived class. </p>
399
403
 
400
404
</div>
401
405
</div>
402
 
<a class="anchor" id="ac706b338b08d9d7b511fd84d0b6ecf96"></a><!-- doxytag: member="qglviewer::Frame::coordinatesOf" ref="ac706b338b08d9d7b511fd84d0b6ecf96" args="(const Vec &amp;src) const " -->
 
406
<a class="anchor" id="ac706b338b08d9d7b511fd84d0b6ecf96"></a>
403
407
<div class="memitem">
404
408
<div class="memproto">
405
409
      <table class="memname">
406
410
        <tr>
407
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> <a class="el" href="classqglviewer_1_1Frame.html#ac706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf</a> </td>
 
411
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> coordinatesOf </td>
408
412
          <td>(</td>
409
413
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
410
414
          <td class="paramname"><em>src</em></td><td>)</td>
411
415
          <td> const</td>
412
416
        </tr>
413
417
      </table>
414
 
</div>
415
 
<div class="memdoc">
 
418
</div><div class="memdoc">
416
419
<p>Returns the Frame coordinates of a point <code>src</code> defined in the world coordinate system (converts from world to Frame).</p>
417
420
<p><a class="el" href="classqglviewer_1_1Frame.html#a5bcb22a3f2e11e42e7469602b75b3c1e">inverseCoordinatesOf()</a> performs the inverse convertion. <a class="el" href="classqglviewer_1_1Frame.html#a05a3e18419f02427366a95b1e299f12e">transformOf()</a> converts 3D vectors instead of 3D coordinates.</p>
418
421
<p>See the <a href="../examples/frameTransform.html">frameTransform example</a> for an illustration. </p>
419
422
 
420
423
</div>
421
424
</div>
422
 
<a class="anchor" id="aadad46a46365f6977e4aac6dc18318ce"></a><!-- doxytag: member="qglviewer::Frame::coordinatesOfFrom" ref="aadad46a46365f6977e4aac6dc18318ce" args="(const Vec &amp;src, const Frame *const from) const " -->
 
425
<a class="anchor" id="aadad46a46365f6977e4aac6dc18318ce"></a>
423
426
<div class="memitem">
424
427
<div class="memproto">
425
428
      <table class="memname">
426
429
        <tr>
427
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> <a class="el" href="classqglviewer_1_1Frame.html#aadad46a46365f6977e4aac6dc18318ce">coordinatesOfFrom</a> </td>
 
430
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> coordinatesOfFrom </td>
428
431
          <td>(</td>
429
432
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
430
433
          <td class="paramname"><em>src</em>, </td>
441
444
          <td></td><td> const</td>
442
445
        </tr>
443
446
      </table>
444
 
</div>
445
 
<div class="memdoc">
 
447
</div><div class="memdoc">
446
448
<p>Returns the Frame coordinates of the point whose position in the <code>from</code> coordinate system is <code>src</code> (converts from <code>from</code> to Frame).</p>
447
449
<p><a class="el" href="classqglviewer_1_1Frame.html#a8c3c1e66b248a0f29e304e6c786b9391">coordinatesOfIn()</a> performs the inverse transformation. </p>
448
450
 
449
451
</div>
450
452
</div>
451
 
<a class="anchor" id="a8c3c1e66b248a0f29e304e6c786b9391"></a><!-- doxytag: member="qglviewer::Frame::coordinatesOfIn" ref="a8c3c1e66b248a0f29e304e6c786b9391" args="(const Vec &amp;src, const Frame *const in) const " -->
 
453
<a class="anchor" id="a8c3c1e66b248a0f29e304e6c786b9391"></a>
452
454
<div class="memitem">
453
455
<div class="memproto">
454
456
      <table class="memname">
455
457
        <tr>
456
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> <a class="el" href="classqglviewer_1_1Frame.html#a8c3c1e66b248a0f29e304e6c786b9391">coordinatesOfIn</a> </td>
 
458
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> coordinatesOfIn </td>
457
459
          <td>(</td>
458
460
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
459
461
          <td class="paramname"><em>src</em>, </td>
470
472
          <td></td><td> const</td>
471
473
        </tr>
472
474
      </table>
473
 
</div>
474
 
<div class="memdoc">
 
475
</div><div class="memdoc">
475
476
<p>Returns the <code>in</code> coordinates of the point whose position in the Frame coordinate system is <code>src</code> (converts from Frame to <code>in</code>).</p>
476
477
<p><a class="el" href="classqglviewer_1_1Frame.html#aadad46a46365f6977e4aac6dc18318ce">coordinatesOfFrom()</a> performs the inverse transformation. </p>
477
478
 
478
479
</div>
479
480
</div>
480
 
<a class="anchor" id="a48e0e2dd26cd96418c8b889ceabe80f6"></a><!-- doxytag: member="qglviewer::Frame::domElement" ref="a48e0e2dd26cd96418c8b889ceabe80f6" args="(const QString &amp;name, QDomDocument &amp;document) const " -->
 
481
<a class="anchor" id="a48e0e2dd26cd96418c8b889ceabe80f6"></a>
481
482
<div class="memitem">
482
483
<div class="memproto">
 
484
<table class="mlabels">
 
485
  <tr>
 
486
  <td class="mlabels-left">
483
487
      <table class="memname">
484
488
        <tr>
485
 
          <td class="memname">QDomElement <a class="el" href="classqglviewer_1_1Frame.html#a48e0e2dd26cd96418c8b889ceabe80f6">domElement</a> </td>
 
489
          <td class="memname">QDomElement domElement </td>
486
490
          <td>(</td>
487
491
          <td class="paramtype">const QString &amp;&#160;</td>
488
492
          <td class="paramname"><em>name</em>, </td>
496
500
        <tr>
497
501
          <td></td>
498
502
          <td>)</td>
499
 
          <td></td><td> const<code> [virtual]</code></td>
 
503
          <td></td><td> const</td>
500
504
        </tr>
501
505
      </table>
502
 
</div>
503
 
<div class="memdoc">
 
506
  </td>
 
507
  <td class="mlabels-right">
 
508
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
 
509
  </tr>
 
510
</table>
 
511
</div><div class="memdoc">
504
512
<p>Returns an XML <code>QDomElement</code> that represents the Frame.</p>
505
513
<p><code>name</code> is the name of the QDomElement tag. <code>doc</code> is the <code>QDomDocument</code> factory used to create QDomElement.</p>
506
514
<p>The resulting QDomElement looks like: </p>
507
 
<div class="fragment"><pre class="fragment"> &lt;name&gt;
508
 
   &lt;<a class="code" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position</a> x=<span class="stringliteral">&quot;..&quot;</span> y=<span class="stringliteral">&quot;..&quot;</span> z=<span class="stringliteral">&quot;..&quot;</span> /&gt;
509
 
   &lt;<a class="code" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation</a> q0=<span class="stringliteral">&quot;..&quot;</span> q1=<span class="stringliteral">&quot;..&quot;</span> q2=<span class="stringliteral">&quot;..&quot;</span> q3=<span class="stringliteral">&quot;..&quot;</span> /&gt;
510
 
 &lt;/name&gt;
511
 
</pre></div><p>Use <a class="el" href="classqglviewer_1_1Frame.html#acd13d2ddeca530cb9f26ead47f7d25d3">initFromDOMElement()</a> to restore the Frame state from the resulting <code>QDomElement</code>.</p>
 
515
<div class="fragment"><div class="line"> &lt;name&gt;</div>
 
516
<div class="line">   &lt;<a class="code" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position</a> x=<span class="stringliteral">&quot;..&quot;</span> y=<span class="stringliteral">&quot;..&quot;</span> z=<span class="stringliteral">&quot;..&quot;</span> /&gt;</div>
 
517
<div class="line">   &lt;<a class="code" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation</a> q0=<span class="stringliteral">&quot;..&quot;</span> q1=<span class="stringliteral">&quot;..&quot;</span> q2=<span class="stringliteral">&quot;..&quot;</span> q3=<span class="stringliteral">&quot;..&quot;</span> /&gt;</div>
 
518
<div class="line"> &lt;/name&gt;</div>
 
519
</div><!-- fragment --><p>Use <a class="el" href="classqglviewer_1_1Frame.html#acd13d2ddeca530cb9f26ead47f7d25d3">initFromDOMElement()</a> to restore the Frame state from the resulting <code>QDomElement</code>.</p>
512
520
<p>See <a class="el" href="classqglviewer_1_1Vec.html#a48e0e2dd26cd96418c8b889ceabe80f6">Vec::domElement()</a> for a complete example. See also <a class="el" href="classqglviewer_1_1Quaternion.html#a48e0e2dd26cd96418c8b889ceabe80f6">Quaternion::domElement()</a>, <a class="el" href="classqglviewer_1_1Camera.html#a48e0e2dd26cd96418c8b889ceabe80f6">Camera::domElement()</a>...</p>
513
 
<dl class="attention"><dt><b>Attention:</b></dt><dd>The <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> are not saved in the QDomElement. </dd></dl>
 
521
<dl class="section attention"><dt>Attention:</dt><dd>The <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> are not saved in the QDomElement. </dd></dl>
514
522
 
515
523
<p>Reimplemented in <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#a48e0e2dd26cd96418c8b889ceabe80f6">ManipulatedFrame</a>, and <a class="el" href="classqglviewer_1_1ManipulatedCameraFrame.html#a48e0e2dd26cd96418c8b889ceabe80f6">ManipulatedCameraFrame</a>.</p>
516
524
 
517
525
</div>
518
526
</div>
519
 
<a class="anchor" id="a3718dc9cc825c674c8da3576b1448764"></a><!-- doxytag: member="qglviewer::Frame::getCoordinatesOf" ref="a3718dc9cc825c674c8da3576b1448764" args="(const float src[3], float res[3]) const " -->
 
527
<a class="anchor" id="a3718dc9cc825c674c8da3576b1448764"></a>
520
528
<div class="memitem">
521
529
<div class="memproto">
522
530
      <table class="memname">
523
531
        <tr>
524
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a3718dc9cc825c674c8da3576b1448764">getCoordinatesOf</a> </td>
 
532
          <td class="memname">void getCoordinatesOf </td>
525
533
          <td>(</td>
526
534
          <td class="paramtype">const float&#160;</td>
527
535
          <td class="paramname"><em>src</em>[3], </td>
538
546
          <td></td><td> const</td>
539
547
        </tr>
540
548
      </table>
541
 
</div>
542
 
<div class="memdoc">
 
549
</div><div class="memdoc">
543
550
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#ac706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a>, but with <code>float</code> parameters. </p>
544
551
 
545
552
</div>
546
553
</div>
547
 
<a class="anchor" id="a36a2d7b27ab27bcff37ab9cbfab20a17"></a><!-- doxytag: member="qglviewer::Frame::getCoordinatesOfFrom" ref="a36a2d7b27ab27bcff37ab9cbfab20a17" args="(const float src[3], float res[3], const Frame *const from) const " -->
 
554
<a class="anchor" id="a36a2d7b27ab27bcff37ab9cbfab20a17"></a>
548
555
<div class="memitem">
549
556
<div class="memproto">
550
557
      <table class="memname">
551
558
        <tr>
552
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a36a2d7b27ab27bcff37ab9cbfab20a17">getCoordinatesOfFrom</a> </td>
 
559
          <td class="memname">void getCoordinatesOfFrom </td>
553
560
          <td>(</td>
554
561
          <td class="paramtype">const float&#160;</td>
555
562
          <td class="paramname"><em>src</em>[3], </td>
572
579
          <td></td><td> const</td>
573
580
        </tr>
574
581
      </table>
575
 
</div>
576
 
<div class="memdoc">
 
582
</div><div class="memdoc">
577
583
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#aadad46a46365f6977e4aac6dc18318ce">coordinatesOfFrom()</a>, but with <code>float</code> parameters. </p>
578
584
 
579
585
</div>
580
586
</div>
581
 
<a class="anchor" id="af2748e8dd6a4edad38d195132a8c8b30"></a><!-- doxytag: member="qglviewer::Frame::getCoordinatesOfIn" ref="af2748e8dd6a4edad38d195132a8c8b30" args="(const float src[3], float res[3], const Frame *const in) const " -->
 
587
<a class="anchor" id="af2748e8dd6a4edad38d195132a8c8b30"></a>
582
588
<div class="memitem">
583
589
<div class="memproto">
584
590
      <table class="memname">
585
591
        <tr>
586
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#af2748e8dd6a4edad38d195132a8c8b30">getCoordinatesOfIn</a> </td>
 
592
          <td class="memname">void getCoordinatesOfIn </td>
587
593
          <td>(</td>
588
594
          <td class="paramtype">const float&#160;</td>
589
595
          <td class="paramname"><em>src</em>[3], </td>
606
612
          <td></td><td> const</td>
607
613
        </tr>
608
614
      </table>
609
 
</div>
610
 
<div class="memdoc">
 
615
</div><div class="memdoc">
611
616
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a8c3c1e66b248a0f29e304e6c786b9391">coordinatesOfIn()</a>, but with <code>float</code> parameters. </p>
612
617
 
613
618
</div>
614
619
</div>
615
 
<a class="anchor" id="aede4243bfe48e6d870a2417bbfc711a8"></a><!-- doxytag: member="qglviewer::Frame::getInverseCoordinatesOf" ref="aede4243bfe48e6d870a2417bbfc711a8" args="(const float src[3], float res[3]) const " -->
 
620
<a class="anchor" id="aede4243bfe48e6d870a2417bbfc711a8"></a>
616
621
<div class="memitem">
617
622
<div class="memproto">
618
623
      <table class="memname">
619
624
        <tr>
620
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#aede4243bfe48e6d870a2417bbfc711a8">getInverseCoordinatesOf</a> </td>
 
625
          <td class="memname">void getInverseCoordinatesOf </td>
621
626
          <td>(</td>
622
627
          <td class="paramtype">const float&#160;</td>
623
628
          <td class="paramname"><em>src</em>[3], </td>
634
639
          <td></td><td> const</td>
635
640
        </tr>
636
641
      </table>
637
 
</div>
638
 
<div class="memdoc">
 
642
</div><div class="memdoc">
639
643
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a5bcb22a3f2e11e42e7469602b75b3c1e">inverseCoordinatesOf()</a>, but with <code>float</code> parameters. </p>
640
644
 
641
645
</div>
642
646
</div>
643
 
<a class="anchor" id="a6a2eb1467ca31f7db460a2d6b7166a07"></a><!-- doxytag: member="qglviewer::Frame::getInverseTransformOf" ref="a6a2eb1467ca31f7db460a2d6b7166a07" args="(const float src[3], float res[3]) const " -->
 
647
<a class="anchor" id="a6a2eb1467ca31f7db460a2d6b7166a07"></a>
644
648
<div class="memitem">
645
649
<div class="memproto">
646
650
      <table class="memname">
647
651
        <tr>
648
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a6a2eb1467ca31f7db460a2d6b7166a07">getInverseTransformOf</a> </td>
 
652
          <td class="memname">void getInverseTransformOf </td>
649
653
          <td>(</td>
650
654
          <td class="paramtype">const float&#160;</td>
651
655
          <td class="paramname"><em>src</em>[3], </td>
662
666
          <td></td><td> const</td>
663
667
        </tr>
664
668
      </table>
665
 
</div>
666
 
<div class="memdoc">
 
669
</div><div class="memdoc">
667
670
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#aba2c6c46c1825a81f09d22322b03d9b5">inverseTransformOf()</a>, but with <code>float</code> parameters. </p>
668
671
 
669
672
</div>
670
673
</div>
671
 
<a class="anchor" id="abe456b2ee906b9def0d2ec0c949a9497"></a><!-- doxytag: member="qglviewer::Frame::getLocalCoordinatesOf" ref="abe456b2ee906b9def0d2ec0c949a9497" args="(const float src[3], float res[3]) const " -->
 
674
<a class="anchor" id="abe456b2ee906b9def0d2ec0c949a9497"></a>
672
675
<div class="memitem">
673
676
<div class="memproto">
674
677
      <table class="memname">
675
678
        <tr>
676
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#abe456b2ee906b9def0d2ec0c949a9497">getLocalCoordinatesOf</a> </td>
 
679
          <td class="memname">void getLocalCoordinatesOf </td>
677
680
          <td>(</td>
678
681
          <td class="paramtype">const float&#160;</td>
679
682
          <td class="paramname"><em>src</em>[3], </td>
690
693
          <td></td><td> const</td>
691
694
        </tr>
692
695
      </table>
693
 
</div>
694
 
<div class="memdoc">
 
696
</div><div class="memdoc">
695
697
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a2b113688a0cab6c439dfbf598fd45e70">localCoordinatesOf()</a>, but with <code>float</code> parameters. </p>
696
698
 
697
699
</div>
698
700
</div>
699
 
<a class="anchor" id="adbd3252d2089f077e23e78345b3723c2"></a><!-- doxytag: member="qglviewer::Frame::getLocalInverseCoordinatesOf" ref="adbd3252d2089f077e23e78345b3723c2" args="(const float src[3], float res[3]) const " -->
 
701
<a class="anchor" id="adbd3252d2089f077e23e78345b3723c2"></a>
700
702
<div class="memitem">
701
703
<div class="memproto">
702
704
      <table class="memname">
703
705
        <tr>
704
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#adbd3252d2089f077e23e78345b3723c2">getLocalInverseCoordinatesOf</a> </td>
 
706
          <td class="memname">void getLocalInverseCoordinatesOf </td>
705
707
          <td>(</td>
706
708
          <td class="paramtype">const float&#160;</td>
707
709
          <td class="paramname"><em>src</em>[3], </td>
718
720
          <td></td><td> const</td>
719
721
        </tr>
720
722
      </table>
721
 
</div>
722
 
<div class="memdoc">
 
723
</div><div class="memdoc">
723
724
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a4e6ac1c504a2f70fdbc0e7383c1aa7c7">localInverseCoordinatesOf()</a>, but with <code>float</code> parameters. </p>
724
725
 
725
726
</div>
726
727
</div>
727
 
<a class="anchor" id="a62b201feca5e0ebecc03a71b9566d97c"></a><!-- doxytag: member="qglviewer::Frame::getLocalInverseTransformOf" ref="a62b201feca5e0ebecc03a71b9566d97c" args="(const float src[3], float res[3]) const " -->
 
728
<a class="anchor" id="a62b201feca5e0ebecc03a71b9566d97c"></a>
728
729
<div class="memitem">
729
730
<div class="memproto">
730
731
      <table class="memname">
731
732
        <tr>
732
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a62b201feca5e0ebecc03a71b9566d97c">getLocalInverseTransformOf</a> </td>
 
733
          <td class="memname">void getLocalInverseTransformOf </td>
733
734
          <td>(</td>
734
735
          <td class="paramtype">const float&#160;</td>
735
736
          <td class="paramname"><em>src</em>[3], </td>
746
747
          <td></td><td> const</td>
747
748
        </tr>
748
749
      </table>
749
 
</div>
750
 
<div class="memdoc">
 
750
</div><div class="memdoc">
751
751
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#ad36cf320ff7cf6c8f9a2ac527c924f9e">localInverseTransformOf()</a>, but with <code>float</code> parameters. </p>
752
752
 
753
753
</div>
754
754
</div>
755
 
<a class="anchor" id="a6e4aeb1d5aafee31442cc3c82a6ee215"></a><!-- doxytag: member="qglviewer::Frame::getLocalTransformOf" ref="a6e4aeb1d5aafee31442cc3c82a6ee215" args="(const float src[3], float res[3]) const " -->
 
755
<a class="anchor" id="a6e4aeb1d5aafee31442cc3c82a6ee215"></a>
756
756
<div class="memitem">
757
757
<div class="memproto">
758
758
      <table class="memname">
759
759
        <tr>
760
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a6e4aeb1d5aafee31442cc3c82a6ee215">getLocalTransformOf</a> </td>
 
760
          <td class="memname">void getLocalTransformOf </td>
761
761
          <td>(</td>
762
762
          <td class="paramtype">const float&#160;</td>
763
763
          <td class="paramname"><em>src</em>[3], </td>
774
774
          <td></td><td> const</td>
775
775
        </tr>
776
776
      </table>
777
 
</div>
778
 
<div class="memdoc">
 
777
</div><div class="memdoc">
779
778
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a37239448835f46771b9598a31b964cf2">localTransformOf()</a>, but with <code>float</code> parameters. </p>
780
779
 
781
780
</div>
782
781
</div>
783
 
<a class="anchor" id="a4915640a54a6b48a99cbdd0cd42fec48"></a><!-- doxytag: member="qglviewer::Frame::getMatrix" ref="a4915640a54a6b48a99cbdd0cd42fec48" args="(GLdouble m[4][4]) const " -->
 
782
<a class="anchor" id="a4915640a54a6b48a99cbdd0cd42fec48"></a>
784
783
<div class="memitem">
785
784
<div class="memproto">
786
785
      <table class="memname">
787
786
        <tr>
788
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a4915640a54a6b48a99cbdd0cd42fec48">getMatrix</a> </td>
 
787
          <td class="memname">void getMatrix </td>
789
788
          <td>(</td>
790
789
          <td class="paramtype">GLdouble&#160;</td>
791
790
          <td class="paramname"><em>m</em>[4][4]</td><td>)</td>
792
791
          <td> const</td>
793
792
        </tr>
794
793
      </table>
795
 
</div>
796
 
<div class="memdoc">
 
794
</div><div class="memdoc">
797
795
<p><code>GLdouble</code>[4][4] version of <a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix()</a>. See also <a class="el" href="classqglviewer_1_1Frame.html#a45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix()</a> and <a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix()</a>. </p>
798
796
 
799
797
</div>
800
798
</div>
801
 
<a class="anchor" id="a15f0dc7596dc78437154302466ac3c0a"></a><!-- doxytag: member="qglviewer::Frame::getMatrix" ref="a15f0dc7596dc78437154302466ac3c0a" args="(GLdouble m[16]) const " -->
 
799
<a class="anchor" id="a15f0dc7596dc78437154302466ac3c0a"></a>
802
800
<div class="memitem">
803
801
<div class="memproto">
804
802
      <table class="memname">
805
803
        <tr>
806
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a4915640a54a6b48a99cbdd0cd42fec48">getMatrix</a> </td>
 
804
          <td class="memname">void getMatrix </td>
807
805
          <td>(</td>
808
806
          <td class="paramtype">GLdouble&#160;</td>
809
807
          <td class="paramname"><em>m</em>[16]</td><td>)</td>
810
808
          <td> const</td>
811
809
        </tr>
812
810
      </table>
813
 
</div>
814
 
<div class="memdoc">
 
811
</div><div class="memdoc">
815
812
<p><code>GLdouble</code>[16] version of <a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix()</a>. See also <a class="el" href="classqglviewer_1_1Frame.html#a45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix()</a> and <a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix()</a>. </p>
816
813
 
817
814
</div>
818
815
</div>
819
 
<a class="anchor" id="ac47c3b7fd6023734ba40249bea1fd253"></a><!-- doxytag: member="qglviewer::Frame::getOrientation" ref="ac47c3b7fd6023734ba40249bea1fd253" args="(double &amp;q0, double &amp;q1, double &amp;q2, double &amp;q3) const " -->
 
816
<a class="anchor" id="ac47c3b7fd6023734ba40249bea1fd253"></a>
820
817
<div class="memitem">
821
818
<div class="memproto">
822
819
      <table class="memname">
823
820
        <tr>
824
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#ac47c3b7fd6023734ba40249bea1fd253">getOrientation</a> </td>
 
821
          <td class="memname">void getOrientation </td>
825
822
          <td>(</td>
826
823
          <td class="paramtype">double &amp;&#160;</td>
827
824
          <td class="paramname"><em>q0</em>, </td>
850
847
          <td></td><td> const</td>
851
848
        </tr>
852
849
      </table>
853
 
</div>
854
 
<div class="memdoc">
 
850
</div><div class="memdoc">
855
851
<p>Get the current orientation of the frame (same as <a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation()</a>). Parameters are the orientation <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a> values. See also <a class="el" href="classqglviewer_1_1Frame.html#a6733704520780505759efdef38a68b8b">setOrientation()</a>.</p>
856
852
<p>The <code>q</code> are set to the <a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation()</a> of the Frame.</p>
857
853
<p>See <a class="el" href="classqglviewer_1_1Quaternion.html#a81ba24ffd95778f3ca4e51b2b9922f45">Quaternion::Quaternion(double, double, double, double)</a> for details on <code>q</code>. </p>
858
854
 
859
855
</div>
860
856
</div>
861
 
<a class="anchor" id="ab3ca600424074ccaf5ee078c8d3149c3"></a><!-- doxytag: member="qglviewer::Frame::getPosition" ref="ab3ca600424074ccaf5ee078c8d3149c3" args="(float &amp;x, float &amp;y, float &amp;z) const " -->
 
857
<a class="anchor" id="ab3ca600424074ccaf5ee078c8d3149c3"></a>
862
858
<div class="memitem">
863
859
<div class="memproto">
864
860
      <table class="memname">
865
861
        <tr>
866
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#ab3ca600424074ccaf5ee078c8d3149c3">getPosition</a> </td>
 
862
          <td class="memname">void getPosition </td>
867
863
          <td>(</td>
868
864
          <td class="paramtype">float &amp;&#160;</td>
869
865
          <td class="paramname"><em>x</em>, </td>
886
882
          <td></td><td> const</td>
887
883
        </tr>
888
884
      </table>
889
 
</div>
890
 
<div class="memdoc">
 
885
</div><div class="memdoc">
891
886
<p><code>x</code>, <code>y</code> and <code>z</code> are set to the <a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a> of the Frame. </p>
892
887
 
893
888
</div>
894
889
</div>
895
 
<a class="anchor" id="a475a20f772ff87508b673a586fc50bbb"></a><!-- doxytag: member="qglviewer::Frame::getRotation" ref="a475a20f772ff87508b673a586fc50bbb" args="(double &amp;q0, double &amp;q1, double &amp;q2, double &amp;q3) const " -->
 
890
<a class="anchor" id="a475a20f772ff87508b673a586fc50bbb"></a>
896
891
<div class="memitem">
897
892
<div class="memproto">
898
893
      <table class="memname">
899
894
        <tr>
900
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a475a20f772ff87508b673a586fc50bbb">getRotation</a> </td>
 
895
          <td class="memname">void getRotation </td>
901
896
          <td>(</td>
902
897
          <td class="paramtype">double &amp;&#160;</td>
903
898
          <td class="paramname"><em>q0</em>, </td>
926
921
          <td></td><td> const</td>
927
922
        </tr>
928
923
      </table>
929
 
</div>
930
 
<div class="memdoc">
 
924
</div><div class="memdoc">
931
925
<p>The <code>q</code> are set to the <a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> of the Frame.</p>
932
926
<p>See <a class="el" href="classqglviewer_1_1Quaternion.html#a81ba24ffd95778f3ca4e51b2b9922f45">Quaternion::Quaternion(double, double, double, double)</a> for details on <code>q</code>. </p>
933
927
 
934
928
</div>
935
929
</div>
936
 
<a class="anchor" id="aac70b883f8e3635d88356cb08b1abae3"></a><!-- doxytag: member="qglviewer::Frame::getTransformOf" ref="aac70b883f8e3635d88356cb08b1abae3" args="(const float src[3], float res[3]) const " -->
 
930
<a class="anchor" id="aac70b883f8e3635d88356cb08b1abae3"></a>
937
931
<div class="memitem">
938
932
<div class="memproto">
939
933
      <table class="memname">
940
934
        <tr>
941
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#aac70b883f8e3635d88356cb08b1abae3">getTransformOf</a> </td>
 
935
          <td class="memname">void getTransformOf </td>
942
936
          <td>(</td>
943
937
          <td class="paramtype">const float&#160;</td>
944
938
          <td class="paramname"><em>src</em>[3], </td>
955
949
          <td></td><td> const</td>
956
950
        </tr>
957
951
      </table>
958
 
</div>
959
 
<div class="memdoc">
 
952
</div><div class="memdoc">
960
953
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a05a3e18419f02427366a95b1e299f12e">transformOf()</a>, but with <code>float</code> parameters. </p>
961
954
 
962
955
</div>
963
956
</div>
964
 
<a class="anchor" id="a4eed4b2770a62e5ebb32d3dcee642c52"></a><!-- doxytag: member="qglviewer::Frame::getTransformOfFrom" ref="a4eed4b2770a62e5ebb32d3dcee642c52" args="(const float src[3], float res[3], const Frame *const from) const " -->
 
957
<a class="anchor" id="a4eed4b2770a62e5ebb32d3dcee642c52"></a>
965
958
<div class="memitem">
966
959
<div class="memproto">
967
960
      <table class="memname">
968
961
        <tr>
969
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a4eed4b2770a62e5ebb32d3dcee642c52">getTransformOfFrom</a> </td>
 
962
          <td class="memname">void getTransformOfFrom </td>
970
963
          <td>(</td>
971
964
          <td class="paramtype">const float&#160;</td>
972
965
          <td class="paramname"><em>src</em>[3], </td>
989
982
          <td></td><td> const</td>
990
983
        </tr>
991
984
      </table>
992
 
</div>
993
 
<div class="memdoc">
 
985
</div><div class="memdoc">
994
986
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a3416ca5a53c1f2d932fca1906ec1c6c7">transformOfFrom()</a>, but with <code>float</code> parameters. </p>
995
987
 
996
988
</div>
997
989
</div>
998
 
<a class="anchor" id="a7d36c3c2d4b004b3e5d296aa58541f9f"></a><!-- doxytag: member="qglviewer::Frame::getTransformOfIn" ref="a7d36c3c2d4b004b3e5d296aa58541f9f" args="(const float src[3], float res[3], const Frame *const in) const " -->
 
990
<a class="anchor" id="a7d36c3c2d4b004b3e5d296aa58541f9f"></a>
999
991
<div class="memitem">
1000
992
<div class="memproto">
1001
993
      <table class="memname">
1002
994
        <tr>
1003
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a7d36c3c2d4b004b3e5d296aa58541f9f">getTransformOfIn</a> </td>
 
995
          <td class="memname">void getTransformOfIn </td>
1004
996
          <td>(</td>
1005
997
          <td class="paramtype">const float&#160;</td>
1006
998
          <td class="paramname"><em>src</em>[3], </td>
1023
1015
          <td></td><td> const</td>
1024
1016
        </tr>
1025
1017
      </table>
1026
 
</div>
1027
 
<div class="memdoc">
 
1018
</div><div class="memdoc">
1028
1019
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a01636f93c09d6fd9fca90cb671afdda0">transformOfIn()</a>, but with <code>float</code> parameters. </p>
1029
1020
 
1030
1021
</div>
1031
1022
</div>
1032
 
<a class="anchor" id="a39804059e5c4e694a6cb13b71347da97"></a><!-- doxytag: member="qglviewer::Frame::getTranslation" ref="a39804059e5c4e694a6cb13b71347da97" args="(float &amp;x, float &amp;y, float &amp;z) const " -->
 
1023
<a class="anchor" id="a39804059e5c4e694a6cb13b71347da97"></a>
1033
1024
<div class="memitem">
1034
1025
<div class="memproto">
1035
1026
      <table class="memname">
1036
1027
        <tr>
1037
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a39804059e5c4e694a6cb13b71347da97">getTranslation</a> </td>
 
1028
          <td class="memname">void getTranslation </td>
1038
1029
          <td>(</td>
1039
1030
          <td class="paramtype">float &amp;&#160;</td>
1040
1031
          <td class="paramname"><em>x</em>, </td>
1057
1048
          <td></td><td> const</td>
1058
1049
        </tr>
1059
1050
      </table>
1060
 
</div>
1061
 
<div class="memdoc">
 
1051
</div><div class="memdoc">
1062
1052
<p>Fill <code>x</code>, <code>y</code> and <code>z</code> with the <a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation()</a> of the Frame. </p>
1063
1053
 
1064
1054
</div>
1065
1055
</div>
1066
 
<a class="anchor" id="a45358fae434b3912ce81577dc7cf4fc9"></a><!-- doxytag: member="qglviewer::Frame::getWorldMatrix" ref="a45358fae434b3912ce81577dc7cf4fc9" args="(GLdouble m[4][4]) const " -->
 
1056
<a class="anchor" id="a45358fae434b3912ce81577dc7cf4fc9"></a>
1067
1057
<div class="memitem">
1068
1058
<div class="memproto">
1069
1059
      <table class="memname">
1070
1060
        <tr>
1071
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix</a> </td>
 
1061
          <td class="memname">void getWorldMatrix </td>
1072
1062
          <td>(</td>
1073
1063
          <td class="paramtype">GLdouble&#160;</td>
1074
1064
          <td class="paramname"><em>m</em>[4][4]</td><td>)</td>
1075
1065
          <td> const</td>
1076
1066
        </tr>
1077
1067
      </table>
1078
 
</div>
1079
 
<div class="memdoc">
 
1068
</div><div class="memdoc">
1080
1069
<p>float[4][4] parameter version of <a class="el" href="classqglviewer_1_1Frame.html#a39aa0648db05006e2b2f22ac5d971141">worldMatrix()</a>. See also <a class="el" href="classqglviewer_1_1Frame.html#a4915640a54a6b48a99cbdd0cd42fec48">getMatrix()</a> and <a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix()</a>. </p>
1081
1070
 
1082
1071
</div>
1083
1072
</div>
1084
 
<a class="anchor" id="ac808850371649942726dd474aba29ead"></a><!-- doxytag: member="qglviewer::Frame::getWorldMatrix" ref="ac808850371649942726dd474aba29ead" args="(GLdouble m[16]) const " -->
 
1073
<a class="anchor" id="ac808850371649942726dd474aba29ead"></a>
1085
1074
<div class="memitem">
1086
1075
<div class="memproto">
1087
1076
      <table class="memname">
1088
1077
        <tr>
1089
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix</a> </td>
 
1078
          <td class="memname">void getWorldMatrix </td>
1090
1079
          <td>(</td>
1091
1080
          <td class="paramtype">GLdouble&#160;</td>
1092
1081
          <td class="paramname"><em>m</em>[16]</td><td>)</td>
1093
1082
          <td> const</td>
1094
1083
        </tr>
1095
1084
      </table>
1096
 
</div>
1097
 
<div class="memdoc">
 
1085
</div><div class="memdoc">
1098
1086
<p>float[16] parameter version of <a class="el" href="classqglviewer_1_1Frame.html#a39aa0648db05006e2b2f22ac5d971141">worldMatrix()</a>. See also <a class="el" href="classqglviewer_1_1Frame.html#a4915640a54a6b48a99cbdd0cd42fec48">getMatrix()</a> and <a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix()</a>. </p>
1099
1087
 
1100
1088
</div>
1101
1089
</div>
1102
 
<a class="anchor" id="acd13d2ddeca530cb9f26ead47f7d25d3"></a><!-- doxytag: member="qglviewer::Frame::initFromDOMElement" ref="acd13d2ddeca530cb9f26ead47f7d25d3" args="(const QDomElement &amp;element)" -->
 
1090
<a class="anchor" id="acd13d2ddeca530cb9f26ead47f7d25d3"></a>
1103
1091
<div class="memitem">
1104
1092
<div class="memproto">
 
1093
<table class="mlabels">
 
1094
  <tr>
 
1095
  <td class="mlabels-left">
1105
1096
      <table class="memname">
1106
1097
        <tr>
1107
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#acd13d2ddeca530cb9f26ead47f7d25d3">initFromDOMElement</a> </td>
 
1098
          <td class="memname">void initFromDOMElement </td>
1108
1099
          <td>(</td>
1109
1100
          <td class="paramtype">const QDomElement &amp;&#160;</td>
1110
1101
          <td class="paramname"><em>element</em></td><td>)</td>
1111
 
          <td><code> [virtual, slot]</code></td>
 
1102
          <td></td>
1112
1103
        </tr>
1113
1104
      </table>
1114
 
</div>
1115
 
<div class="memdoc">
 
1105
  </td>
 
1106
  <td class="mlabels-right">
 
1107
<span class="mlabels"><span class="mlabel">virtual</span><span class="mlabel">slot</span></span>  </td>
 
1108
  </tr>
 
1109
</table>
 
1110
</div><div class="memdoc">
1116
1111
<p>Restores the Frame state from a <code>QDomElement</code> created by <a class="el" href="classqglviewer_1_1Frame.html#a48e0e2dd26cd96418c8b889ceabe80f6">domElement()</a>.</p>
1117
1112
<p>See <a class="el" href="classqglviewer_1_1Frame.html#a48e0e2dd26cd96418c8b889ceabe80f6">domElement()</a> for the <code>QDomElement</code> syntax. See the <a class="el" href="classqglviewer_1_1Vec.html#acd13d2ddeca530cb9f26ead47f7d25d3">Vec::initFromDOMElement()</a> and <a class="el" href="classqglviewer_1_1Quaternion.html#acd13d2ddeca530cb9f26ead47f7d25d3">Quaternion::initFromDOMElement()</a> documentations for details on default values if an argument is missing.</p>
1118
 
<dl class="attention"><dt><b>Attention:</b></dt><dd>The <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> are not restored by this method and are left unchanged. </dd></dl>
 
1113
<dl class="section attention"><dt>Attention:</dt><dd>The <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> are not restored by this method and are left unchanged. </dd></dl>
1119
1114
 
1120
1115
<p>Reimplemented in <a class="el" href="classqglviewer_1_1ManipulatedFrame.html#acd13d2ddeca530cb9f26ead47f7d25d3">ManipulatedFrame</a>, and <a class="el" href="classqglviewer_1_1ManipulatedCameraFrame.html#acd13d2ddeca530cb9f26ead47f7d25d3">ManipulatedCameraFrame</a>.</p>
1121
1116
 
1122
1117
</div>
1123
1118
</div>
1124
 
<a class="anchor" id="ab55c2a4f1732b90057fae4b6037399de"></a><!-- doxytag: member="qglviewer::Frame::interpolated" ref="ab55c2a4f1732b90057fae4b6037399de" args="()" -->
 
1119
<a class="anchor" id="ab55c2a4f1732b90057fae4b6037399de"></a>
1125
1120
<div class="memitem">
1126
1121
<div class="memproto">
 
1122
<table class="mlabels">
 
1123
  <tr>
 
1124
  <td class="mlabels-left">
1127
1125
      <table class="memname">
1128
1126
        <tr>
1129
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#ab55c2a4f1732b90057fae4b6037399de">interpolated</a> </td>
 
1127
          <td class="memname">void interpolated </td>
1130
1128
          <td>(</td>
1131
1129
          <td class="paramname"></td><td>)</td>
1132
 
          <td><code> [signal]</code></td>
 
1130
          <td></td>
1133
1131
        </tr>
1134
1132
      </table>
1135
 
</div>
1136
 
<div class="memdoc">
 
1133
  </td>
 
1134
  <td class="mlabels-right">
 
1135
<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
 
1136
  </tr>
 
1137
</table>
 
1138
</div><div class="memdoc">
1137
1139
<p>This signal is emitted when the Frame is interpolated by a <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html" title="A keyFrame Catmull-Rom Frame interpolator.">KeyFrameInterpolator</a>.</p>
1138
1140
<p>See the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html" title="A keyFrame Catmull-Rom Frame interpolator.">KeyFrameInterpolator</a> documentation for details.</p>
1139
1141
<p>If a <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html" title="A keyFrame Catmull-Rom Frame interpolator.">KeyFrameInterpolator</a> is used to successively interpolate several Frames in your scene, connect the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab55c2a4f1732b90057fae4b6037399de">KeyFrameInterpolator::interpolated()</a> signal instead (identical, but independent of the interpolated Frame). </p>
1140
1142
 
1141
1143
</div>
1142
1144
</div>
1143
 
<a class="anchor" id="a4534c3188c217feb8d21465d4cefd4ad"></a><!-- doxytag: member="qglviewer::Frame::inverse" ref="a4534c3188c217feb8d21465d4cefd4ad" args="() const " -->
 
1145
<a class="anchor" id="a4534c3188c217feb8d21465d4cefd4ad"></a>
1144
1146
<div class="memitem">
1145
1147
<div class="memproto">
1146
1148
      <table class="memname">
1147
1149
        <tr>
1148
 
          <td class="memname">Frame <a class="el" href="classqglviewer_1_1Frame.html#a4534c3188c217feb8d21465d4cefd4ad">inverse</a> </td>
 
1150
          <td class="memname">Frame inverse </td>
1149
1151
          <td>(</td>
1150
1152
          <td class="paramname"></td><td>)</td>
1151
1153
          <td> const</td>
1152
1154
        </tr>
1153
1155
      </table>
1154
 
</div>
1155
 
<div class="memdoc">
 
1156
</div><div class="memdoc">
1156
1157
<p>Returns a Frame representing the inverse of the Frame space transformation.</p>
1157
1158
<p>The <a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> of the new Frame is the <a class="el" href="classqglviewer_1_1Quaternion.html#ac378ebc684d691dc25336b895f24a82e">Quaternion::inverse()</a> of the original rotation. Its <a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation()</a> is the negated inverse rotated image of the original translation.</p>
1158
1159
<p>If a Frame is considered as a space rigid transformation (translation and rotation), the <a class="el" href="classqglviewer_1_1Frame.html#a4534c3188c217feb8d21465d4cefd4ad">inverse()</a> Frame performs the inverse transformation.</p>
1159
1160
<p>Only the local Frame transformation (i.e. defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a>) is inverted. Use <a class="el" href="classqglviewer_1_1Frame.html#a37d4da8cfd297273e7bb55538debaa3e">worldInverse()</a> for a global inverse.</p>
1160
1161
<p>The resulting Frame has the same <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> as the Frame and a <code>NULL</code> <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>.</p>
1161
 
<dl class="note"><dt><b>Note:</b></dt><dd>The scaling factor of the 4x4 matrix is 1.0. </dd></dl>
 
1162
<dl class="section note"><dt>Note:</dt><dd>The scaling factor of the 4x4 matrix is 1.0. </dd></dl>
1162
1163
 
1163
1164
</div>
1164
1165
</div>
1165
 
<a class="anchor" id="a5bcb22a3f2e11e42e7469602b75b3c1e"></a><!-- doxytag: member="qglviewer::Frame::inverseCoordinatesOf" ref="a5bcb22a3f2e11e42e7469602b75b3c1e" args="(const Vec &amp;src) const " -->
 
1166
<a class="anchor" id="a5bcb22a3f2e11e42e7469602b75b3c1e"></a>
1166
1167
<div class="memitem">
1167
1168
<div class="memproto">
1168
1169
      <table class="memname">
1169
1170
        <tr>
1170
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> <a class="el" href="classqglviewer_1_1Frame.html#a5bcb22a3f2e11e42e7469602b75b3c1e">inverseCoordinatesOf</a> </td>
 
1171
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> inverseCoordinatesOf </td>
1171
1172
          <td>(</td>
1172
1173
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
1173
1174
          <td class="paramname"><em>src</em></td><td>)</td>
1174
1175
          <td> const</td>
1175
1176
        </tr>
1176
1177
      </table>
1177
 
</div>
1178
 
<div class="memdoc">
 
1178
</div><div class="memdoc">
1179
1179
<p>Returns the world coordinates of the point whose position in the Frame coordinate system is <code>src</code> (converts from Frame to world).</p>
1180
1180
<p><a class="el" href="classqglviewer_1_1Frame.html#ac706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a> performs the inverse convertion. Use <a class="el" href="classqglviewer_1_1Frame.html#aba2c6c46c1825a81f09d22322b03d9b5">inverseTransformOf()</a> to transform 3D vectors instead of 3D coordinates. </p>
1181
1181
 
1182
1182
</div>
1183
1183
</div>
1184
 
<a class="anchor" id="aba2c6c46c1825a81f09d22322b03d9b5"></a><!-- doxytag: member="qglviewer::Frame::inverseTransformOf" ref="aba2c6c46c1825a81f09d22322b03d9b5" args="(const Vec &amp;src) const " -->
 
1184
<a class="anchor" id="aba2c6c46c1825a81f09d22322b03d9b5"></a>
1185
1185
<div class="memitem">
1186
1186
<div class="memproto">
1187
1187
      <table class="memname">
1188
1188
        <tr>
1189
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> <a class="el" href="classqglviewer_1_1Frame.html#aba2c6c46c1825a81f09d22322b03d9b5">inverseTransformOf</a> </td>
 
1189
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> inverseTransformOf </td>
1190
1190
          <td>(</td>
1191
1191
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
1192
1192
          <td class="paramname"><em>src</em></td><td>)</td>
1193
1193
          <td> const</td>
1194
1194
        </tr>
1195
1195
      </table>
1196
 
</div>
1197
 
<div class="memdoc">
 
1196
</div><div class="memdoc">
1198
1197
<p>Returns the world transform of the vector whose coordinates in the Frame coordinate system is <code>src</code> (converts vectors from Frame to world).</p>
1199
1198
<p><a class="el" href="classqglviewer_1_1Frame.html#a05a3e18419f02427366a95b1e299f12e">transformOf()</a> performs the inverse transformation. Use <a class="el" href="classqglviewer_1_1Frame.html#a5bcb22a3f2e11e42e7469602b75b3c1e">inverseCoordinatesOf()</a> to transform 3D coordinates instead of 3D vectors. </p>
1200
1199
 
1201
1200
</div>
1202
1201
</div>
1203
 
<a class="anchor" id="a2b113688a0cab6c439dfbf598fd45e70"></a><!-- doxytag: member="qglviewer::Frame::localCoordinatesOf" ref="a2b113688a0cab6c439dfbf598fd45e70" args="(const Vec &amp;src) const " -->
 
1202
<a class="anchor" id="a2b113688a0cab6c439dfbf598fd45e70"></a>
1204
1203
<div class="memitem">
1205
1204
<div class="memproto">
1206
1205
      <table class="memname">
1207
1206
        <tr>
1208
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> <a class="el" href="classqglviewer_1_1Frame.html#a2b113688a0cab6c439dfbf598fd45e70">localCoordinatesOf</a> </td>
 
1207
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> localCoordinatesOf </td>
1209
1208
          <td>(</td>
1210
1209
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
1211
1210
          <td class="paramname"><em>src</em></td><td>)</td>
1212
1211
          <td> const</td>
1213
1212
        </tr>
1214
1213
      </table>
1215
 
</div>
1216
 
<div class="memdoc">
 
1214
</div><div class="memdoc">
1217
1215
<p>Returns the Frame coordinates of a point <code>src</code> defined in the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> coordinate system (converts from <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> to Frame).</p>
1218
1216
<p><a class="el" href="classqglviewer_1_1Frame.html#a4e6ac1c504a2f70fdbc0e7383c1aa7c7">localInverseCoordinatesOf()</a> performs the inverse convertion. See also <a class="el" href="classqglviewer_1_1Frame.html#a37239448835f46771b9598a31b964cf2">localTransformOf()</a>. </p>
1219
1217
 
1220
1218
</div>
1221
1219
</div>
1222
 
<a class="anchor" id="a4e6ac1c504a2f70fdbc0e7383c1aa7c7"></a><!-- doxytag: member="qglviewer::Frame::localInverseCoordinatesOf" ref="a4e6ac1c504a2f70fdbc0e7383c1aa7c7" args="(const Vec &amp;src) const " -->
 
1220
<a class="anchor" id="a4e6ac1c504a2f70fdbc0e7383c1aa7c7"></a>
1223
1221
<div class="memitem">
1224
1222
<div class="memproto">
1225
1223
      <table class="memname">
1226
1224
        <tr>
1227
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> <a class="el" href="classqglviewer_1_1Frame.html#a4e6ac1c504a2f70fdbc0e7383c1aa7c7">localInverseCoordinatesOf</a> </td>
 
1225
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> localInverseCoordinatesOf </td>
1228
1226
          <td>(</td>
1229
1227
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
1230
1228
          <td class="paramname"><em>src</em></td><td>)</td>
1231
1229
          <td> const</td>
1232
1230
        </tr>
1233
1231
      </table>
1234
 
</div>
1235
 
<div class="memdoc">
 
1232
</div><div class="memdoc">
1236
1233
<p>Returns the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> coordinates of a point <code>src</code> defined in the Frame coordinate system (converts from Frame to <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a>).</p>
1237
1234
<p><a class="el" href="classqglviewer_1_1Frame.html#a2b113688a0cab6c439dfbf598fd45e70">localCoordinatesOf()</a> performs the inverse convertion. See also <a class="el" href="classqglviewer_1_1Frame.html#ad36cf320ff7cf6c8f9a2ac527c924f9e">localInverseTransformOf()</a>. </p>
1238
1235
 
1239
1236
</div>
1240
1237
</div>
1241
 
<a class="anchor" id="ad36cf320ff7cf6c8f9a2ac527c924f9e"></a><!-- doxytag: member="qglviewer::Frame::localInverseTransformOf" ref="ad36cf320ff7cf6c8f9a2ac527c924f9e" args="(const Vec &amp;src) const " -->
 
1238
<a class="anchor" id="ad36cf320ff7cf6c8f9a2ac527c924f9e"></a>
1242
1239
<div class="memitem">
1243
1240
<div class="memproto">
1244
1241
      <table class="memname">
1245
1242
        <tr>
1246
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> <a class="el" href="classqglviewer_1_1Frame.html#ad36cf320ff7cf6c8f9a2ac527c924f9e">localInverseTransformOf</a> </td>
 
1243
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> localInverseTransformOf </td>
1247
1244
          <td>(</td>
1248
1245
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
1249
1246
          <td class="paramname"><em>src</em></td><td>)</td>
1250
1247
          <td> const</td>
1251
1248
        </tr>
1252
1249
      </table>
1253
 
</div>
1254
 
<div class="memdoc">
 
1250
</div><div class="memdoc">
1255
1251
<p>Returns the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> transform of a vector <code>src</code> defined in the Frame coordinate system (converts vectors from Frame to <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a>).</p>
1256
1252
<p><a class="el" href="classqglviewer_1_1Frame.html#a37239448835f46771b9598a31b964cf2">localTransformOf()</a> performs the inverse transformation. See also <a class="el" href="classqglviewer_1_1Frame.html#a4e6ac1c504a2f70fdbc0e7383c1aa7c7">localInverseCoordinatesOf()</a>. </p>
1257
1253
 
1258
1254
</div>
1259
1255
</div>
1260
 
<a class="anchor" id="a37239448835f46771b9598a31b964cf2"></a><!-- doxytag: member="qglviewer::Frame::localTransformOf" ref="a37239448835f46771b9598a31b964cf2" args="(const Vec &amp;src) const " -->
 
1256
<a class="anchor" id="a37239448835f46771b9598a31b964cf2"></a>
1261
1257
<div class="memitem">
1262
1258
<div class="memproto">
1263
1259
      <table class="memname">
1264
1260
        <tr>
1265
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> <a class="el" href="classqglviewer_1_1Frame.html#a37239448835f46771b9598a31b964cf2">localTransformOf</a> </td>
 
1261
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> localTransformOf </td>
1266
1262
          <td>(</td>
1267
1263
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
1268
1264
          <td class="paramname"><em>src</em></td><td>)</td>
1269
1265
          <td> const</td>
1270
1266
        </tr>
1271
1267
      </table>
1272
 
</div>
1273
 
<div class="memdoc">
 
1268
</div><div class="memdoc">
1274
1269
<p>Returns the Frame transform of a vector <code>src</code> defined in the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> coordinate system (converts vectors from <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> to Frame).</p>
1275
1270
<p><a class="el" href="classqglviewer_1_1Frame.html#ad36cf320ff7cf6c8f9a2ac527c924f9e">localInverseTransformOf()</a> performs the inverse transformation. See also <a class="el" href="classqglviewer_1_1Frame.html#a2b113688a0cab6c439dfbf598fd45e70">localCoordinatesOf()</a>. </p>
1276
1271
 
1277
1272
</div>
1278
1273
</div>
1279
 
<a class="anchor" id="aa12123cf45f68b9f7fe0526b70ab0047"></a><!-- doxytag: member="qglviewer::Frame::matrix" ref="aa12123cf45f68b9f7fe0526b70ab0047" args="() const " -->
 
1274
<a class="anchor" id="aa12123cf45f68b9f7fe0526b70ab0047"></a>
1280
1275
<div class="memitem">
1281
1276
<div class="memproto">
1282
1277
      <table class="memname">
1283
1278
        <tr>
1284
 
          <td class="memname">const GLdouble * <a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix</a> </td>
 
1279
          <td class="memname">const GLdouble * matrix </td>
1285
1280
          <td>(</td>
1286
1281
          <td class="paramname"></td><td>)</td>
1287
1282
          <td> const</td>
1288
1283
        </tr>
1289
1284
      </table>
1290
 
</div>
1291
 
<div class="memdoc">
 
1285
</div><div class="memdoc">
1292
1286
<p>Returns the 4x4 OpenGL transformation matrix represented by the Frame.</p>
1293
1287
<p>This method should be used in conjunction with <code>glMultMatrixd()</code> to modify the OpenGL modelview matrix from a Frame hierarchy. With this Frame hierarchy: </p>
1294
 
<div class="fragment"><pre class="fragment">  <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a>* body     = <span class="keyword">new</span> <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a>();
1295
 
  <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a>* leftArm  = <span class="keyword">new</span> <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a>();
1296
 
  <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a>* rightArm = <span class="keyword">new</span> <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a>();
1297
 
  leftArm-&gt;setReferenceFrame(body);
1298
 
  rightArm-&gt;setReferenceFrame(body);
1299
 
</pre></div><p>The associated OpenGL drawing code should look like: </p>
1300
 
<div class="fragment"><pre class="fragment">  <span class="keywordtype">void</span> Viewer::draw()
1301
 
  {
1302
 
    glPushMatrix();
1303
 
    glMultMatrixd(body-&gt;matrix());
1304
 
    drawBody();
1305
 
 
1306
 
    glPushMatrix();
1307
 
    glMultMatrixd(leftArm-&gt;matrix());
1308
 
    drawArm();
1309
 
    glPopMatrix();
1310
 
 
1311
 
    glPushMatrix();
1312
 
    glMultMatrixd(rightArm-&gt;matrix());
1313
 
    drawArm();
1314
 
    glPopMatrix();
1315
 
 
1316
 
    glPopMatrix();
1317
 
  }
1318
 
</pre></div><p> Note the use of nested <code>glPushMatrix()</code> and <code>glPopMatrix()</code> blocks to represent the frame hierarchy: <code>leftArm</code> and <code>rightArm</code> are both correctly drawn with respect to the <code>body</code> coordinate system.</p>
 
1288
<div class="fragment"><div class="line">  <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a>* body     = <span class="keyword">new</span> <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a>();</div>
 
1289
<div class="line">  <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a>* leftArm  = <span class="keyword">new</span> <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a>();</div>
 
1290
<div class="line">  <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a>* rightArm = <span class="keyword">new</span> <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a>();</div>
 
1291
<div class="line">  leftArm-&gt;setReferenceFrame(body);</div>
 
1292
<div class="line">  rightArm-&gt;setReferenceFrame(body);</div>
 
1293
</div><!-- fragment --><p>The associated OpenGL drawing code should look like: </p>
 
1294
<div class="fragment"><div class="line">  <span class="keywordtype">void</span> Viewer::draw()</div>
 
1295
<div class="line">  {</div>
 
1296
<div class="line">    glPushMatrix();</div>
 
1297
<div class="line">    glMultMatrixd(body-&gt;matrix());</div>
 
1298
<div class="line">    drawBody();</div>
 
1299
<div class="line"></div>
 
1300
<div class="line">    glPushMatrix();</div>
 
1301
<div class="line">    glMultMatrixd(leftArm-&gt;matrix());</div>
 
1302
<div class="line">    drawArm();</div>
 
1303
<div class="line">    glPopMatrix();</div>
 
1304
<div class="line"></div>
 
1305
<div class="line">    glPushMatrix();</div>
 
1306
<div class="line">    glMultMatrixd(rightArm-&gt;matrix());</div>
 
1307
<div class="line">    drawArm();</div>
 
1308
<div class="line">    glPopMatrix();</div>
 
1309
<div class="line"></div>
 
1310
<div class="line">    glPopMatrix();</div>
 
1311
<div class="line">  }</div>
 
1312
</div><!-- fragment --><p> Note the use of nested <code>glPushMatrix()</code> and <code>glPopMatrix()</code> blocks to represent the frame hierarchy: <code>leftArm</code> and <code>rightArm</code> are both correctly drawn with respect to the <code>body</code> coordinate system.</p>
1319
1313
<p>This matrix only represents the local Frame transformation (i.e. with respect to the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a>). Use <a class="el" href="classqglviewer_1_1Frame.html#a39aa0648db05006e2b2f22ac5d971141">worldMatrix()</a> to get the full Frame transformation matrix (i.e. from the world to the Frame coordinate system). These two match when the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> is <code>NULL</code>.</p>
1320
1314
<p>The result is only valid until the next call to <a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#a4915640a54a6b48a99cbdd0cd42fec48">getMatrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#a39aa0648db05006e2b2f22ac5d971141">worldMatrix()</a> or <a class="el" href="classqglviewer_1_1Frame.html#a45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix()</a>. Use it immediately (as above) or use <a class="el" href="classqglviewer_1_1Frame.html#a4915640a54a6b48a99cbdd0cd42fec48">getMatrix()</a> instead.</p>
1321
 
<dl class="attention"><dt><b>Attention:</b></dt><dd>The OpenGL format of the result is the transpose of the actual mathematical European representation (translation is on the last <em>line</em> instead of the last <em>column</em>).</dd></dl>
1322
 
<dl class="note"><dt><b>Note:</b></dt><dd>The scaling factor of the 4x4 matrix is 1.0. </dd></dl>
 
1315
<dl class="section attention"><dt>Attention:</dt><dd>The OpenGL format of the result is the transpose of the actual mathematical European representation (translation is on the last <em>line</em> instead of the last <em>column</em>).</dd></dl>
 
1316
<dl class="section note"><dt>Note:</dt><dd>The scaling factor of the 4x4 matrix is 1.0. </dd></dl>
1323
1317
 
1324
1318
</div>
1325
1319
</div>
1326
 
<a class="anchor" id="ab6722375e68e03d151762ebfc83c5459"></a><!-- doxytag: member="qglviewer::Frame::modified" ref="ab6722375e68e03d151762ebfc83c5459" args="()" -->
 
1320
<a class="anchor" id="ab6722375e68e03d151762ebfc83c5459"></a>
1327
1321
<div class="memitem">
1328
1322
<div class="memproto">
 
1323
<table class="mlabels">
 
1324
  <tr>
 
1325
  <td class="mlabels-left">
1329
1326
      <table class="memname">
1330
1327
        <tr>
1331
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified</a> </td>
 
1328
          <td class="memname">void modified </td>
1332
1329
          <td>(</td>
1333
1330
          <td class="paramname"></td><td>)</td>
1334
 
          <td><code> [signal]</code></td>
 
1331
          <td></td>
1335
1332
        </tr>
1336
1333
      </table>
1337
 
</div>
1338
 
<div class="memdoc">
 
1334
  </td>
 
1335
  <td class="mlabels-right">
 
1336
<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
 
1337
  </tr>
 
1338
</table>
 
1339
</div><div class="memdoc">
1339
1340
<p>This signal is emitted whenever the <a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a> or the <a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation()</a> of the Frame is modified.</p>
1340
1341
<p>Connect this signal to any object that must be notified: </p>
1341
 
<div class="fragment"><pre class="fragment">    QObject::connect(myFrame, SIGNAL(<a class="code" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified</a>()), myObject, SLOT(update()));
1342
 
</pre></div><p> Use the <a class="el" href="classQGLViewer.html#a32d7a506084c50fd97a24f94d9ca4864">QGLViewer::QGLViewerPool()</a> to connect the signal to all the viewers.</p>
1343
 
<dl class="note"><dt><b>Note:</b></dt><dd>If your Frame is part of a Frame hierarchy (see <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a>), a modification of one of the parents of this Frame will <em>not</em> emit this signal. Use code like this to change this behavior (you can do this recursively for all the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> until the <code>NULL</code> world root frame is encountered): <div class="fragment"><pre class="fragment">    <span class="comment">// Emits the Frame modified() signal when its referenceFrame() is modified().</span>
1344
 
    connect(myFrame-&gt;referenceFrame(), SIGNAL(<a class="code" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified</a>()), myFrame, SIGNAL(<a class="code" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified</a>()));
1345
 
</pre></div></dd></dl>
1346
 
<dl class="attention"><dt><b>Attention:</b></dt><dd>Connecting this signal to a QGLWidget::updateGL() slot (or a method that calls it) will prevent you from modifying the Frame <em>inside</em> your <a class="el" href="classQGLViewer.html#abc45d04e5f5ce1fbd68f920fcdb2d0e0">QGLViewer::draw()</a> method as it would result in an infinite loop. However, <a class="el" href="classQGLViewer.html#abc45d04e5f5ce1fbd68f920fcdb2d0e0">QGLViewer::draw()</a> should not modify the scene.</dd></dl>
1347
 
<dl class="note"><dt><b>Note:</b></dt><dd>For efficiency reasons, this signal is emitted even if the Frame is not actually modified, for instance with translate(Vec(0,0,0)) or setPosition(<a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a>). </dd></dl>
 
1342
<div class="fragment"><div class="line">    QObject::connect(myFrame, SIGNAL(<a class="code" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified</a>()), myObject, SLOT(update()));</div>
 
1343
</div><!-- fragment --><p> Use the <a class="el" href="classQGLViewer.html#a32d7a506084c50fd97a24f94d9ca4864">QGLViewer::QGLViewerPool()</a> to connect the signal to all the viewers.</p>
 
1344
<dl class="section note"><dt>Note:</dt><dd>If your Frame is part of a Frame hierarchy (see <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a>), a modification of one of the parents of this Frame will <em>not</em> emit this signal. Use code like this to change this behavior (you can do this recursively for all the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> until the <code>NULL</code> world root frame is encountered): <div class="fragment"><div class="line">    <span class="comment">// Emits the Frame modified() signal when its referenceFrame() is modified().</span></div>
 
1345
<div class="line">    connect(myFrame-&gt;referenceFrame(), SIGNAL(<a class="code" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified</a>()), myFrame, SIGNAL(<a class="code" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified</a>()));</div>
 
1346
</div><!-- fragment --></dd></dl>
 
1347
<dl class="section attention"><dt>Attention:</dt><dd>Connecting this signal to a QGLWidget::updateGL() slot (or a method that calls it) will prevent you from modifying the Frame <em>inside</em> your <a class="el" href="classQGLViewer.html#abc45d04e5f5ce1fbd68f920fcdb2d0e0">QGLViewer::draw()</a> method as it would result in an infinite loop. However, <a class="el" href="classQGLViewer.html#abc45d04e5f5ce1fbd68f920fcdb2d0e0">QGLViewer::draw()</a> should not modify the scene.</dd></dl>
 
1348
<dl class="section note"><dt>Note:</dt><dd>For efficiency reasons, this signal is emitted even if the Frame is not actually modified, for instance with translate(Vec(0,0,0)) or setPosition(<a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a>). </dd></dl>
1348
1349
 
1349
1350
</div>
1350
1351
</div>
1351
 
<a class="anchor" id="aeb0f5ceffbb62f990b89b200d6ce728c"></a><!-- doxytag: member="qglviewer::Frame::operator=" ref="aeb0f5ceffbb62f990b89b200d6ce728c" args="(const Frame &amp;frame)" -->
 
1352
<a class="anchor" id="aeb0f5ceffbb62f990b89b200d6ce728c"></a>
1352
1353
<div class="memitem">
1353
1354
<div class="memproto">
1354
1355
      <table class="memname">
1360
1361
          <td></td>
1361
1362
        </tr>
1362
1363
      </table>
1363
 
</div>
1364
 
<div class="memdoc">
 
1364
</div><div class="memdoc">
1365
1365
<p>Equal operator.</p>
1366
1366
<p>The <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> pointers are copied.</p>
1367
 
<dl class="attention"><dt><b>Attention:</b></dt><dd>Signal and slot connections are not copied. </dd></dl>
 
1367
<dl class="section attention"><dt>Attention:</dt><dd>Signal and slot connections are not copied. </dd></dl>
1368
1368
 
1369
1369
</div>
1370
1370
</div>
1371
 
<a class="anchor" id="a691af39b54669fad8b4e73599de22094"></a><!-- doxytag: member="qglviewer::Frame::orientation" ref="a691af39b54669fad8b4e73599de22094" args="() const " -->
 
1371
<a class="anchor" id="a691af39b54669fad8b4e73599de22094"></a>
1372
1372
<div class="memitem">
1373
1373
<div class="memproto">
1374
1374
      <table class="memname">
1375
1375
        <tr>
1376
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> <a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation</a> </td>
 
1376
          <td class="memname"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> orientation </td>
1377
1377
          <td>(</td>
1378
1378
          <td class="paramname"></td><td>)</td>
1379
1379
          <td> const</td>
1380
1380
        </tr>
1381
1381
      </table>
1382
 
</div>
1383
 
<div class="memdoc">
 
1382
</div><div class="memdoc">
1384
1383
<p>Returns the orientation of the Frame, defined in the world coordinate system. See also <a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a>, <a class="el" href="classqglviewer_1_1Frame.html#a6733704520780505759efdef38a68b8b">setOrientation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a>. </p>
1385
1384
 
1386
1385
</div>
1387
1386
</div>
1388
 
<a class="anchor" id="abc38a05a597e07c9ff525122682adc50"></a><!-- doxytag: member="qglviewer::Frame::position" ref="abc38a05a597e07c9ff525122682adc50" args="() const " -->
 
1387
<a class="anchor" id="abc38a05a597e07c9ff525122682adc50"></a>
1389
1388
<div class="memitem">
1390
1389
<div class="memproto">
1391
1390
      <table class="memname">
1392
1391
        <tr>
1393
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> <a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position</a> </td>
 
1392
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> position </td>
1394
1393
          <td>(</td>
1395
1394
          <td class="paramname"></td><td>)</td>
1396
1395
          <td> const</td>
1397
1396
        </tr>
1398
1397
      </table>
1399
 
</div>
1400
 
<div class="memdoc">
 
1398
</div><div class="memdoc">
1401
1399
<p>Returns the position of the Frame, defined in the world coordinate system. See also <a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation()</a>, <a class="el" href="classqglviewer_1_1Frame.html#a24f5da9b3f4bf4e71dfad7a74a932e52">setPosition()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation()</a>. </p>
1402
1400
 
1403
1401
</div>
1404
1402
</div>
1405
 
<a class="anchor" id="af97ae9e790033879dfcb9837a7312255"></a><!-- doxytag: member="qglviewer::Frame::projectOnLine" ref="af97ae9e790033879dfcb9837a7312255" args="(const Vec &amp;origin, const Vec &amp;direction)" -->
 
1403
<a class="anchor" id="af97ae9e790033879dfcb9837a7312255"></a>
1406
1404
<div class="memitem">
1407
1405
<div class="memproto">
1408
1406
      <table class="memname">
1409
1407
        <tr>
1410
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#af97ae9e790033879dfcb9837a7312255">projectOnLine</a> </td>
 
1408
          <td class="memname">void projectOnLine </td>
1411
1409
          <td>(</td>
1412
1410
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
1413
1411
          <td class="paramname"><em>origin</em>, </td>
1424
1422
          <td></td><td></td>
1425
1423
        </tr>
1426
1424
      </table>
1427
 
</div>
1428
 
<div class="memdoc">
 
1425
</div><div class="memdoc">
1429
1426
<p>Translates the Frame so that its <a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a> lies on the line defined by <code>origin</code> and <code>direction</code> (defined in the world coordinate system).</p>
1430
1427
<p>Simply uses an orthogonal projection. <code>direction</code> does not need to be normalized. </p>
1431
1428
 
1432
1429
</div>
1433
1430
</div>
1434
 
<a class="anchor" id="a9794b079db5f492e8804631d3d23baec"></a><!-- doxytag: member="qglviewer::Frame::referenceFrame" ref="a9794b079db5f492e8804631d3d23baec" args="() const " -->
 
1431
<a class="anchor" id="a9794b079db5f492e8804631d3d23baec"></a>
1435
1432
<div class="memitem">
1436
1433
<div class="memproto">
1437
1434
      <table class="memname">
1438
1435
        <tr>
1439
 
          <td class="memname">const Frame* <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame</a> </td>
 
1436
          <td class="memname">const Frame* referenceFrame </td>
1440
1437
          <td>(</td>
1441
1438
          <td class="paramname"></td><td>)</td>
1442
1439
          <td> const</td>
1443
1440
        </tr>
1444
1441
      </table>
1445
 
</div>
1446
 
<div class="memdoc">
 
1442
</div><div class="memdoc">
1447
1443
<p>Returns the reference Frame, in which coordinates system the Frame is defined.</p>
1448
1444
<p>The <a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> of the Frame are defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> coordinate system. A <code>NULL</code> <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> (default value) means that the Frame is defined in the world coordinate system.</p>
1449
1445
<p>Use <a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation()</a> to recursively convert values along the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> chain and to get values expressed in the world coordinate system. The values match when the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> is <code>NULL</code>.</p>
1452
1448
 
1453
1449
</div>
1454
1450
</div>
1455
 
<a class="anchor" id="a38dffd6ee0ad7e395b49082b2b94de33"></a><!-- doxytag: member="qglviewer::Frame::rotate" ref="a38dffd6ee0ad7e395b49082b2b94de33" args="(Quaternion &amp;q)" -->
 
1451
<a class="anchor" id="a38dffd6ee0ad7e395b49082b2b94de33"></a>
1456
1452
<div class="memitem">
1457
1453
<div class="memproto">
1458
1454
      <table class="memname">
1459
1455
        <tr>
1460
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a38dffd6ee0ad7e395b49082b2b94de33">rotate</a> </td>
 
1456
          <td class="memname">void rotate </td>
1461
1457
          <td>(</td>
1462
1458
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&#160;</td>
1463
1459
          <td class="paramname"><em>q</em></td><td>)</td>
1464
1460
          <td></td>
1465
1461
        </tr>
1466
1462
      </table>
1467
 
</div>
1468
 
<div class="memdoc">
 
1463
</div><div class="memdoc">
1469
1464
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#ac754417fa609300f980fcba5405c9989">rotate(const Quaternion&amp;)</a> but <code>q</code> may be modified to satisfy the rotation <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>. Its new value corresponds to the rotation that has actually been applied to the Frame. </p>
1470
1465
 
1471
1466
</div>
1472
1467
</div>
1473
 
<a class="anchor" id="ac754417fa609300f980fcba5405c9989"></a><!-- doxytag: member="qglviewer::Frame::rotate" ref="ac754417fa609300f980fcba5405c9989" args="(const Quaternion &amp;q)" -->
 
1468
<a class="anchor" id="ac754417fa609300f980fcba5405c9989"></a>
1474
1469
<div class="memitem">
1475
1470
<div class="memproto">
1476
1471
      <table class="memname">
1477
1472
        <tr>
1478
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a38dffd6ee0ad7e395b49082b2b94de33">rotate</a> </td>
 
1473
          <td class="memname">void rotate </td>
1479
1474
          <td>(</td>
1480
1475
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&#160;</td>
1481
1476
          <td class="paramname"><em>q</em></td><td>)</td>
1482
1477
          <td></td>
1483
1478
        </tr>
1484
1479
      </table>
1485
 
</div>
1486
 
<div class="memdoc">
 
1480
</div><div class="memdoc">
1487
1481
<p>Rotates the Frame by <code>q</code> (defined in the Frame coordinate system): R = R*q.</p>
1488
1482
<p>The rotation actually applied to the Frame may differ from <code>q</code> since it can be filtered by the <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>. Use <a class="el" href="classqglviewer_1_1Frame.html#a38dffd6ee0ad7e395b49082b2b94de33">rotate(Quaternion&amp;)</a> or <a class="el" href="classqglviewer_1_1Frame.html#a9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint()</a> to retrieve the filtered rotation value. Use <a class="el" href="classqglviewer_1_1Frame.html#a857aacdb88a574ec4a363335f6152a1e">setRotation()</a> to directly rotate the Frame without taking the <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> into account.</p>
1489
1483
<p>See also <a class="el" href="classqglviewer_1_1Frame.html#ac774331eeae8d29acc94f5653b2f2c3b">translate(const Vec&amp;)</a>. Emits the <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a> signal. </p>
1490
1484
 
1491
1485
</div>
1492
1486
</div>
1493
 
<a class="anchor" id="a7fe03bbf807b109c1edb849193d03aa8"></a><!-- doxytag: member="qglviewer::Frame::rotate" ref="a7fe03bbf807b109c1edb849193d03aa8" args="(double q0, double q1, double q2, double q3)" -->
 
1487
<a class="anchor" id="a7fe03bbf807b109c1edb849193d03aa8"></a>
1494
1488
<div class="memitem">
1495
1489
<div class="memproto">
1496
1490
      <table class="memname">
1497
1491
        <tr>
1498
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a38dffd6ee0ad7e395b49082b2b94de33">rotate</a> </td>
 
1492
          <td class="memname">void rotate </td>
1499
1493
          <td>(</td>
1500
1494
          <td class="paramtype">double&#160;</td>
1501
1495
          <td class="paramname"><em>q0</em>, </td>
1524
1518
          <td></td><td></td>
1525
1519
        </tr>
1526
1520
      </table>
1527
 
</div>
1528
 
<div class="memdoc">
 
1521
</div><div class="memdoc">
1529
1522
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#ac754417fa609300f980fcba5405c9989">rotate(const Quaternion&amp;)</a> but with <code>float</code> <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a> parameters. </p>
1530
1523
 
1531
1524
</div>
1532
1525
</div>
1533
 
<a class="anchor" id="ab15e32161293dce94ae3df3bc3a7b0ad"></a><!-- doxytag: member="qglviewer::Frame::rotate" ref="ab15e32161293dce94ae3df3bc3a7b0ad" args="(double &amp;q0, double &amp;q1, double &amp;q2, double &amp;q3)" -->
 
1526
<a class="anchor" id="ab15e32161293dce94ae3df3bc3a7b0ad"></a>
1534
1527
<div class="memitem">
1535
1528
<div class="memproto">
1536
1529
      <table class="memname">
1537
1530
        <tr>
1538
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a38dffd6ee0ad7e395b49082b2b94de33">rotate</a> </td>
 
1531
          <td class="memname">void rotate </td>
1539
1532
          <td>(</td>
1540
1533
          <td class="paramtype">double &amp;&#160;</td>
1541
1534
          <td class="paramname"><em>q0</em>, </td>
1564
1557
          <td></td><td></td>
1565
1558
        </tr>
1566
1559
      </table>
1567
 
</div>
1568
 
<div class="memdoc">
 
1560
</div><div class="memdoc">
1569
1561
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a38dffd6ee0ad7e395b49082b2b94de33">rotate(Quaternion&amp;)</a> but with <code>float</code> <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a> parameters. </p>
1570
1562
 
1571
1563
</div>
1572
1564
</div>
1573
 
<a class="anchor" id="a85f48572c1298bc3192f111e8b587bca"></a><!-- doxytag: member="qglviewer::Frame::rotateAroundPoint" ref="a85f48572c1298bc3192f111e8b587bca" args="(Quaternion &amp;rotation, const Vec &amp;point)" -->
 
1565
<a class="anchor" id="a85f48572c1298bc3192f111e8b587bca"></a>
1574
1566
<div class="memitem">
1575
1567
<div class="memproto">
1576
1568
      <table class="memname">
1577
1569
        <tr>
1578
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a85f48572c1298bc3192f111e8b587bca">rotateAroundPoint</a> </td>
 
1570
          <td class="memname">void rotateAroundPoint </td>
1579
1571
          <td>(</td>
1580
1572
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&#160;</td>
1581
1573
          <td class="paramname"><em>rotation</em>, </td>
1592
1584
          <td></td><td></td>
1593
1585
        </tr>
1594
1586
      </table>
1595
 
</div>
1596
 
<div class="memdoc">
 
1587
</div><div class="memdoc">
1597
1588
<p>Makes the Frame <a class="el" href="classqglviewer_1_1Frame.html#a38dffd6ee0ad7e395b49082b2b94de33">rotate()</a> by <code>rotation</code> around <code>point</code>.</p>
1598
1589
<p><code>point</code> is defined in the world coordinate system, while the <code>rotation</code> axis is defined in the Frame coordinate system.</p>
1599
1590
<p>If the Frame has a <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>, <code>rotation</code> is first constrained using <a class="el" href="classqglviewer_1_1Constraint.html#a5de5f38e75b58476b7926171dba4b31b">Constraint::constrainRotation()</a>. The translation which results from the filtered rotation around <code>point</code> is then computed and filtered using <a class="el" href="classqglviewer_1_1Constraint.html#ab7d724965c6765209f47c1abe7f7b7b4">Constraint::constrainTranslation()</a>. The new <code>rotation</code> value corresponds to the rotation that has actually been applied to the Frame.</p>
1601
1592
 
1602
1593
</div>
1603
1594
</div>
1604
 
<a class="anchor" id="a5f87bae05096c99fb3b30cf5bb52c891"></a><!-- doxytag: member="qglviewer::Frame::rotateAroundPoint" ref="a5f87bae05096c99fb3b30cf5bb52c891" args="(const Quaternion &amp;rotation, const Vec &amp;point)" -->
 
1595
<a class="anchor" id="a5f87bae05096c99fb3b30cf5bb52c891"></a>
1605
1596
<div class="memitem">
1606
1597
<div class="memproto">
1607
1598
      <table class="memname">
1608
1599
        <tr>
1609
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a85f48572c1298bc3192f111e8b587bca">rotateAroundPoint</a> </td>
 
1600
          <td class="memname">void rotateAroundPoint </td>
1610
1601
          <td>(</td>
1611
1602
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&#160;</td>
1612
1603
          <td class="paramname"><em>rotation</em>, </td>
1623
1614
          <td></td><td></td>
1624
1615
        </tr>
1625
1616
      </table>
1626
 
</div>
1627
 
<div class="memdoc">
 
1617
</div><div class="memdoc">
1628
1618
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a85f48572c1298bc3192f111e8b587bca">rotateAroundPoint()</a>, but with a <code>const</code> <code>rotation</code> <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a>. Note that the actual rotation may differ since it can be filtered by the <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>. </p>
1629
1619
 
1630
1620
</div>
1631
1621
</div>
1632
 
<a class="anchor" id="a19ee9243c60f412dfc4eac3dcf45a5a1"></a><!-- doxytag: member="qglviewer::Frame::rotation" ref="a19ee9243c60f412dfc4eac3dcf45a5a1" args="() const " -->
 
1622
<a class="anchor" id="a19ee9243c60f412dfc4eac3dcf45a5a1"></a>
1633
1623
<div class="memitem">
1634
1624
<div class="memproto">
1635
1625
      <table class="memname">
1636
1626
        <tr>
1637
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> <a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation</a> </td>
 
1627
          <td class="memname"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> rotation </td>
1638
1628
          <td>(</td>
1639
1629
          <td class="paramname"></td><td>)</td>
1640
1630
          <td> const</td>
1641
1631
        </tr>
1642
1632
      </table>
1643
 
</div>
1644
 
<div class="memdoc">
 
1633
</div><div class="memdoc">
1645
1634
<p>Returns the Frame rotation, defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a>.</p>
1646
1635
<p>Use <a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation()</a> to get the result in the world coordinates. These two values are identical when the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> is <code>NULL</code> (default).</p>
1647
1636
<p>See also <a class="el" href="classqglviewer_1_1Frame.html#a857aacdb88a574ec4a363335f6152a1e">setRotation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint()</a>.</p>
1649
1638
 
1650
1639
</div>
1651
1640
</div>
1652
 
<a class="anchor" id="adffa44cd173714b29f2441848a39c224"></a><!-- doxytag: member="qglviewer::Frame::setConstraint" ref="adffa44cd173714b29f2441848a39c224" args="(Constraint *const constraint)" -->
 
1641
<a class="anchor" id="adffa44cd173714b29f2441848a39c224"></a>
1653
1642
<div class="memitem">
1654
1643
<div class="memproto">
1655
1644
      <table class="memname">
1656
1645
        <tr>
1657
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#adffa44cd173714b29f2441848a39c224">setConstraint</a> </td>
 
1646
          <td class="memname">void setConstraint </td>
1658
1647
          <td>(</td>
1659
1648
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Constraint.html">Constraint</a> *const&#160;</td>
1660
1649
          <td class="paramname"><em>constraint</em></td><td>)</td>
1661
1650
          <td></td>
1662
1651
        </tr>
1663
1652
      </table>
1664
 
</div>
1665
 
<div class="memdoc">
 
1653
</div><div class="memdoc">
1666
1654
<p>Sets the <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> attached to the Frame.</p>
1667
1655
<p>A <code>NULL</code> value means no constraint. The previous <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> should be deleted by the calling method if needed. </p>
1668
1656
 
1669
1657
</div>
1670
1658
</div>
1671
 
<a class="anchor" id="a5408d08ab204157ec29f555b6813f9e4"></a><!-- doxytag: member="qglviewer::Frame::setFromMatrix" ref="a5408d08ab204157ec29f555b6813f9e4" args="(const GLdouble m[4][4])" -->
 
1659
<a class="anchor" id="a5408d08ab204157ec29f555b6813f9e4"></a>
1672
1660
<div class="memitem">
1673
1661
<div class="memproto">
1674
1662
      <table class="memname">
1675
1663
        <tr>
1676
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a5408d08ab204157ec29f555b6813f9e4">setFromMatrix</a> </td>
 
1664
          <td class="memname">void setFromMatrix </td>
1677
1665
          <td>(</td>
1678
1666
          <td class="paramtype">const GLdouble&#160;</td>
1679
1667
          <td class="paramname"><em>m</em>[4][4]</td><td>)</td>
1680
1668
          <td></td>
1681
1669
        </tr>
1682
1670
      </table>
1683
 
</div>
1684
 
<div class="memdoc">
 
1671
</div><div class="memdoc">
1685
1672
<p>This is an overloaded method provided for convenience. Same as <a class="el" href="classqglviewer_1_1Frame.html#a5408d08ab204157ec29f555b6813f9e4">setFromMatrix()</a>. </p>
1686
1673
 
1687
1674
</div>
1688
1675
</div>
1689
 
<a class="anchor" id="a0c4d51f142f43235e30198e7b8abc626"></a><!-- doxytag: member="qglviewer::Frame::setFromMatrix" ref="a0c4d51f142f43235e30198e7b8abc626" args="(const GLdouble m[16])" -->
 
1676
<a class="anchor" id="a0c4d51f142f43235e30198e7b8abc626"></a>
1690
1677
<div class="memitem">
1691
1678
<div class="memproto">
1692
1679
      <table class="memname">
1693
1680
        <tr>
1694
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a5408d08ab204157ec29f555b6813f9e4">setFromMatrix</a> </td>
 
1681
          <td class="memname">void setFromMatrix </td>
1695
1682
          <td>(</td>
1696
1683
          <td class="paramtype">const GLdouble&#160;</td>
1697
1684
          <td class="paramname"><em>m</em>[16]</td><td>)</td>
1698
1685
          <td></td>
1699
1686
        </tr>
1700
1687
      </table>
1701
 
</div>
1702
 
<div class="memdoc">
 
1688
</div><div class="memdoc">
1703
1689
<p>Sets the Frame from an OpenGL matrix representation (rotation in the upper left 3x3 matrix and translation on the last line).</p>
1704
1690
<p>Hence, if a code fragment looks like: </p>
1705
 
<div class="fragment"><pre class="fragment"> GLdouble m[16]={...};
1706
 
 glMultMatrixd(m);
1707
 
</pre></div><p> It is equivalent to write: </p>
1708
 
<div class="fragment"><pre class="fragment"> <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a> fr;
1709
 
 fr.setFromMatrix(m);
1710
 
 glMultMatrixd(fr.matrix());
1711
 
</pre></div><p>Using this conversion, you can benefit from the powerful Frame transformation methods to translate points and vectors to and from the Frame coordinate system to any other Frame coordinate system (including the world coordinate system). See <a class="el" href="classqglviewer_1_1Frame.html#ac706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a05a3e18419f02427366a95b1e299f12e">transformOf()</a>.</p>
 
1691
<div class="fragment"><div class="line"> GLdouble m[16]={...};</div>
 
1692
<div class="line"> glMultMatrixd(m);</div>
 
1693
</div><!-- fragment --><p> It is equivalent to write: </p>
 
1694
<div class="fragment"><div class="line"> <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a> fr;</div>
 
1695
<div class="line"> fr.setFromMatrix(m);</div>
 
1696
<div class="line"> glMultMatrixd(fr.matrix());</div>
 
1697
</div><!-- fragment --><p>Using this conversion, you can benefit from the powerful Frame transformation methods to translate points and vectors to and from the Frame coordinate system to any other Frame coordinate system (including the world coordinate system). See <a class="el" href="classqglviewer_1_1Frame.html#ac706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a05a3e18419f02427366a95b1e299f12e">transformOf()</a>.</p>
1712
1698
<p>Emits the <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a> signal. See also <a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#a4915640a54a6b48a99cbdd0cd42fec48">getMatrix()</a> and <a class="el" href="classqglviewer_1_1Quaternion.html#a1880f20e8080ee670b6a88ed0c7d69ac">Quaternion::setFromRotationMatrix()</a>.</p>
1713
 
<dl class="attention"><dt><b>Attention:</b></dt><dd>A Frame does not contain a scale factor. The possible scaling in <code>m</code> will not be converted into the Frame by this method. </dd></dl>
 
1699
<dl class="section attention"><dt>Attention:</dt><dd>A Frame does not contain a scale factor. The possible scaling in <code>m</code> will not be converted into the Frame by this method. </dd></dl>
1714
1700
 
1715
1701
</div>
1716
1702
</div>
1717
 
<a class="anchor" id="a6733704520780505759efdef38a68b8b"></a><!-- doxytag: member="qglviewer::Frame::setOrientation" ref="a6733704520780505759efdef38a68b8b" args="(const Quaternion &amp;orientation)" -->
 
1703
<a class="anchor" id="a6733704520780505759efdef38a68b8b"></a>
1718
1704
<div class="memitem">
1719
1705
<div class="memproto">
1720
1706
      <table class="memname">
1721
1707
        <tr>
1722
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a6733704520780505759efdef38a68b8b">setOrientation</a> </td>
 
1708
          <td class="memname">void setOrientation </td>
1723
1709
          <td>(</td>
1724
1710
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&#160;</td>
1725
1711
          <td class="paramname"><em>orientation</em></td><td>)</td>
1726
1712
          <td></td>
1727
1713
        </tr>
1728
1714
      </table>
1729
 
</div>
1730
 
<div class="memdoc">
 
1715
</div><div class="memdoc">
1731
1716
<p>Sets the <a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation()</a> of the Frame, defined in the world coordinate system. Emits the <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a> signal.</p>
1732
1717
<p>Use <a class="el" href="classqglviewer_1_1Frame.html#a857aacdb88a574ec4a363335f6152a1e">setRotation()</a> to define the <em>local</em> frame rotation (with respect to the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a>). The potential <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the Frame is not taken into account, use <a class="el" href="classqglviewer_1_1Frame.html#a8b69106a268d78daf27d32854d455da4">setOrientationWithConstraint()</a> instead. </p>
1733
1718
 
1734
1719
</div>
1735
1720
</div>
1736
 
<a class="anchor" id="ae3ac2bf6dcfe21252d40325789503ce6"></a><!-- doxytag: member="qglviewer::Frame::setOrientation" ref="ae3ac2bf6dcfe21252d40325789503ce6" args="(double q0, double q1, double q2, double q3)" -->
 
1721
<a class="anchor" id="ae3ac2bf6dcfe21252d40325789503ce6"></a>
1737
1722
<div class="memitem">
1738
1723
<div class="memproto">
1739
1724
      <table class="memname">
1740
1725
        <tr>
1741
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a6733704520780505759efdef38a68b8b">setOrientation</a> </td>
 
1726
          <td class="memname">void setOrientation </td>
1742
1727
          <td>(</td>
1743
1728
          <td class="paramtype">double&#160;</td>
1744
1729
          <td class="paramname"><em>q0</em>, </td>
1767
1752
          <td></td><td></td>
1768
1753
        </tr>
1769
1754
      </table>
1770
 
</div>
1771
 
<div class="memdoc">
 
1755
</div><div class="memdoc">
1772
1756
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a6733704520780505759efdef38a68b8b">setOrientation()</a>, but with <code>float</code> parameters. </p>
1773
1757
 
1774
1758
</div>
1775
1759
</div>
1776
 
<a class="anchor" id="a8b69106a268d78daf27d32854d455da4"></a><!-- doxytag: member="qglviewer::Frame::setOrientationWithConstraint" ref="a8b69106a268d78daf27d32854d455da4" args="(Quaternion &amp;orientation)" -->
 
1760
<a class="anchor" id="a8b69106a268d78daf27d32854d455da4"></a>
1777
1761
<div class="memitem">
1778
1762
<div class="memproto">
1779
1763
      <table class="memname">
1780
1764
        <tr>
1781
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a8b69106a268d78daf27d32854d455da4">setOrientationWithConstraint</a> </td>
 
1765
          <td class="memname">void setOrientationWithConstraint </td>
1782
1766
          <td>(</td>
1783
1767
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&#160;</td>
1784
1768
          <td class="paramname"><em>orientation</em></td><td>)</td>
1785
1769
          <td></td>
1786
1770
        </tr>
1787
1771
      </table>
1788
 
</div>
1789
 
<div class="memdoc">
 
1772
</div><div class="memdoc">
1790
1773
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a6733704520780505759efdef38a68b8b">setOrientation()</a>, but <code>orientation</code> is modified so that the potential <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the Frame is satisfied. See also <a class="el" href="classqglviewer_1_1Frame.html#a5081403cb47f1324edae5278d5438a38">setPositionWithConstraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint()</a>. </p>
1791
1774
 
1792
1775
</div>
1793
1776
</div>
1794
 
<a class="anchor" id="a24f5da9b3f4bf4e71dfad7a74a932e52"></a><!-- doxytag: member="qglviewer::Frame::setPosition" ref="a24f5da9b3f4bf4e71dfad7a74a932e52" args="(const Vec &amp;position)" -->
 
1777
<a class="anchor" id="a24f5da9b3f4bf4e71dfad7a74a932e52"></a>
1795
1778
<div class="memitem">
1796
1779
<div class="memproto">
1797
1780
      <table class="memname">
1798
1781
        <tr>
1799
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a24f5da9b3f4bf4e71dfad7a74a932e52">setPosition</a> </td>
 
1782
          <td class="memname">void setPosition </td>
1800
1783
          <td>(</td>
1801
1784
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
1802
1785
          <td class="paramname"><em>position</em></td><td>)</td>
1803
1786
          <td></td>
1804
1787
        </tr>
1805
1788
      </table>
1806
 
</div>
1807
 
<div class="memdoc">
 
1789
</div><div class="memdoc">
1808
1790
<p>Sets the <a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a> of the Frame, defined in the world coordinate system. Emits the <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a> signal.</p>
1809
1791
<p>Use <a class="el" href="classqglviewer_1_1Frame.html#ae5495cd791858225ba7c85ce39329704">setTranslation()</a> to define the <em>local</em> frame translation (with respect to the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a>). The potential <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the Frame is not taken into account, use <a class="el" href="classqglviewer_1_1Frame.html#a5081403cb47f1324edae5278d5438a38">setPositionWithConstraint()</a> instead. </p>
1810
1792
 
1811
1793
</div>
1812
1794
</div>
1813
 
<a class="anchor" id="aff7308b903966afc6c87b5cd766a9083"></a><!-- doxytag: member="qglviewer::Frame::setPosition" ref="aff7308b903966afc6c87b5cd766a9083" args="(float x, float y, float z)" -->
 
1795
<a class="anchor" id="aff7308b903966afc6c87b5cd766a9083"></a>
1814
1796
<div class="memitem">
1815
1797
<div class="memproto">
1816
1798
      <table class="memname">
1817
1799
        <tr>
1818
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a24f5da9b3f4bf4e71dfad7a74a932e52">setPosition</a> </td>
 
1800
          <td class="memname">void setPosition </td>
1819
1801
          <td>(</td>
1820
1802
          <td class="paramtype">float&#160;</td>
1821
1803
          <td class="paramname"><em>x</em>, </td>
1838
1820
          <td></td><td></td>
1839
1821
        </tr>
1840
1822
      </table>
1841
 
</div>
1842
 
<div class="memdoc">
 
1823
</div><div class="memdoc">
1843
1824
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a24f5da9b3f4bf4e71dfad7a74a932e52">setPosition()</a>, but with <code>float</code> parameters. </p>
1844
1825
 
1845
1826
</div>
1846
1827
</div>
1847
 
<a class="anchor" id="a47912d16be51eb85d68d3dcb4a4fb087"></a><!-- doxytag: member="qglviewer::Frame::setPositionAndOrientation" ref="a47912d16be51eb85d68d3dcb4a4fb087" args="(const Vec &amp;position, const Quaternion &amp;orientation)" -->
 
1828
<a class="anchor" id="a47912d16be51eb85d68d3dcb4a4fb087"></a>
1848
1829
<div class="memitem">
1849
1830
<div class="memproto">
1850
1831
      <table class="memname">
1851
1832
        <tr>
1852
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a47912d16be51eb85d68d3dcb4a4fb087">setPositionAndOrientation</a> </td>
 
1833
          <td class="memname">void setPositionAndOrientation </td>
1853
1834
          <td>(</td>
1854
1835
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
1855
1836
          <td class="paramname"><em>position</em>, </td>
1866
1847
          <td></td><td></td>
1867
1848
        </tr>
1868
1849
      </table>
1869
 
</div>
1870
 
<div class="memdoc">
 
1850
</div><div class="memdoc">
1871
1851
<p>Same as successive calls to <a class="el" href="classqglviewer_1_1Frame.html#a24f5da9b3f4bf4e71dfad7a74a932e52">setPosition()</a> and then <a class="el" href="classqglviewer_1_1Frame.html#a6733704520780505759efdef38a68b8b">setOrientation()</a>.</p>
1872
1852
<p>Only one <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a> signal is emitted, which is convenient if this signal is connected to a <a class="el" href="classQGLViewer.html#ae12b7378efbffabc24a133ca1deb19ae">QGLViewer::updateGL()</a> slot. See also <a class="el" href="classqglviewer_1_1Frame.html#a0fbfd129a52b36b6753cc1589ff87a48">setTranslationAndRotation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a8501c5582c1aa2a82a929ce36439ab3a">setPositionAndOrientationWithConstraint()</a>. </p>
1873
1853
 
1874
1854
</div>
1875
1855
</div>
1876
 
<a class="anchor" id="a8501c5582c1aa2a82a929ce36439ab3a"></a><!-- doxytag: member="qglviewer::Frame::setPositionAndOrientationWithConstraint" ref="a8501c5582c1aa2a82a929ce36439ab3a" args="(Vec &amp;position, Quaternion &amp;orientation)" -->
 
1856
<a class="anchor" id="a8501c5582c1aa2a82a929ce36439ab3a"></a>
1877
1857
<div class="memitem">
1878
1858
<div class="memproto">
1879
1859
      <table class="memname">
1880
1860
        <tr>
1881
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a8501c5582c1aa2a82a929ce36439ab3a">setPositionAndOrientationWithConstraint</a> </td>
 
1861
          <td class="memname">void setPositionAndOrientationWithConstraint </td>
1882
1862
          <td>(</td>
1883
1863
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
1884
1864
          <td class="paramname"><em>position</em>, </td>
1895
1875
          <td></td><td></td>
1896
1876
        </tr>
1897
1877
      </table>
1898
 
</div>
1899
 
<div class="memdoc">
 
1878
</div><div class="memdoc">
1900
1879
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a47912d16be51eb85d68d3dcb4a4fb087">setPositionAndOrientation()</a> but <code>position</code> and <code>orientation</code> are modified to satisfy the constraint. Emits the <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a> signal. </p>
1901
1880
 
1902
1881
</div>
1903
1882
</div>
1904
 
<a class="anchor" id="a5081403cb47f1324edae5278d5438a38"></a><!-- doxytag: member="qglviewer::Frame::setPositionWithConstraint" ref="a5081403cb47f1324edae5278d5438a38" args="(Vec &amp;position)" -->
 
1883
<a class="anchor" id="a5081403cb47f1324edae5278d5438a38"></a>
1905
1884
<div class="memitem">
1906
1885
<div class="memproto">
1907
1886
      <table class="memname">
1908
1887
        <tr>
1909
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a5081403cb47f1324edae5278d5438a38">setPositionWithConstraint</a> </td>
 
1888
          <td class="memname">void setPositionWithConstraint </td>
1910
1889
          <td>(</td>
1911
1890
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
1912
1891
          <td class="paramname"><em>position</em></td><td>)</td>
1913
1892
          <td></td>
1914
1893
        </tr>
1915
1894
      </table>
1916
 
</div>
1917
 
<div class="memdoc">
 
1895
</div><div class="memdoc">
1918
1896
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a24f5da9b3f4bf4e71dfad7a74a932e52">setPosition()</a>, but <code>position</code> is modified so that the potential <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the Frame is satisfied. See also <a class="el" href="classqglviewer_1_1Frame.html#a8b69106a268d78daf27d32854d455da4">setOrientationWithConstraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a7f3395d24d164a7af9a8b99e4e6bafc0">setTranslationWithConstraint()</a>. </p>
1919
1897
 
1920
1898
</div>
1921
1899
</div>
1922
 
<a class="anchor" id="abca9e0c2e40957fffeee4a52139facd8"></a><!-- doxytag: member="qglviewer::Frame::setReferenceFrame" ref="abca9e0c2e40957fffeee4a52139facd8" args="(const Frame *const refFrame)" -->
 
1900
<a class="anchor" id="abca9e0c2e40957fffeee4a52139facd8"></a>
1923
1901
<div class="memitem">
1924
1902
<div class="memproto">
1925
1903
      <table class="memname">
1926
1904
        <tr>
1927
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#abca9e0c2e40957fffeee4a52139facd8">setReferenceFrame</a> </td>
 
1905
          <td class="memname">void setReferenceFrame </td>
1928
1906
          <td>(</td>
1929
1907
          <td class="paramtype">const Frame *const&#160;</td>
1930
1908
          <td class="paramname"><em>refFrame</em></td><td>)</td>
1931
1909
          <td></td>
1932
1910
        </tr>
1933
1911
      </table>
1934
 
</div>
1935
 
<div class="memdoc">
 
1912
</div><div class="memdoc">
1936
1913
<p>Sets the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> of the Frame.</p>
1937
1914
<p>The Frame <a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> are then defined in the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> coordinate system. Use <a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation()</a> to express these in the world coordinate system.</p>
1938
1915
<p>Emits the <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a> signal if <code>refFrame</code> differs from the current <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a>.</p>
1940
1917
 
1941
1918
</div>
1942
1919
</div>
1943
 
<a class="anchor" id="a857aacdb88a574ec4a363335f6152a1e"></a><!-- doxytag: member="qglviewer::Frame::setRotation" ref="a857aacdb88a574ec4a363335f6152a1e" args="(const Quaternion &amp;rotation)" -->
 
1920
<a class="anchor" id="a857aacdb88a574ec4a363335f6152a1e"></a>
1944
1921
<div class="memitem">
1945
1922
<div class="memproto">
1946
1923
      <table class="memname">
1947
1924
        <tr>
1948
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a857aacdb88a574ec4a363335f6152a1e">setRotation</a> </td>
 
1925
          <td class="memname">void setRotation </td>
1949
1926
          <td>(</td>
1950
1927
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&#160;</td>
1951
1928
          <td class="paramname"><em>rotation</em></td><td>)</td>
1952
1929
          <td></td>
1953
1930
        </tr>
1954
1931
      </table>
1955
 
</div>
1956
 
<div class="memdoc">
 
1932
</div><div class="memdoc">
1957
1933
<p>Set the current rotation <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a>. See <a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> and the different <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a> constructors. Emits the <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a> signal. See also <a class="el" href="classqglviewer_1_1Frame.html#ae5495cd791858225ba7c85ce39329704">setTranslation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint()</a>.</p>
1958
1934
<p>Sets the <a class="el" href="classqglviewer_1_1Frame.html#a19ee9243c60f412dfc4eac3dcf45a5a1">rotation()</a> of the Frame, locally defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a>. Emits the <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a> signal.</p>
1959
1935
<p>Use <a class="el" href="classqglviewer_1_1Frame.html#a6733704520780505759efdef38a68b8b">setOrientation()</a> to define the world coordinates <a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation()</a>. The potential <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the Frame is not taken into account, use <a class="el" href="classqglviewer_1_1Frame.html#a9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint()</a> instead. </p>
1960
1936
 
1961
1937
</div>
1962
1938
</div>
1963
 
<a class="anchor" id="a26c462ecae655fa82c4d2efa42f9cd2e"></a><!-- doxytag: member="qglviewer::Frame::setRotation" ref="a26c462ecae655fa82c4d2efa42f9cd2e" args="(double q0, double q1, double q2, double q3)" -->
 
1939
<a class="anchor" id="a26c462ecae655fa82c4d2efa42f9cd2e"></a>
1964
1940
<div class="memitem">
1965
1941
<div class="memproto">
1966
1942
      <table class="memname">
1967
1943
        <tr>
1968
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a857aacdb88a574ec4a363335f6152a1e">setRotation</a> </td>
 
1944
          <td class="memname">void setRotation </td>
1969
1945
          <td>(</td>
1970
1946
          <td class="paramtype">double&#160;</td>
1971
1947
          <td class="paramname"><em>q0</em>, </td>
1994
1970
          <td></td><td></td>
1995
1971
        </tr>
1996
1972
      </table>
1997
 
</div>
1998
 
<div class="memdoc">
 
1973
</div><div class="memdoc">
1999
1974
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a857aacdb88a574ec4a363335f6152a1e">setRotation()</a> but with <code>float</code> <a class="el" href="classqglviewer_1_1Quaternion.html" title="The Quaternion class represents 3D rotations and orientations.">Quaternion</a> parameters. </p>
2000
1975
 
2001
1976
</div>
2002
1977
</div>
2003
 
<a class="anchor" id="a9d4ab1388820d002d44304c5463fbfbd"></a><!-- doxytag: member="qglviewer::Frame::setRotationWithConstraint" ref="a9d4ab1388820d002d44304c5463fbfbd" args="(Quaternion &amp;rotation)" -->
 
1978
<a class="anchor" id="a9d4ab1388820d002d44304c5463fbfbd"></a>
2004
1979
<div class="memitem">
2005
1980
<div class="memproto">
2006
1981
      <table class="memname">
2007
1982
        <tr>
2008
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint</a> </td>
 
1983
          <td class="memname">void setRotationWithConstraint </td>
2009
1984
          <td>(</td>
2010
1985
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Quaternion.html">Quaternion</a> &amp;&#160;</td>
2011
1986
          <td class="paramname"><em>rotation</em></td><td>)</td>
2012
1987
          <td></td>
2013
1988
        </tr>
2014
1989
      </table>
2015
 
</div>
2016
 
<div class="memdoc">
 
1990
</div><div class="memdoc">
2017
1991
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a857aacdb88a574ec4a363335f6152a1e">setRotation()</a>, but <code>rotation</code> is modified so that the potential <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the Frame is satisfied.</p>
2018
1992
<p>Emits the <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a> signal. See also <a class="el" href="classqglviewer_1_1Frame.html#a7f3395d24d164a7af9a8b99e4e6bafc0">setTranslationWithConstraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a8b69106a268d78daf27d32854d455da4">setOrientationWithConstraint()</a>. </p>
2019
1993
 
2020
1994
</div>
2021
1995
</div>
2022
 
<a class="anchor" id="aa4891a91c825effc65b73f1329ae49c7"></a><!-- doxytag: member="qglviewer::Frame::settingAsReferenceFrameWillCreateALoop" ref="aa4891a91c825effc65b73f1329ae49c7" args="(const Frame *const frame)" -->
 
1996
<a class="anchor" id="aa4891a91c825effc65b73f1329ae49c7"></a>
2023
1997
<div class="memitem">
2024
1998
<div class="memproto">
2025
1999
      <table class="memname">
2026
2000
        <tr>
2027
 
          <td class="memname">bool <a class="el" href="classqglviewer_1_1Frame.html#aa4891a91c825effc65b73f1329ae49c7">settingAsReferenceFrameWillCreateALoop</a> </td>
 
2001
          <td class="memname">bool settingAsReferenceFrameWillCreateALoop </td>
2028
2002
          <td>(</td>
2029
2003
          <td class="paramtype">const Frame *const&#160;</td>
2030
2004
          <td class="paramname"><em>frame</em></td><td>)</td>
2031
2005
          <td></td>
2032
2006
        </tr>
2033
2007
      </table>
2034
 
</div>
2035
 
<div class="memdoc">
 
2008
</div><div class="memdoc">
2036
2009
<p>Returns <code>true</code> if setting <code>frame</code> as the Frame's <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> would create a loop in the Frame hierarchy. </p>
2037
2010
 
2038
2011
</div>
2039
2012
</div>
2040
 
<a class="anchor" id="ae5495cd791858225ba7c85ce39329704"></a><!-- doxytag: member="qglviewer::Frame::setTranslation" ref="ae5495cd791858225ba7c85ce39329704" args="(const Vec &amp;translation)" -->
 
2013
<a class="anchor" id="ae5495cd791858225ba7c85ce39329704"></a>
2041
2014
<div class="memitem">
2042
2015
<div class="memproto">
2043
2016
      <table class="memname">
2044
2017
        <tr>
2045
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#ae5495cd791858225ba7c85ce39329704">setTranslation</a> </td>
 
2018
          <td class="memname">void setTranslation </td>
2046
2019
          <td>(</td>
2047
2020
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
2048
2021
          <td class="paramname"><em>translation</em></td><td>)</td>
2049
2022
          <td></td>
2050
2023
        </tr>
2051
2024
      </table>
2052
 
</div>
2053
 
<div class="memdoc">
 
2025
</div><div class="memdoc">
2054
2026
<p>Sets the <a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation()</a> of the frame, locally defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a>. Emits the <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a> signal.</p>
2055
2027
<p>Use <a class="el" href="classqglviewer_1_1Frame.html#a24f5da9b3f4bf4e71dfad7a74a932e52">setPosition()</a> to define the world coordinates <a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a>. Use <a class="el" href="classqglviewer_1_1Frame.html#a7f3395d24d164a7af9a8b99e4e6bafc0">setTranslationWithConstraint()</a> to take into account the potential <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the Frame. </p>
2056
2028
 
2057
2029
</div>
2058
2030
</div>
2059
 
<a class="anchor" id="aeafb612e3ad0d6a81de91884eb4bdef1"></a><!-- doxytag: member="qglviewer::Frame::setTranslation" ref="aeafb612e3ad0d6a81de91884eb4bdef1" args="(float x, float y, float z)" -->
 
2031
<a class="anchor" id="aeafb612e3ad0d6a81de91884eb4bdef1"></a>
2060
2032
<div class="memitem">
2061
2033
<div class="memproto">
2062
2034
      <table class="memname">
2063
2035
        <tr>
2064
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#ae5495cd791858225ba7c85ce39329704">setTranslation</a> </td>
 
2036
          <td class="memname">void setTranslation </td>
2065
2037
          <td>(</td>
2066
2038
          <td class="paramtype">float&#160;</td>
2067
2039
          <td class="paramname"><em>x</em>, </td>
2084
2056
          <td></td><td></td>
2085
2057
        </tr>
2086
2058
      </table>
2087
 
</div>
2088
 
<div class="memdoc">
 
2059
</div><div class="memdoc">
2089
2060
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#ae5495cd791858225ba7c85ce39329704">setTranslation()</a>, but with <code>float</code> parameters. </p>
2090
2061
 
2091
2062
</div>
2092
2063
</div>
2093
 
<a class="anchor" id="a0fbfd129a52b36b6753cc1589ff87a48"></a><!-- doxytag: member="qglviewer::Frame::setTranslationAndRotation" ref="a0fbfd129a52b36b6753cc1589ff87a48" args="(const Vec &amp;translation, const Quaternion &amp;rotation)" -->
 
2064
<a class="anchor" id="a0fbfd129a52b36b6753cc1589ff87a48"></a>
2094
2065
<div class="memitem">
2095
2066
<div class="memproto">
2096
2067
      <table class="memname">
2097
2068
        <tr>
2098
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a0fbfd129a52b36b6753cc1589ff87a48">setTranslationAndRotation</a> </td>
 
2069
          <td class="memname">void setTranslationAndRotation </td>
2099
2070
          <td>(</td>
2100
2071
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
2101
2072
          <td class="paramname"><em>translation</em>, </td>
2112
2083
          <td></td><td></td>
2113
2084
        </tr>
2114
2085
      </table>
2115
 
</div>
2116
 
<div class="memdoc">
 
2086
</div><div class="memdoc">
2117
2087
<p>Same as successive calls to <a class="el" href="classqglviewer_1_1Frame.html#ae5495cd791858225ba7c85ce39329704">setTranslation()</a> and then <a class="el" href="classqglviewer_1_1Frame.html#a857aacdb88a574ec4a363335f6152a1e">setRotation()</a>.</p>
2118
2088
<p>Only one <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a> signal is emitted, which is convenient if this signal is connected to a <a class="el" href="classQGLViewer.html#ae12b7378efbffabc24a133ca1deb19ae">QGLViewer::updateGL()</a> slot. See also <a class="el" href="classqglviewer_1_1Frame.html#a47912d16be51eb85d68d3dcb4a4fb087">setPositionAndOrientation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a3a08480e8de4a36536ff95e0f05303db">setTranslationAndRotationWithConstraint()</a>. </p>
2119
2089
 
2120
2090
</div>
2121
2091
</div>
2122
 
<a class="anchor" id="a3a08480e8de4a36536ff95e0f05303db"></a><!-- doxytag: member="qglviewer::Frame::setTranslationAndRotationWithConstraint" ref="a3a08480e8de4a36536ff95e0f05303db" args="(Vec &amp;translation, Quaternion &amp;rotation)" -->
 
2092
<a class="anchor" id="a3a08480e8de4a36536ff95e0f05303db"></a>
2123
2093
<div class="memitem">
2124
2094
<div class="memproto">
2125
2095
      <table class="memname">
2126
2096
        <tr>
2127
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a3a08480e8de4a36536ff95e0f05303db">setTranslationAndRotationWithConstraint</a> </td>
 
2097
          <td class="memname">void setTranslationAndRotationWithConstraint </td>
2128
2098
          <td>(</td>
2129
2099
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
2130
2100
          <td class="paramname"><em>translation</em>, </td>
2141
2111
          <td></td><td></td>
2142
2112
        </tr>
2143
2113
      </table>
2144
 
</div>
2145
 
<div class="memdoc">
 
2114
</div><div class="memdoc">
2146
2115
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a0fbfd129a52b36b6753cc1589ff87a48">setTranslationAndRotation()</a>, but <code>translation</code> and <code>orientation</code> are modified to satisfy the <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>. Emits the <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a> signal. </p>
2147
2116
 
2148
2117
</div>
2149
2118
</div>
2150
 
<a class="anchor" id="a7f3395d24d164a7af9a8b99e4e6bafc0"></a><!-- doxytag: member="qglviewer::Frame::setTranslationWithConstraint" ref="a7f3395d24d164a7af9a8b99e4e6bafc0" args="(Vec &amp;translation)" -->
 
2119
<a class="anchor" id="a7f3395d24d164a7af9a8b99e4e6bafc0"></a>
2151
2120
<div class="memitem">
2152
2121
<div class="memproto">
2153
2122
      <table class="memname">
2154
2123
        <tr>
2155
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a7f3395d24d164a7af9a8b99e4e6bafc0">setTranslationWithConstraint</a> </td>
 
2124
          <td class="memname">void setTranslationWithConstraint </td>
2156
2125
          <td>(</td>
2157
2126
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
2158
2127
          <td class="paramname"><em>translation</em></td><td>)</td>
2159
2128
          <td></td>
2160
2129
        </tr>
2161
2130
      </table>
2162
 
</div>
2163
 
<div class="memdoc">
 
2131
</div><div class="memdoc">
2164
2132
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#ae5495cd791858225ba7c85ce39329704">setTranslation()</a>, but <code>translation</code> is modified so that the potential <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> of the Frame is satisfied.</p>
2165
2133
<p>Emits the <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a> signal. See also <a class="el" href="classqglviewer_1_1Frame.html#a9d4ab1388820d002d44304c5463fbfbd">setRotationWithConstraint()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a5081403cb47f1324edae5278d5438a38">setPositionWithConstraint()</a>. </p>
2166
2134
 
2167
2135
</div>
2168
2136
</div>
2169
 
<a class="anchor" id="a05a3e18419f02427366a95b1e299f12e"></a><!-- doxytag: member="qglviewer::Frame::transformOf" ref="a05a3e18419f02427366a95b1e299f12e" args="(const Vec &amp;src) const " -->
 
2137
<a class="anchor" id="a05a3e18419f02427366a95b1e299f12e"></a>
2170
2138
<div class="memitem">
2171
2139
<div class="memproto">
2172
2140
      <table class="memname">
2173
2141
        <tr>
2174
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> <a class="el" href="classqglviewer_1_1Frame.html#a05a3e18419f02427366a95b1e299f12e">transformOf</a> </td>
 
2142
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> transformOf </td>
2175
2143
          <td>(</td>
2176
2144
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
2177
2145
          <td class="paramname"><em>src</em></td><td>)</td>
2178
2146
          <td> const</td>
2179
2147
        </tr>
2180
2148
      </table>
2181
 
</div>
2182
 
<div class="memdoc">
 
2149
</div><div class="memdoc">
2183
2150
<p>Returns the Frame transform of a vector <code>src</code> defined in the world coordinate system (converts vectors from world to Frame).</p>
2184
2151
<p><a class="el" href="classqglviewer_1_1Frame.html#aba2c6c46c1825a81f09d22322b03d9b5">inverseTransformOf()</a> performs the inverse transformation. <a class="el" href="classqglviewer_1_1Frame.html#ac706b338b08d9d7b511fd84d0b6ecf96">coordinatesOf()</a> converts 3D coordinates instead of 3D vectors (here only the rotational part of the transformation is taken into account).</p>
2185
2152
<p>See the <a href="../examples/frameTransform.html">frameTransform example</a> for an illustration. </p>
2186
2153
 
2187
2154
</div>
2188
2155
</div>
2189
 
<a class="anchor" id="a3416ca5a53c1f2d932fca1906ec1c6c7"></a><!-- doxytag: member="qglviewer::Frame::transformOfFrom" ref="a3416ca5a53c1f2d932fca1906ec1c6c7" args="(const Vec &amp;src, const Frame *const from) const " -->
 
2156
<a class="anchor" id="a3416ca5a53c1f2d932fca1906ec1c6c7"></a>
2190
2157
<div class="memitem">
2191
2158
<div class="memproto">
2192
2159
      <table class="memname">
2193
2160
        <tr>
2194
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> <a class="el" href="classqglviewer_1_1Frame.html#a3416ca5a53c1f2d932fca1906ec1c6c7">transformOfFrom</a> </td>
 
2161
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> transformOfFrom </td>
2195
2162
          <td>(</td>
2196
2163
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
2197
2164
          <td class="paramname"><em>src</em>, </td>
2208
2175
          <td></td><td> const</td>
2209
2176
        </tr>
2210
2177
      </table>
2211
 
</div>
2212
 
<div class="memdoc">
 
2178
</div><div class="memdoc">
2213
2179
<p>Returns the Frame transform of the vector whose coordinates in the <code>from</code> coordinate system is <code>src</code> (converts vectors from <code>from</code> to Frame).</p>
2214
2180
<p><a class="el" href="classqglviewer_1_1Frame.html#a01636f93c09d6fd9fca90cb671afdda0">transformOfIn()</a> performs the inverse transformation. </p>
2215
2181
 
2216
2182
</div>
2217
2183
</div>
2218
 
<a class="anchor" id="a01636f93c09d6fd9fca90cb671afdda0"></a><!-- doxytag: member="qglviewer::Frame::transformOfIn" ref="a01636f93c09d6fd9fca90cb671afdda0" args="(const Vec &amp;src, const Frame *const in) const " -->
 
2184
<a class="anchor" id="a01636f93c09d6fd9fca90cb671afdda0"></a>
2219
2185
<div class="memitem">
2220
2186
<div class="memproto">
2221
2187
      <table class="memname">
2222
2188
        <tr>
2223
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> <a class="el" href="classqglviewer_1_1Frame.html#a01636f93c09d6fd9fca90cb671afdda0">transformOfIn</a> </td>
 
2189
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> transformOfIn </td>
2224
2190
          <td>(</td>
2225
2191
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
2226
2192
          <td class="paramname"><em>src</em>, </td>
2237
2203
          <td></td><td> const</td>
2238
2204
        </tr>
2239
2205
      </table>
2240
 
</div>
2241
 
<div class="memdoc">
 
2206
</div><div class="memdoc">
2242
2207
<p>Returns the <code>in</code> transform of the vector whose coordinates in the Frame coordinate system is <code>src</code> (converts vectors from Frame to <code>in</code>).</p>
2243
2208
<p><a class="el" href="classqglviewer_1_1Frame.html#a3416ca5a53c1f2d932fca1906ec1c6c7">transformOfFrom()</a> performs the inverse transformation. </p>
2244
2209
 
2245
2210
</div>
2246
2211
</div>
2247
 
<a class="anchor" id="a4cb0cf5ff79e1acf0755befdaceb6f4a"></a><!-- doxytag: member="qglviewer::Frame::translate" ref="a4cb0cf5ff79e1acf0755befdaceb6f4a" args="(Vec &amp;t)" -->
 
2212
<a class="anchor" id="a4cb0cf5ff79e1acf0755befdaceb6f4a"></a>
2248
2213
<div class="memitem">
2249
2214
<div class="memproto">
2250
2215
      <table class="memname">
2251
2216
        <tr>
2252
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a4cb0cf5ff79e1acf0755befdaceb6f4a">translate</a> </td>
 
2217
          <td class="memname">void translate </td>
2253
2218
          <td>(</td>
2254
2219
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
2255
2220
          <td class="paramname"><em>t</em></td><td>)</td>
2256
2221
          <td></td>
2257
2222
        </tr>
2258
2223
      </table>
2259
 
</div>
2260
 
<div class="memdoc">
 
2224
</div><div class="memdoc">
2261
2225
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#ac774331eeae8d29acc94f5653b2f2c3b">translate(const Vec&amp;)</a> but <code>t</code> may be modified to satisfy the translation <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>. Its new value corresponds to the translation that has actually been applied to the Frame. </p>
2262
2226
 
2263
2227
</div>
2264
2228
</div>
2265
 
<a class="anchor" id="ac774331eeae8d29acc94f5653b2f2c3b"></a><!-- doxytag: member="qglviewer::Frame::translate" ref="ac774331eeae8d29acc94f5653b2f2c3b" args="(const Vec &amp;t)" -->
 
2229
<a class="anchor" id="ac774331eeae8d29acc94f5653b2f2c3b"></a>
2266
2230
<div class="memitem">
2267
2231
<div class="memproto">
2268
2232
      <table class="memname">
2269
2233
        <tr>
2270
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a4cb0cf5ff79e1acf0755befdaceb6f4a">translate</a> </td>
 
2234
          <td class="memname">void translate </td>
2271
2235
          <td>(</td>
2272
2236
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Vec.html">Vec</a> &amp;&#160;</td>
2273
2237
          <td class="paramname"><em>t</em></td><td>)</td>
2274
2238
          <td></td>
2275
2239
        </tr>
2276
2240
      </table>
2277
 
</div>
2278
 
<div class="memdoc">
 
2241
</div><div class="memdoc">
2279
2242
<p>Translates the Frame of <code>t</code> (defined in the Frame coordinate system).</p>
2280
2243
<p>The translation actually applied to the Frame may differ from <code>t</code> since it can be filtered by the <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>. Use <a class="el" href="classqglviewer_1_1Frame.html#a4cb0cf5ff79e1acf0755befdaceb6f4a">translate(Vec&amp;)</a> or <a class="el" href="classqglviewer_1_1Frame.html#a7f3395d24d164a7af9a8b99e4e6bafc0">setTranslationWithConstraint()</a> to retrieve the filtered translation value. Use <a class="el" href="classqglviewer_1_1Frame.html#ae5495cd791858225ba7c85ce39329704">setTranslation()</a> to directly translate the Frame without taking the <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a> into account.</p>
2281
2244
<p>See also <a class="el" href="classqglviewer_1_1Frame.html#ac754417fa609300f980fcba5405c9989">rotate(const Quaternion&amp;)</a>. Emits the <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">modified()</a> signal. </p>
2282
2245
 
2283
2246
</div>
2284
2247
</div>
2285
 
<a class="anchor" id="a9081ed23141a5980f028b21d58fa3290"></a><!-- doxytag: member="qglviewer::Frame::translate" ref="a9081ed23141a5980f028b21d58fa3290" args="(float x, float y, float z)" -->
 
2248
<a class="anchor" id="a9081ed23141a5980f028b21d58fa3290"></a>
2286
2249
<div class="memitem">
2287
2250
<div class="memproto">
2288
2251
      <table class="memname">
2289
2252
        <tr>
2290
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a4cb0cf5ff79e1acf0755befdaceb6f4a">translate</a> </td>
 
2253
          <td class="memname">void translate </td>
2291
2254
          <td>(</td>
2292
2255
          <td class="paramtype">float&#160;</td>
2293
2256
          <td class="paramname"><em>x</em>, </td>
2310
2273
          <td></td><td></td>
2311
2274
        </tr>
2312
2275
      </table>
2313
 
</div>
2314
 
<div class="memdoc">
 
2276
</div><div class="memdoc">
2315
2277
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#ac774331eeae8d29acc94f5653b2f2c3b">translate(const Vec&amp;)</a> but with <code>float</code> parameters. </p>
2316
2278
 
2317
2279
</div>
2318
2280
</div>
2319
 
<a class="anchor" id="a2ae644799a164d7519769ba393565c5d"></a><!-- doxytag: member="qglviewer::Frame::translate" ref="a2ae644799a164d7519769ba393565c5d" args="(float &amp;x, float &amp;y, float &amp;z)" -->
 
2281
<a class="anchor" id="a2ae644799a164d7519769ba393565c5d"></a>
2320
2282
<div class="memitem">
2321
2283
<div class="memproto">
2322
2284
      <table class="memname">
2323
2285
        <tr>
2324
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1Frame.html#a4cb0cf5ff79e1acf0755befdaceb6f4a">translate</a> </td>
 
2286
          <td class="memname">void translate </td>
2325
2287
          <td>(</td>
2326
2288
          <td class="paramtype">float &amp;&#160;</td>
2327
2289
          <td class="paramname"><em>x</em>, </td>
2344
2306
          <td></td><td></td>
2345
2307
        </tr>
2346
2308
      </table>
2347
 
</div>
2348
 
<div class="memdoc">
 
2309
</div><div class="memdoc">
2349
2310
<p>Same as <a class="el" href="classqglviewer_1_1Frame.html#a4cb0cf5ff79e1acf0755befdaceb6f4a">translate(Vec&amp;)</a> but with <code>float</code> parameters. </p>
2350
2311
 
2351
2312
</div>
2352
2313
</div>
2353
 
<a class="anchor" id="a388a5f38140104323aa51fc207fde642"></a><!-- doxytag: member="qglviewer::Frame::translation" ref="a388a5f38140104323aa51fc207fde642" args="() const " -->
 
2314
<a class="anchor" id="a388a5f38140104323aa51fc207fde642"></a>
2354
2315
<div class="memitem">
2355
2316
<div class="memproto">
2356
2317
      <table class="memname">
2357
2318
        <tr>
2358
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> <a class="el" href="classqglviewer_1_1Frame.html#a388a5f38140104323aa51fc207fde642">translation</a> </td>
 
2319
          <td class="memname"><a class="el" href="classqglviewer_1_1Vec.html">Vec</a> translation </td>
2359
2320
          <td>(</td>
2360
2321
          <td class="paramname"></td><td>)</td>
2361
2322
          <td> const</td>
2362
2323
        </tr>
2363
2324
      </table>
2364
 
</div>
2365
 
<div class="memdoc">
 
2325
</div><div class="memdoc">
2366
2326
<p>Returns the Frame translation, defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a>.</p>
2367
2327
<p>Use <a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a> to get the result in the world coordinates. These two values are identical when the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> is <code>NULL</code> (default).</p>
2368
2328
<p>See also <a class="el" href="classqglviewer_1_1Frame.html#ae5495cd791858225ba7c85ce39329704">setTranslation()</a> and <a class="el" href="classqglviewer_1_1Frame.html#a7f3395d24d164a7af9a8b99e4e6bafc0">setTranslationWithConstraint()</a>. </p>
2369
2329
 
2370
2330
</div>
2371
2331
</div>
2372
 
<a class="anchor" id="a37d4da8cfd297273e7bb55538debaa3e"></a><!-- doxytag: member="qglviewer::Frame::worldInverse" ref="a37d4da8cfd297273e7bb55538debaa3e" args="() const " -->
 
2332
<a class="anchor" id="a37d4da8cfd297273e7bb55538debaa3e"></a>
2373
2333
<div class="memitem">
2374
2334
<div class="memproto">
2375
2335
      <table class="memname">
2376
2336
        <tr>
2377
 
          <td class="memname">Frame <a class="el" href="classqglviewer_1_1Frame.html#a37d4da8cfd297273e7bb55538debaa3e">worldInverse</a> </td>
 
2337
          <td class="memname">Frame worldInverse </td>
2378
2338
          <td>(</td>
2379
2339
          <td class="paramname"></td><td>)</td>
2380
2340
          <td> const</td>
2381
2341
        </tr>
2382
2342
      </table>
2383
 
</div>
2384
 
<div class="memdoc">
 
2343
</div><div class="memdoc">
2385
2344
<p>Returns the <a class="el" href="classqglviewer_1_1Frame.html#a4534c3188c217feb8d21465d4cefd4ad">inverse()</a> of the Frame world transformation.</p>
2386
2345
<p>The <a class="el" href="classqglviewer_1_1Frame.html#a691af39b54669fad8b4e73599de22094">orientation()</a> of the new Frame is the <a class="el" href="classqglviewer_1_1Quaternion.html#ac378ebc684d691dc25336b895f24a82e">Quaternion::inverse()</a> of the original orientation. Its <a class="el" href="classqglviewer_1_1Frame.html#abc38a05a597e07c9ff525122682adc50">position()</a> is the negated and inverse rotated image of the original position.</p>
2387
2346
<p>The result Frame has a <code>NULL</code> <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> and a <code>NULL</code> <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">constraint()</a>.</p>
2389
2348
 
2390
2349
</div>
2391
2350
</div>
2392
 
<a class="anchor" id="a39aa0648db05006e2b2f22ac5d971141"></a><!-- doxytag: member="qglviewer::Frame::worldMatrix" ref="a39aa0648db05006e2b2f22ac5d971141" args="() const " -->
 
2351
<a class="anchor" id="a39aa0648db05006e2b2f22ac5d971141"></a>
2393
2352
<div class="memitem">
2394
2353
<div class="memproto">
2395
2354
      <table class="memname">
2396
2355
        <tr>
2397
 
          <td class="memname">const GLdouble * <a class="el" href="classqglviewer_1_1Frame.html#a39aa0648db05006e2b2f22ac5d971141">worldMatrix</a> </td>
 
2356
          <td class="memname">const GLdouble * worldMatrix </td>
2398
2357
          <td>(</td>
2399
2358
          <td class="paramname"></td><td>)</td>
2400
2359
          <td> const</td>
2401
2360
        </tr>
2402
2361
      </table>
2403
 
</div>
2404
 
<div class="memdoc">
 
2362
</div><div class="memdoc">
2405
2363
<p>Returns the 4x4 OpenGL transformation matrix represented by the Frame.</p>
2406
2364
<p>This method should be used in conjunction with <code>glMultMatrixd()</code> to modify the OpenGL modelview matrix from a Frame: </p>
2407
 
<div class="fragment"><pre class="fragment">  <span class="comment">// The modelview here corresponds to the world coordinate system.</span>
2408
 
  <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a> fr(pos, Quaternion(from, to));
2409
 
  glPushMatrix();
2410
 
  glMultMatrixd(fr.worldMatrix());
2411
 
  <span class="comment">// draw object in the fr coordinate system.</span>
2412
 
  glPopMatrix();
2413
 
</pre></div><p>This matrix represents the global Frame transformation: the entire <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> hierarchy is taken into account to define the Frame transformation from the world coordinate system. Use <a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix()</a> to get the local Frame transformation matrix (i.e. defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a>). These two match when the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> is <code>NULL</code>.</p>
 
2365
<div class="fragment"><div class="line">  <span class="comment">// The modelview here corresponds to the world coordinate system.</span></div>
 
2366
<div class="line">  <a class="code" href="classqglviewer_1_1Frame.html#ab71e6ee46f0c2593266f9a62d9c5e029">Frame</a> fr(pos, Quaternion(from, to));</div>
 
2367
<div class="line">  glPushMatrix();</div>
 
2368
<div class="line">  glMultMatrixd(fr.worldMatrix());</div>
 
2369
<div class="line">  <span class="comment">// draw object in the fr coordinate system.</span></div>
 
2370
<div class="line">  glPopMatrix();</div>
 
2371
</div><!-- fragment --><p>This matrix represents the global Frame transformation: the entire <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> hierarchy is taken into account to define the Frame transformation from the world coordinate system. Use <a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix()</a> to get the local Frame transformation matrix (i.e. defined with respect to the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a>). These two match when the <a class="el" href="classqglviewer_1_1Frame.html#a9794b079db5f492e8804631d3d23baec">referenceFrame()</a> is <code>NULL</code>.</p>
2414
2372
<p>The OpenGL format of the result is the transpose of the actual mathematical European representation (translation is on the last <em>line</em> instead of the last <em>column</em>).</p>
2415
 
<dl class="attention"><dt><b>Attention:</b></dt><dd>The result is only valid until the next call to <a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#a4915640a54a6b48a99cbdd0cd42fec48">getMatrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#a39aa0648db05006e2b2f22ac5d971141">worldMatrix()</a> or <a class="el" href="classqglviewer_1_1Frame.html#a45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix()</a>. Use it immediately (as above) or use <a class="el" href="classqglviewer_1_1Frame.html#a45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix()</a> instead.</dd></dl>
2416
 
<dl class="note"><dt><b>Note:</b></dt><dd>The scaling factor of the 4x4 matrix is 1.0. </dd></dl>
 
2373
<dl class="section attention"><dt>Attention:</dt><dd>The result is only valid until the next call to <a class="el" href="classqglviewer_1_1Frame.html#aa12123cf45f68b9f7fe0526b70ab0047">matrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#a4915640a54a6b48a99cbdd0cd42fec48">getMatrix()</a>, <a class="el" href="classqglviewer_1_1Frame.html#a39aa0648db05006e2b2f22ac5d971141">worldMatrix()</a> or <a class="el" href="classqglviewer_1_1Frame.html#a45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix()</a>. Use it immediately (as above) or use <a class="el" href="classqglviewer_1_1Frame.html#a45358fae434b3912ce81577dc7cf4fc9">getWorldMatrix()</a> instead.</dd></dl>
 
2374
<dl class="section note"><dt>Note:</dt><dd>The scaling factor of the 4x4 matrix is 1.0. </dd></dl>
2417
2375
 
2418
2376
</div>
2419
2377
</div>
2420
2378
</div><!-- contents -->
2421
 
<!-- window showing the filter options -->
2422
 
<div id="MSearchSelectWindow"
2423
 
     onmouseover="return searchBox.OnSearchSelectShow()"
2424
 
     onmouseout="return searchBox.OnSearchSelectHide()"
2425
 
     onkeydown="return searchBox.OnSearchSelectKey(event)">
2426
 
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Defines</a></div>
2427
 
 
2428
 
<!-- iframe showing the search results (closed by default) -->
2429
 
<div id="MSearchResultsWindow">
2430
 
<iframe src="javascript:void(0)" frameborder="0" 
2431
 
        name="MSearchResults" id="MSearchResults">
2432
 
</iframe>
2433
 
</div>
2434
 
 
2435
 
 
2436
 
 
 
2379
<!-- start footer part -->
2437
2380
<hr class="footer"/><address class="footer"><small>
2438
 
Generated on Thu Mar 8 2012 09:02:51 for libQGLViewer by &#160;<a href="http://www.doxygen.org/index.html">
 
2381
Generated on Wed Jun 6 2012 14:24:36 for libQGLViewer by &#160;<a href="http://www.doxygen.org/index.html">
2439
2382
doxygen
2440
 
</a> 1.7.6.1
 
2383
</a> 1.8.1
2441
2384
</small></address>
2442
 
 
2443
2385
</body>
2444
2386
</html>