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

« back to all changes in this revision

Viewing changes to doc/refManual/classqglviewer_1_1KeyFrameInterpolator.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: KeyFrameInterpolator 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">KeyFrameInterpolator      </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">KeyFrameInterpolator</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">KeyFrameInterpolator Class Reference</div>  </div>
107
95
</div><!--header-->
108
96
<div class="contents">
109
 
<!-- doxytag: class="qglviewer::KeyFrameInterpolator" -->
 
97
 
110
98
<p>A keyFrame Catmull-Rom <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> interpolator.  
111
99
 <a href="classqglviewer_1_1KeyFrameInterpolator.html#details">More...</a></p>
112
100
 
113
101
<p><a href="classqglviewer_1_1KeyFrameInterpolator-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_1KeyFrameInterpolator.html#ab55c2a4f1732b90057fae4b6037399de">interpolated</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_1KeyFrameInterpolator.html#ab4010a17bf77b9940b120ee8ed9a0271">endReached</a> ()</td></tr>
119
 
<tr><td colspan="2"><h2><a name="pub-methods"></a>
 
105
<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_1KeyFrameInterpolator.html#ab55c2a4f1732b90057fae4b6037399de">interpolated</a> ()</td></tr>
 
106
<tr class="memitem:ab4010a17bf77b9940b120ee8ed9a0271"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab4010a17bf77b9940b120ee8ed9a0271">endReached</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_1KeyFrameInterpolator.html#a2a78bc183af3ac92802cbe605e2a878e">KeyFrameInterpolator</a> (<a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *fr=NULL)</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_1KeyFrameInterpolator.html#a110b875f9265a30f7a520a3603362f95">~KeyFrameInterpolator</a> ()</td></tr>
123
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
110
<tr class="memitem:a2a78bc183af3ac92802cbe605e2a878e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a2a78bc183af3ac92802cbe605e2a878e">KeyFrameInterpolator</a> (<a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *fr=NULL)</td></tr>
 
111
<tr class="memitem:a110b875f9265a30f7a520a3603362f95"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a110b875f9265a30f7a520a3603362f95">~KeyFrameInterpolator</a> ()</td></tr>
 
112
</table><table class="memberdecls">
 
113
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
124
114
Path creation</h2></td></tr>
125
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a44ac54529e675a2157067c9d205d9622">addKeyFrame</a> (const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> &amp;<a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame</a>)</td></tr>
126
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a379af0370e27c513c4d9091bff272b40">addKeyFrame</a> (const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> &amp;<a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame</a>, float time)</td></tr>
127
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a23d3166003e0355b718f34a3e6c92a1b">addKeyFrame</a> (const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *const <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame</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_1KeyFrameInterpolator.html#aa821392c6e108d5c7814317b8c3cd47f">addKeyFrame</a> (const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *const <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame</a>, float time)</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_1KeyFrameInterpolator.html#ae343912505ce83d62bea580a83c7bc34">deletePath</a> ()</td></tr>
130
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
115
<tr class="memitem:a44ac54529e675a2157067c9d205d9622"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a44ac54529e675a2157067c9d205d9622">addKeyFrame</a> (const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> &amp;<a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame</a>)</td></tr>
 
116
<tr class="memitem:a379af0370e27c513c4d9091bff272b40"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a379af0370e27c513c4d9091bff272b40">addKeyFrame</a> (const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> &amp;<a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame</a>, float time)</td></tr>
 
117
<tr class="memitem:a23d3166003e0355b718f34a3e6c92a1b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a23d3166003e0355b718f34a3e6c92a1b">addKeyFrame</a> (const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *const <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame</a>)</td></tr>
 
118
<tr class="memitem:aa821392c6e108d5c7814317b8c3cd47f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#aa821392c6e108d5c7814317b8c3cd47f">addKeyFrame</a> (const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *const <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame</a>, float time)</td></tr>
 
119
<tr class="memitem:ae343912505ce83d62bea580a83c7bc34"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ae343912505ce83d62bea580a83c7bc34">deletePath</a> ()</td></tr>
 
120
</table><table class="memberdecls">
 
121
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
131
122
Associated Frame</h2></td></tr>
132
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame</a> () const </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_1KeyFrameInterpolator.html#a1e16bb31ee6240a9f0e3a6824f4bef0d">setFrame</a> (<a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *const <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame</a>)</td></tr>
134
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
123
<tr class="memitem:a5426b68b2b1bb6ad8dc0007914412b4f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame</a> () const </td></tr>
 
124
<tr class="memitem:a1e16bb31ee6240a9f0e3a6824f4bef0d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a1e16bb31ee6240a9f0e3a6824f4bef0d">setFrame</a> (<a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *const <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame</a>)</td></tr>
 
125
</table><table class="memberdecls">
 
126
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
135
127
Path parameters</h2></td></tr>
136
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Frame.html">Frame</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a2437eecf340817ad1a3f86c822b111e8">keyFrame</a> (int index) const </td></tr>
137
 
<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a976ec792d48ccd7e53b55bb91b49d473">keyFrameTime</a> (int index) const </td></tr>
138
 
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#aba3744250d9cd01ec848f81151a62273">numberOfKeyFrames</a> () const </td></tr>
139
 
<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a80c858ec25677a47d066e0900f4e1980">duration</a> () const </td></tr>
140
 
<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5335f8bedcb11c4e9cc06cbbab838477">firstTime</a> () const </td></tr>
141
 
<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3e953e6c813baa461389c132c9509e30">lastTime</a> () const </td></tr>
142
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
128
<tr class="memitem:a2437eecf340817ad1a3f86c822b111e8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classqglviewer_1_1Frame.html">Frame</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a2437eecf340817ad1a3f86c822b111e8">keyFrame</a> (int index) const </td></tr>
 
129
<tr class="memitem:a976ec792d48ccd7e53b55bb91b49d473"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a976ec792d48ccd7e53b55bb91b49d473">keyFrameTime</a> (int index) const </td></tr>
 
130
<tr class="memitem:aba3744250d9cd01ec848f81151a62273"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#aba3744250d9cd01ec848f81151a62273">numberOfKeyFrames</a> () const </td></tr>
 
131
<tr class="memitem:a80c858ec25677a47d066e0900f4e1980"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a80c858ec25677a47d066e0900f4e1980">duration</a> () const </td></tr>
 
132
<tr class="memitem:a5335f8bedcb11c4e9cc06cbbab838477"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5335f8bedcb11c4e9cc06cbbab838477">firstTime</a> () const </td></tr>
 
133
<tr class="memitem:a3e953e6c813baa461389c132c9509e30"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3e953e6c813baa461389c132c9509e30">lastTime</a> () const </td></tr>
 
134
</table><table class="memberdecls">
 
135
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
143
136
Interpolation parameters</h2></td></tr>
144
 
<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime</a> () const </td></tr>
145
 
<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a7e468c84c27d896e341563c83e102aad">interpolationSpeed</a> () const </td></tr>
146
 
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a21bf6165ea3a6be2fd854e9be5105b1e">interpolationPeriod</a> () const </td></tr>
147
 
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a906c17cf6c1d51a54c7d3b9b4c9cbd45">loopInterpolation</a> () const </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_1KeyFrameInterpolator.html#ab860af88ea46ecedb2a648157bb68dc3">setInterpolationTime</a> (float time)</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_1KeyFrameInterpolator.html#a3cc64e95e1b8dfda110bcf3d033ecf2d">setInterpolationSpeed</a> (float speed)</td></tr>
150
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a9763e647346a8bee885517d9985173fd">setInterpolationPeriod</a> (int period)</td></tr>
151
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a31a491ac2ac016298cbd1c66f07be6dd">setLoopInterpolation</a> (bool loop=true)</td></tr>
152
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
137
<tr class="memitem:a58326b7948e78c1d2861ca659492207a"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime</a> () const </td></tr>
 
138
<tr class="memitem:a7e468c84c27d896e341563c83e102aad"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a7e468c84c27d896e341563c83e102aad">interpolationSpeed</a> () const </td></tr>
 
139
<tr class="memitem:a21bf6165ea3a6be2fd854e9be5105b1e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a21bf6165ea3a6be2fd854e9be5105b1e">interpolationPeriod</a> () const </td></tr>
 
140
<tr class="memitem:a906c17cf6c1d51a54c7d3b9b4c9cbd45"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a906c17cf6c1d51a54c7d3b9b4c9cbd45">loopInterpolation</a> () const </td></tr>
 
141
<tr class="memitem:ab860af88ea46ecedb2a648157bb68dc3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab860af88ea46ecedb2a648157bb68dc3">setInterpolationTime</a> (float time)</td></tr>
 
142
<tr class="memitem:a3cc64e95e1b8dfda110bcf3d033ecf2d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3cc64e95e1b8dfda110bcf3d033ecf2d">setInterpolationSpeed</a> (float speed)</td></tr>
 
143
<tr class="memitem:a9763e647346a8bee885517d9985173fd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a9763e647346a8bee885517d9985173fd">setInterpolationPeriod</a> (int period)</td></tr>
 
144
<tr class="memitem:a31a491ac2ac016298cbd1c66f07be6dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a31a491ac2ac016298cbd1c66f07be6dd">setLoopInterpolation</a> (bool loop=true)</td></tr>
 
145
</table><table class="memberdecls">
 
146
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
153
147
Interpolation</h2></td></tr>
154
 
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a8cc0fa56ba7b6da71226cc191cc18e70">interpolationIsStarted</a> () const </td></tr>
155
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3c0098b2307d04e904c1f64f505e5819">startInterpolation</a> (int period=-1)</td></tr>
156
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a16f0910299ae07cede3396a14ec01f4b">stopInterpolation</a> ()</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_1KeyFrameInterpolator.html#a0bfc602dc2fcaca40cc49195bba7ba74">resetInterpolation</a> ()</td></tr>
158
 
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#acf744bd8ce09e5433f829f63ba310eef">toggleInterpolation</a> ()</td></tr>
159
 
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ad5393783e1768b6d688a8c49ddea56ae">interpolateAtTime</a> (float time)</td></tr>
160
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
148
<tr class="memitem:a8cc0fa56ba7b6da71226cc191cc18e70"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a8cc0fa56ba7b6da71226cc191cc18e70">interpolationIsStarted</a> () const </td></tr>
 
149
<tr class="memitem:a3c0098b2307d04e904c1f64f505e5819"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3c0098b2307d04e904c1f64f505e5819">startInterpolation</a> (int period=-1)</td></tr>
 
150
<tr class="memitem:a16f0910299ae07cede3396a14ec01f4b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a16f0910299ae07cede3396a14ec01f4b">stopInterpolation</a> ()</td></tr>
 
151
<tr class="memitem:a0bfc602dc2fcaca40cc49195bba7ba74"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a0bfc602dc2fcaca40cc49195bba7ba74">resetInterpolation</a> ()</td></tr>
 
152
<tr class="memitem:acf744bd8ce09e5433f829f63ba310eef"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#acf744bd8ce09e5433f829f63ba310eef">toggleInterpolation</a> ()</td></tr>
 
153
<tr class="memitem:ad5393783e1768b6d688a8c49ddea56ae"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ad5393783e1768b6d688a8c49ddea56ae">interpolateAtTime</a> (float time)</td></tr>
 
154
</table><table class="memberdecls">
 
155
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
161
156
Path drawing</h2></td></tr>
162
 
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#aca0ce46b39ad4093450019d77fd247f2">drawPath</a> (int mask=1, int nbFrames=6, float scale=1.0f)</td></tr>
163
 
<tr><td colspan="2"><h2><a name="member-group"></a>
 
157
<tr class="memitem:aca0ce46b39ad4093450019d77fd247f2"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#aca0ce46b39ad4093450019d77fd247f2">drawPath</a> (int mask=1, int nbFrames=6, float scale=1.0f)</td></tr>
 
158
</table><table class="memberdecls">
 
159
<tr class="heading"><td colspan="2"><h2><a name="member-group"></a>
164
160
XML representation</h2></td></tr>
165
 
<tr><td class="memItemLeft" align="right" valign="top">virtual QDomElement&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a48e0e2dd26cd96418c8b889ceabe80f6">domElement</a> (const QString &amp;name, QDomDocument &amp;document) const </td></tr>
166
 
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#acd13d2ddeca530cb9f26ead47f7d25d3">initFromDOMElement</a> (const QDomElement &amp;element)</td></tr>
 
161
<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_1KeyFrameInterpolator.html#a48e0e2dd26cd96418c8b889ceabe80f6">domElement</a> (const QString &amp;name, QDomDocument &amp;document) const </td></tr>
 
162
<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_1KeyFrameInterpolator.html#acd13d2ddeca530cb9f26ead47f7d25d3">initFromDOMElement</a> (const QDomElement &amp;element)</td></tr>
 
163
</table><table class="memberdecls">
 
164
<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
 
165
Additional Inherited Members</h2></td></tr>
167
166
</table>
168
167
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
169
168
<div class="textblock"><p>A keyFrame Catmull-Rom <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> interpolator. </p>
170
169
<p>A KeyFrameInterpolator holds keyFrames (that define a path) and a pointer to a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> of your application (which will be interpolated). When the user <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3c0098b2307d04e904c1f64f505e5819">startInterpolation()</a>, the KeyFrameInterpolator regularly updates the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> position and orientation along the path.</p>
171
170
<p>Here is a typical utilization example (see also the <a href="../examples/keyFrames.html">keyFrames example</a>): </p>
172
 
<div class="fragment"><pre class="fragment">  init()
173
 
  {
174
 
    <span class="comment">// The KeyFrameInterpolator kfi is given the Frame that it will drive over time.</span>
175
 
    kfi = <span class="keyword">new</span> <a class="code" href="classqglviewer_1_1KeyFrameInterpolator.html#a2a78bc183af3ac92802cbe605e2a878e">KeyFrameInterpolator</a>( <span class="keyword">new</span> Frame() );
176
 
    kfi-&gt;addKeyFrame( Frame( Vec(1,0,0), Quaternion() ) );
177
 
    kfi-&gt;addKeyFrame( <span class="keyword">new</span> Frame( Vec(2,1,0), Quaternion() ) );
178
 
    <span class="comment">// ...and so on for all the keyFrames.</span>
179
 
 
180
 
    <span class="comment">// Ask for a display update after each update of the KeyFrameInterpolator</span>
181
 
    connect(kfi, SIGNAL(<a class="code" href="classqglviewer_1_1KeyFrameInterpolator.html#ab55c2a4f1732b90057fae4b6037399de">interpolated</a>()), SLOT(updateGL()));
182
 
 
183
 
    kfi-&gt;startInterpolation();
184
 
  }
185
 
 
186
 
  draw()
187
 
  {
188
 
    glPushMatrix();
189
 
    glMultMatrixd( kfi-&gt;frame()-&gt;matrix() );
190
 
    <span class="comment">// Draw your object here. Its position and orientation are interpolated.</span>
191
 
    glPopMatrix();
192
 
  }
193
 
</pre></div><p>The keyFrames are defined by a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> and a time, expressed in seconds. The <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> can be provided as a const reference or as a pointer to a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> (see the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a44ac54529e675a2157067c9d205d9622">addKeyFrame()</a> methods). In the latter case, the path will automatically be updated when the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> is modified (using the <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">Frame::modified()</a> signal).</p>
 
171
<div class="fragment"><div class="line">  init()</div>
 
172
<div class="line">  {</div>
 
173
<div class="line">    <span class="comment">// The KeyFrameInterpolator kfi is given the Frame that it will drive over time.</span></div>
 
174
<div class="line">    kfi = <span class="keyword">new</span> <a class="code" href="classqglviewer_1_1KeyFrameInterpolator.html#a2a78bc183af3ac92802cbe605e2a878e">KeyFrameInterpolator</a>( <span class="keyword">new</span> Frame() );</div>
 
175
<div class="line">    kfi-&gt;addKeyFrame( Frame( Vec(1,0,0), Quaternion() ) );</div>
 
176
<div class="line">    kfi-&gt;addKeyFrame( <span class="keyword">new</span> Frame( Vec(2,1,0), Quaternion() ) );</div>
 
177
<div class="line">    <span class="comment">// ...and so on for all the keyFrames.</span></div>
 
178
<div class="line"></div>
 
179
<div class="line">    <span class="comment">// Ask for a display update after each update of the KeyFrameInterpolator</span></div>
 
180
<div class="line">    connect(kfi, SIGNAL(<a class="code" href="classqglviewer_1_1KeyFrameInterpolator.html#ab55c2a4f1732b90057fae4b6037399de">interpolated</a>()), SLOT(updateGL()));</div>
 
181
<div class="line"></div>
 
182
<div class="line">    kfi-&gt;startInterpolation();</div>
 
183
<div class="line">  }</div>
 
184
<div class="line"></div>
 
185
<div class="line">  draw()</div>
 
186
<div class="line">  {</div>
 
187
<div class="line">    glPushMatrix();</div>
 
188
<div class="line">    glMultMatrixd( kfi-&gt;frame()-&gt;matrix() );</div>
 
189
<div class="line">    <span class="comment">// Draw your object here. Its position and orientation are interpolated.</span></div>
 
190
<div class="line">    glPopMatrix();</div>
 
191
<div class="line">  }</div>
 
192
</div><!-- fragment --><p>The keyFrames are defined by a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> and a time, expressed in seconds. The <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> can be provided as a const reference or as a pointer to a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> (see the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a44ac54529e675a2157067c9d205d9622">addKeyFrame()</a> methods). In the latter case, the path will automatically be updated when the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> is modified (using the <a class="el" href="classqglviewer_1_1Frame.html#ab6722375e68e03d151762ebfc83c5459">Frame::modified()</a> signal).</p>
194
193
<p>The time has to be monotonously increasing over keyFrames. When <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a7e468c84c27d896e341563c83e102aad">interpolationSpeed()</a> equals 1.0 (default value), these times correspond to actual user's seconds during interpolation (provided that your main loop is fast enough). The interpolation is then real-time: the keyFrames will be reached at their <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a976ec792d48ccd7e53b55bb91b49d473">keyFrameTime()</a>.</p>
195
194
<h3>Interpolation details</h3>
196
195
<p>When the user <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3c0098b2307d04e904c1f64f505e5819">startInterpolation()</a>, a timer is started which will update the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a>'s position and orientation every <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a21bf6165ea3a6be2fd854e9be5105b1e">interpolationPeriod()</a> milliseconds. This update increases the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime()</a> by <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a21bf6165ea3a6be2fd854e9be5105b1e">interpolationPeriod()</a> * <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a7e468c84c27d896e341563c83e102aad">interpolationSpeed()</a> milliseconds.</p>
197
196
<p>Note that this mechanism ensures that the number of interpolation steps is constant and equal to the total path <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a80c858ec25677a47d066e0900f4e1980">duration()</a> divided by the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a21bf6165ea3a6be2fd854e9be5105b1e">interpolationPeriod()</a> * <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a7e468c84c27d896e341563c83e102aad">interpolationSpeed()</a>. This is especially useful for benchmarking or movie creation (constant number of snapshots).</p>
198
197
<p>During the interpolation, the KeyFrameInterpolator emits an <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab55c2a4f1732b90057fae4b6037399de">interpolated()</a> signal, which will usually be connected to the <a class="el" href="classQGLViewer.html#ae12b7378efbffabc24a133ca1deb19ae">QGLViewer::updateGL()</a> slot. The interpolation is stopped when <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime()</a> is greater than the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3e953e6c813baa461389c132c9509e30">lastTime()</a> (unless <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a906c17cf6c1d51a54c7d3b9b4c9cbd45">loopInterpolation()</a> is <code>true</code>) and the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab4010a17bf77b9940b120ee8ed9a0271">endReached()</a> signal is then emitted.</p>
199
198
<p>Note that a <a class="el" href="classqglviewer_1_1Camera.html" title="A perspective or orthographic camera.">Camera</a> has <a class="el" href="classqglviewer_1_1Camera.html#abfbef567a6bbb9163b31c6f46238e4de">Camera::keyFrameInterpolator()</a>, that can be used to drive the <a class="el" href="classqglviewer_1_1Camera.html" title="A perspective or orthographic camera.">Camera</a> along a path, or to restore a saved position (a path made of a single keyFrame). Press Alt+Fx to define a new keyFrame for path x. Pressing Fx plays/pauses path interpolation. See <a class="el" href="classQGLViewer.html#adfe21e109b45f8c79f2c360bf35fb835">QGLViewer::pathKey()</a> and the <a href="../keyboard.html">keyboard page</a> for details.</p>
200
 
<dl class="attention"><dt><b>Attention:</b></dt><dd>If a <a class="el" href="classqglviewer_1_1Constraint.html" title="An interface class for Frame constraints.">Constraint</a> is attached to the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> (see <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">Frame::constraint()</a>), it should be deactivated before <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a8cc0fa56ba7b6da71226cc191cc18e70">interpolationIsStarted()</a>, otherwise the interpolated motion (computed as if there was no constraint) will probably be erroneous.</dd></dl>
 
199
<dl class="section attention"><dt>Attention:</dt><dd>If a <a class="el" href="classqglviewer_1_1Constraint.html" title="An interface class for Frame constraints.">Constraint</a> is attached to the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> (see <a class="el" href="classqglviewer_1_1Frame.html#a0974dfe336ed84a20adb8c6cdf8dedd9">Frame::constraint()</a>), it should be deactivated before <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a8cc0fa56ba7b6da71226cc191cc18e70">interpolationIsStarted()</a>, otherwise the interpolated motion (computed as if there was no constraint) will probably be erroneous.</dd></dl>
201
200
<h3>Retrieving interpolated values</h3>
202
201
<p>This code defines a KeyFrameInterpolator, and displays the positions that will be followed by the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> along the path: </p>
203
 
<div class="fragment"><pre class="fragment">  <a class="code" href="classqglviewer_1_1KeyFrameInterpolator.html#a2a78bc183af3ac92802cbe605e2a878e">KeyFrameInterpolator</a> kfi( <span class="keyword">new</span> Frame() );
204
 
  <span class="comment">// calls to kfi.addKeyFrame() to define the path.</span>
205
 
 
206
 
  <span class="keyword">const</span> <span class="keywordtype">float</span> deltaTime = 0.04; <span class="comment">// output a position every deltaTime seconds</span>
207
 
  <span class="keywordflow">for</span> (<span class="keywordtype">float</span> time=kfi.firstTime(); time&lt;=kfi.lastTime(); time += deltaTime)
208
 
  {
209
 
    kfi.interpolateAtTime(time);
210
 
    cout &lt;&lt; <span class="stringliteral">&quot;t=&quot;</span> &lt;&lt; time &lt;&lt; <span class="stringliteral">&quot;\tpos=&quot;</span> &lt;&lt; kfi.frame()-&gt;position() &lt;&lt; endl;
211
 
  }
212
 
</pre></div><p> You may want to temporally disconnect the <code>kfi</code> <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab55c2a4f1732b90057fae4b6037399de">interpolated()</a> signal from the <a class="el" href="classQGLViewer.html#ae12b7378efbffabc24a133ca1deb19ae">QGLViewer::updateGL()</a> slot before calling this code. </p>
 
202
<div class="fragment"><div class="line">  <a class="code" href="classqglviewer_1_1KeyFrameInterpolator.html#a2a78bc183af3ac92802cbe605e2a878e">KeyFrameInterpolator</a> kfi( <span class="keyword">new</span> Frame() );</div>
 
203
<div class="line">  <span class="comment">// calls to kfi.addKeyFrame() to define the path.</span></div>
 
204
<div class="line"></div>
 
205
<div class="line">  <span class="keyword">const</span> <span class="keywordtype">float</span> deltaTime = 0.04; <span class="comment">// output a position every deltaTime seconds</span></div>
 
206
<div class="line">  <span class="keywordflow">for</span> (<span class="keywordtype">float</span> time=kfi.firstTime(); time&lt;=kfi.lastTime(); time += deltaTime)</div>
 
207
<div class="line">  {</div>
 
208
<div class="line">    kfi.interpolateAtTime(time);</div>
 
209
<div class="line">    cout &lt;&lt; <span class="stringliteral">&quot;t=&quot;</span> &lt;&lt; time &lt;&lt; <span class="stringliteral">&quot;\tpos=&quot;</span> &lt;&lt; kfi.frame()-&gt;position() &lt;&lt; endl;</div>
 
210
<div class="line">  }</div>
 
211
</div><!-- fragment --><p> You may want to temporally disconnect the <code>kfi</code> <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab55c2a4f1732b90057fae4b6037399de">interpolated()</a> signal from the <a class="el" href="classQGLViewer.html#ae12b7378efbffabc24a133ca1deb19ae">QGLViewer::updateGL()</a> slot before calling this code. </p>
213
212
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
214
 
<a class="anchor" id="a2a78bc183af3ac92802cbe605e2a878e"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::KeyFrameInterpolator" ref="a2a78bc183af3ac92802cbe605e2a878e" args="(Frame *fr=NULL)" -->
 
213
<a class="anchor" id="a2a78bc183af3ac92802cbe605e2a878e"></a>
215
214
<div class="memitem">
216
215
<div class="memproto">
217
216
      <table class="memname">
223
222
          <td></td>
224
223
        </tr>
225
224
      </table>
226
 
</div>
227
 
<div class="memdoc">
 
225
</div><div class="memdoc">
228
226
<p>Creates a KeyFrameInterpolator, with <code>frame</code> as associated <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a>.</p>
229
227
<p>The <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> can be set or changed using <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a1e16bb31ee6240a9f0e3a6824f4bef0d">setFrame()</a>.</p>
230
228
<p><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime()</a>, <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a7e468c84c27d896e341563c83e102aad">interpolationSpeed()</a> and <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a21bf6165ea3a6be2fd854e9be5105b1e">interpolationPeriod()</a> are set to their default values. </p>
231
229
 
232
230
</div>
233
231
</div>
234
 
<a class="anchor" id="a110b875f9265a30f7a520a3603362f95"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::~KeyFrameInterpolator" ref="a110b875f9265a30f7a520a3603362f95" args="()" -->
 
232
<a class="anchor" id="a110b875f9265a30f7a520a3603362f95"></a>
235
233
<div class="memitem">
236
234
<div class="memproto">
 
235
<table class="mlabels">
 
236
  <tr>
 
237
  <td class="mlabels-left">
237
238
      <table class="memname">
238
239
        <tr>
239
240
          <td class="memname">~KeyFrameInterpolator </td>
240
241
          <td>(</td>
241
242
          <td class="paramname"></td><td>)</td>
242
 
          <td><code> [virtual]</code></td>
 
243
          <td></td>
243
244
        </tr>
244
245
      </table>
245
 
</div>
246
 
<div class="memdoc">
 
246
  </td>
 
247
  <td class="mlabels-right">
 
248
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
 
249
  </tr>
 
250
</table>
 
251
</div><div class="memdoc">
247
252
<p>Virtual destructor. Clears the keyFrame path. </p>
248
253
 
249
254
</div>
250
255
</div>
251
256
<hr/><h2>Member Function Documentation</h2>
252
 
<a class="anchor" id="a44ac54529e675a2157067c9d205d9622"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::addKeyFrame" ref="a44ac54529e675a2157067c9d205d9622" args="(const Frame &amp;frame)" -->
 
257
<a class="anchor" id="a44ac54529e675a2157067c9d205d9622"></a>
253
258
<div class="memitem">
254
259
<div class="memproto">
 
260
<table class="mlabels">
 
261
  <tr>
 
262
  <td class="mlabels-left">
255
263
      <table class="memname">
256
264
        <tr>
257
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a44ac54529e675a2157067c9d205d9622">addKeyFrame</a> </td>
 
265
          <td class="memname">void addKeyFrame </td>
258
266
          <td>(</td>
259
267
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> &amp;&#160;</td>
260
268
          <td class="paramname"><em>frame</em></td><td>)</td>
261
 
          <td><code> [slot]</code></td>
 
269
          <td></td>
262
270
        </tr>
263
271
      </table>
264
 
</div>
265
 
<div class="memdoc">
 
272
  </td>
 
273
  <td class="mlabels-right">
 
274
<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
 
275
  </tr>
 
276
</table>
 
277
</div><div class="memdoc">
266
278
<p>Appends a new keyFrame to the path.</p>
267
279
<p>Same as <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a379af0370e27c513c4d9091bff272b40">addKeyFrame(const Frame&amp; frame, float)</a>, except that the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a976ec792d48ccd7e53b55bb91b49d473">keyFrameTime()</a> is automatically set to previous <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a976ec792d48ccd7e53b55bb91b49d473">keyFrameTime()</a> plus one second (or 0.0 if there is no previous keyFrame). </p>
268
280
 
269
281
</div>
270
282
</div>
271
 
<a class="anchor" id="a379af0370e27c513c4d9091bff272b40"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::addKeyFrame" ref="a379af0370e27c513c4d9091bff272b40" args="(const Frame &amp;frame, float time)" -->
 
283
<a class="anchor" id="a379af0370e27c513c4d9091bff272b40"></a>
272
284
<div class="memitem">
273
285
<div class="memproto">
 
286
<table class="mlabels">
 
287
  <tr>
 
288
  <td class="mlabels-left">
274
289
      <table class="memname">
275
290
        <tr>
276
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a44ac54529e675a2157067c9d205d9622">addKeyFrame</a> </td>
 
291
          <td class="memname">void addKeyFrame </td>
277
292
          <td>(</td>
278
293
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> &amp;&#160;</td>
279
294
          <td class="paramname"><em>frame</em>, </td>
287
302
        <tr>
288
303
          <td></td>
289
304
          <td>)</td>
290
 
          <td></td><td><code> [slot]</code></td>
 
305
          <td></td><td></td>
291
306
        </tr>
292
307
      </table>
293
 
</div>
294
 
<div class="memdoc">
 
308
  </td>
 
309
  <td class="mlabels-right">
 
310
<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
 
311
  </tr>
 
312
</table>
 
313
</div><div class="memdoc">
295
314
<p>Appends a new keyFrame to the path, with its associated <code>time</code> (in seconds).</p>
296
315
<p>The path will use the current <code>frame</code> state. If you want the path to change when <code>frame</code> is modified, you need to pass a <em>pointer</em> to the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> instead (see addKeyFrame(const Frame*, float)).</p>
297
316
<p>The <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a976ec792d48ccd7e53b55bb91b49d473">keyFrameTime()</a> have to be monotonously increasing over keyFrames. </p>
298
317
 
299
318
</div>
300
319
</div>
301
 
<a class="anchor" id="a23d3166003e0355b718f34a3e6c92a1b"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::addKeyFrame" ref="a23d3166003e0355b718f34a3e6c92a1b" args="(const Frame *const frame)" -->
 
320
<a class="anchor" id="a23d3166003e0355b718f34a3e6c92a1b"></a>
302
321
<div class="memitem">
303
322
<div class="memproto">
 
323
<table class="mlabels">
 
324
  <tr>
 
325
  <td class="mlabels-left">
304
326
      <table class="memname">
305
327
        <tr>
306
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a44ac54529e675a2157067c9d205d9622">addKeyFrame</a> </td>
 
328
          <td class="memname">void addKeyFrame </td>
307
329
          <td>(</td>
308
330
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *const&#160;</td>
309
331
          <td class="paramname"><em>frame</em></td><td>)</td>
310
 
          <td><code> [slot]</code></td>
 
332
          <td></td>
311
333
        </tr>
312
334
      </table>
313
 
</div>
314
 
<div class="memdoc">
 
335
  </td>
 
336
  <td class="mlabels-right">
 
337
<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
 
338
  </tr>
 
339
</table>
 
340
</div><div class="memdoc">
315
341
<p>Appends a new keyFrame to the path.</p>
316
342
<p>Same as <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#aa821392c6e108d5c7814317b8c3cd47f">addKeyFrame(const Frame* frame, float)</a>, except that the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a976ec792d48ccd7e53b55bb91b49d473">keyFrameTime()</a> is set to the previous <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a976ec792d48ccd7e53b55bb91b49d473">keyFrameTime()</a> plus one second (or 0.0 if there is no previous keyFrame). </p>
317
343
 
318
344
</div>
319
345
</div>
320
 
<a class="anchor" id="aa821392c6e108d5c7814317b8c3cd47f"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::addKeyFrame" ref="aa821392c6e108d5c7814317b8c3cd47f" args="(const Frame *const frame, float time)" -->
 
346
<a class="anchor" id="aa821392c6e108d5c7814317b8c3cd47f"></a>
321
347
<div class="memitem">
322
348
<div class="memproto">
 
349
<table class="mlabels">
 
350
  <tr>
 
351
  <td class="mlabels-left">
323
352
      <table class="memname">
324
353
        <tr>
325
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a44ac54529e675a2157067c9d205d9622">addKeyFrame</a> </td>
 
354
          <td class="memname">void addKeyFrame </td>
326
355
          <td>(</td>
327
356
          <td class="paramtype">const <a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *const&#160;</td>
328
357
          <td class="paramname"><em>frame</em>, </td>
336
365
        <tr>
337
366
          <td></td>
338
367
          <td>)</td>
339
 
          <td></td><td><code> [slot]</code></td>
 
368
          <td></td><td></td>
340
369
        </tr>
341
370
      </table>
342
 
</div>
343
 
<div class="memdoc">
 
371
  </td>
 
372
  <td class="mlabels-right">
 
373
<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
 
374
  </tr>
 
375
</table>
 
376
</div><div class="memdoc">
344
377
<p>Appends a new keyFrame to the path, with its associated <code>time</code> (in seconds).</p>
345
378
<p>The keyFrame is given as a pointer to a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a>, which will be connected to the KeyFrameInterpolator: when <code>frame</code> is modified, the KeyFrameInterpolator path is updated accordingly. This allows for dynamic paths, where keyFrame can be edited, even during the interpolation. See the <a href="../examples/keyFrames.html">keyFrames example</a> for an illustration.</p>
346
379
<p><code>NULL</code> <code>frame</code> pointers are silently ignored. The <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a976ec792d48ccd7e53b55bb91b49d473">keyFrameTime()</a> has to be monotonously increasing over keyFrames.</p>
348
381
 
349
382
</div>
350
383
</div>
351
 
<a class="anchor" id="ae343912505ce83d62bea580a83c7bc34"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::deletePath" ref="ae343912505ce83d62bea580a83c7bc34" args="()" -->
 
384
<a class="anchor" id="ae343912505ce83d62bea580a83c7bc34"></a>
352
385
<div class="memitem">
353
386
<div class="memproto">
 
387
<table class="mlabels">
 
388
  <tr>
 
389
  <td class="mlabels-left">
354
390
      <table class="memname">
355
391
        <tr>
356
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ae343912505ce83d62bea580a83c7bc34">deletePath</a> </td>
 
392
          <td class="memname">void deletePath </td>
357
393
          <td>(</td>
358
394
          <td class="paramname"></td><td>)</td>
359
 
          <td><code> [slot]</code></td>
 
395
          <td></td>
360
396
        </tr>
361
397
      </table>
362
 
</div>
363
 
<div class="memdoc">
 
398
  </td>
 
399
  <td class="mlabels-right">
 
400
<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
 
401
  </tr>
 
402
</table>
 
403
</div><div class="memdoc">
364
404
<p>Removes all keyFrames from the path. The <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#aba3744250d9cd01ec848f81151a62273">numberOfKeyFrames()</a> is set to 0. </p>
365
405
 
366
406
</div>
367
407
</div>
368
 
<a class="anchor" id="a48e0e2dd26cd96418c8b889ceabe80f6"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::domElement" ref="a48e0e2dd26cd96418c8b889ceabe80f6" args="(const QString &amp;name, QDomDocument &amp;document) const " -->
 
408
<a class="anchor" id="a48e0e2dd26cd96418c8b889ceabe80f6"></a>
369
409
<div class="memitem">
370
410
<div class="memproto">
 
411
<table class="mlabels">
 
412
  <tr>
 
413
  <td class="mlabels-left">
371
414
      <table class="memname">
372
415
        <tr>
373
 
          <td class="memname">QDomElement <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a48e0e2dd26cd96418c8b889ceabe80f6">domElement</a> </td>
 
416
          <td class="memname">QDomElement domElement </td>
374
417
          <td>(</td>
375
418
          <td class="paramtype">const QString &amp;&#160;</td>
376
419
          <td class="paramname"><em>name</em>, </td>
384
427
        <tr>
385
428
          <td></td>
386
429
          <td>)</td>
387
 
          <td></td><td> const<code> [virtual]</code></td>
 
430
          <td></td><td> const</td>
388
431
        </tr>
389
432
      </table>
390
 
</div>
391
 
<div class="memdoc">
 
433
  </td>
 
434
  <td class="mlabels-right">
 
435
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
 
436
  </tr>
 
437
</table>
 
438
</div><div class="memdoc">
392
439
<p>Returns an XML <code>QDomElement</code> that represents the KeyFrameInterpolator.</p>
393
440
<p>The resulting QDomElement holds the KeyFrameInterpolator parameters as well as the path keyFrames (if the keyFrame is defined by a pointer to a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a>, use its current value).</p>
394
441
<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>
398
445
 
399
446
</div>
400
447
</div>
401
 
<a class="anchor" id="aca0ce46b39ad4093450019d77fd247f2"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::drawPath" ref="aca0ce46b39ad4093450019d77fd247f2" args="(int mask=1, int nbFrames=6, float scale=1.0f)" -->
 
448
<a class="anchor" id="aca0ce46b39ad4093450019d77fd247f2"></a>
402
449
<div class="memitem">
403
450
<div class="memproto">
 
451
<table class="mlabels">
 
452
  <tr>
 
453
  <td class="mlabels-left">
404
454
      <table class="memname">
405
455
        <tr>
406
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#aca0ce46b39ad4093450019d77fd247f2">drawPath</a> </td>
 
456
          <td class="memname">void drawPath </td>
407
457
          <td>(</td>
408
458
          <td class="paramtype">int&#160;</td>
409
459
          <td class="paramname"><em>mask</em> = <code>1</code>, </td>
423
473
        <tr>
424
474
          <td></td>
425
475
          <td>)</td>
426
 
          <td></td><td><code> [virtual]</code></td>
 
476
          <td></td><td></td>
427
477
        </tr>
428
478
      </table>
429
 
</div>
430
 
<div class="memdoc">
 
479
  </td>
 
480
  <td class="mlabels-right">
 
481
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
 
482
  </tr>
 
483
</table>
 
484
</div><div class="memdoc">
431
485
<p>Draws the path used to interpolate the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a>.</p>
432
486
<p><code>mask</code> controls what is drawn: if (mask &amp; 1) (default), the position path is drawn. If (mask &amp; 2), a camera representation is regularly drawn and if (mask &amp; 4), an oriented axis is regularly drawn. Examples:</p>
433
 
<div class="fragment"><pre class="fragment">  <a class="code" href="classqglviewer_1_1KeyFrameInterpolator.html#aca0ce46b39ad4093450019d77fd247f2">drawPath</a>();  <span class="comment">// Simply draws the interpolation path</span>
434
 
  <a class="code" href="classqglviewer_1_1KeyFrameInterpolator.html#aca0ce46b39ad4093450019d77fd247f2">drawPath</a>(3); <span class="comment">// Draws path and cameras</span>
435
 
  <a class="code" href="classqglviewer_1_1KeyFrameInterpolator.html#aca0ce46b39ad4093450019d77fd247f2">drawPath</a>(5); <span class="comment">// Draws path and axis</span>
436
 
</pre></div><p>In the case where camera or axis is drawn, <code>nbFrames</code> controls the number of objects (axis or camera) drawn between two successive keyFrames. When <code>nbFrames=1</code>, only the path KeyFrames are drawn. <code>nbFrames=2</code> also draws the intermediate orientation, etc. The maximum value is 30. <code>nbFrames</code> should divide 30 so that an object is drawn for each KeyFrame. Default value is 6.</p>
 
487
<div class="fragment"><div class="line">  <a class="code" href="classqglviewer_1_1KeyFrameInterpolator.html#aca0ce46b39ad4093450019d77fd247f2">drawPath</a>();  <span class="comment">// Simply draws the interpolation path</span></div>
 
488
<div class="line">  <a class="code" href="classqglviewer_1_1KeyFrameInterpolator.html#aca0ce46b39ad4093450019d77fd247f2">drawPath</a>(3); <span class="comment">// Draws path and cameras</span></div>
 
489
<div class="line">  <a class="code" href="classqglviewer_1_1KeyFrameInterpolator.html#aca0ce46b39ad4093450019d77fd247f2">drawPath</a>(5); <span class="comment">// Draws path and axis</span></div>
 
490
</div><!-- fragment --><p>In the case where camera or axis is drawn, <code>nbFrames</code> controls the number of objects (axis or camera) drawn between two successive keyFrames. When <code>nbFrames=1</code>, only the path KeyFrames are drawn. <code>nbFrames=2</code> also draws the intermediate orientation, etc. The maximum value is 30. <code>nbFrames</code> should divide 30 so that an object is drawn for each KeyFrame. Default value is 6.</p>
437
491
<p><code>scale</code> (default=1.0) controls the scaling of the camera and axis drawing. A value of <a class="el" href="classQGLViewer.html#a58c17044cc4a601c6b446bf5e83513f9">QGLViewer::sceneRadius()</a> should give good results.</p>
438
492
<p>See the <a href="../examples/keyFrames.html">keyFrames example</a> for an illustration.</p>
439
493
<p>The color of the path is the current <code>glColor()</code>.</p>
440
 
<dl class="attention"><dt><b>Attention:</b></dt><dd>The OpenGL state is modified by this method: GL_LIGHTING is disabled and line width set to 2. Use this code to preserve your current OpenGL state: <div class="fragment"><pre class="fragment">  glPushAttrib(GL_ALL_ATTRIB_BITS);
441
 
  drawPathModifyGLState(mask, nbFrames, scale);
442
 
  glPopAttrib();
443
 
</pre></div> </dd></dl>
 
494
<dl class="section attention"><dt>Attention:</dt><dd>The OpenGL state is modified by this method: GL_LIGHTING is disabled and line width set to 2. Use this code to preserve your current OpenGL state: <div class="fragment"><div class="line">  glPushAttrib(GL_ALL_ATTRIB_BITS);</div>
 
495
<div class="line">  drawPathModifyGLState(mask, nbFrames, scale);</div>
 
496
<div class="line">  glPopAttrib();</div>
 
497
</div><!-- fragment --> </dd></dl>
444
498
 
445
499
</div>
446
500
</div>
447
 
<a class="anchor" id="a80c858ec25677a47d066e0900f4e1980"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::duration" ref="a80c858ec25677a47d066e0900f4e1980" args="() const " -->
 
501
<a class="anchor" id="a80c858ec25677a47d066e0900f4e1980"></a>
448
502
<div class="memitem">
449
503
<div class="memproto">
450
504
      <table class="memname">
451
505
        <tr>
452
 
          <td class="memname">float <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a80c858ec25677a47d066e0900f4e1980">duration</a> </td>
 
506
          <td class="memname">float duration </td>
453
507
          <td>(</td>
454
508
          <td class="paramname"></td><td>)</td>
455
509
          <td> const</td>
456
510
        </tr>
457
511
      </table>
458
 
</div>
459
 
<div class="memdoc">
 
512
</div><div class="memdoc">
460
513
<p>Returns the duration of the KeyFrameInterpolator path, expressed in seconds.</p>
461
514
<p>Simply corresponds to <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3e953e6c813baa461389c132c9509e30">lastTime()</a> - <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5335f8bedcb11c4e9cc06cbbab838477">firstTime()</a>. Returns 0.0 if the path has less than 2 keyFrames. See also <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a976ec792d48ccd7e53b55bb91b49d473">keyFrameTime()</a>. </p>
462
515
 
463
516
</div>
464
517
</div>
465
 
<a class="anchor" id="ab4010a17bf77b9940b120ee8ed9a0271"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::endReached" ref="ab4010a17bf77b9940b120ee8ed9a0271" args="()" -->
 
518
<a class="anchor" id="ab4010a17bf77b9940b120ee8ed9a0271"></a>
466
519
<div class="memitem">
467
520
<div class="memproto">
 
521
<table class="mlabels">
 
522
  <tr>
 
523
  <td class="mlabels-left">
468
524
      <table class="memname">
469
525
        <tr>
470
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab4010a17bf77b9940b120ee8ed9a0271">endReached</a> </td>
 
526
          <td class="memname">void endReached </td>
471
527
          <td>(</td>
472
528
          <td class="paramname"></td><td>)</td>
473
 
          <td><code> [signal]</code></td>
 
529
          <td></td>
474
530
        </tr>
475
531
      </table>
476
 
</div>
477
 
<div class="memdoc">
 
532
  </td>
 
533
  <td class="mlabels-right">
 
534
<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
 
535
  </tr>
 
536
</table>
 
537
</div><div class="memdoc">
478
538
<p>This signal is emitted when the interpolation reaches the first (when <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a7e468c84c27d896e341563c83e102aad">interpolationSpeed()</a> is negative) or the last keyFrame.</p>
479
539
<p>When <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a906c17cf6c1d51a54c7d3b9b4c9cbd45">loopInterpolation()</a> is <code>true</code>, <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime()</a> is reset and the interpolation continues. It otherwise stops. </p>
480
540
 
481
541
</div>
482
542
</div>
483
 
<a class="anchor" id="a5335f8bedcb11c4e9cc06cbbab838477"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::firstTime" ref="a5335f8bedcb11c4e9cc06cbbab838477" args="() const " -->
 
543
<a class="anchor" id="a5335f8bedcb11c4e9cc06cbbab838477"></a>
484
544
<div class="memitem">
485
545
<div class="memproto">
486
546
      <table class="memname">
487
547
        <tr>
488
 
          <td class="memname">float <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5335f8bedcb11c4e9cc06cbbab838477">firstTime</a> </td>
 
548
          <td class="memname">float firstTime </td>
489
549
          <td>(</td>
490
550
          <td class="paramname"></td><td>)</td>
491
551
          <td> const</td>
492
552
        </tr>
493
553
      </table>
494
 
</div>
495
 
<div class="memdoc">
 
554
</div><div class="memdoc">
496
555
<p>Returns the time corresponding to the first keyFrame, expressed in seconds.</p>
497
556
<p>Returns 0.0 if the path is empty. See also <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3e953e6c813baa461389c132c9509e30">lastTime()</a>, <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a80c858ec25677a47d066e0900f4e1980">duration()</a> and <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a976ec792d48ccd7e53b55bb91b49d473">keyFrameTime()</a>. </p>
498
557
 
499
558
</div>
500
559
</div>
501
 
<a class="anchor" id="a5426b68b2b1bb6ad8dc0007914412b4f"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::frame" ref="a5426b68b2b1bb6ad8dc0007914412b4f" args="() const " -->
 
560
<a class="anchor" id="a5426b68b2b1bb6ad8dc0007914412b4f"></a>
502
561
<div class="memitem">
503
562
<div class="memproto">
504
563
      <table class="memname">
505
564
        <tr>
506
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Frame.html">Frame</a>* <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame</a> </td>
 
565
          <td class="memname"><a class="el" href="classqglviewer_1_1Frame.html">Frame</a>* frame </td>
507
566
          <td>(</td>
508
567
          <td class="paramname"></td><td>)</td>
509
568
          <td> const</td>
510
569
        </tr>
511
570
      </table>
512
 
</div>
513
 
<div class="memdoc">
 
571
</div><div class="memdoc">
514
572
<p>Returns the associated <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> and that is interpolated by the KeyFrameInterpolator.</p>
515
573
<p>When <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a8cc0fa56ba7b6da71226cc191cc18e70">interpolationIsStarted()</a>, this <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a>'s position and orientation will regularly be updated by a timer, so that they follow the KeyFrameInterpolator path.</p>
516
574
<p>Set using <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a1e16bb31ee6240a9f0e3a6824f4bef0d">setFrame()</a> or with the KeyFrameInterpolator constructor. </p>
517
575
 
518
576
</div>
519
577
</div>
520
 
<a class="anchor" id="acd13d2ddeca530cb9f26ead47f7d25d3"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::initFromDOMElement" ref="acd13d2ddeca530cb9f26ead47f7d25d3" args="(const QDomElement &amp;element)" -->
 
578
<a class="anchor" id="acd13d2ddeca530cb9f26ead47f7d25d3"></a>
521
579
<div class="memitem">
522
580
<div class="memproto">
 
581
<table class="mlabels">
 
582
  <tr>
 
583
  <td class="mlabels-left">
523
584
      <table class="memname">
524
585
        <tr>
525
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#acd13d2ddeca530cb9f26ead47f7d25d3">initFromDOMElement</a> </td>
 
586
          <td class="memname">void initFromDOMElement </td>
526
587
          <td>(</td>
527
588
          <td class="paramtype">const QDomElement &amp;&#160;</td>
528
589
          <td class="paramname"><em>element</em></td><td>)</td>
529
 
          <td><code> [virtual]</code></td>
 
590
          <td></td>
530
591
        </tr>
531
592
      </table>
532
 
</div>
533
 
<div class="memdoc">
 
593
  </td>
 
594
  <td class="mlabels-right">
 
595
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
 
596
  </tr>
 
597
</table>
 
598
</div><div class="memdoc">
534
599
<p>Restores the KeyFrameInterpolator state from a <code>QDomElement</code> created by <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a48e0e2dd26cd96418c8b889ceabe80f6">domElement()</a>.</p>
535
600
<p>Note that the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> pointer is not included in the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a48e0e2dd26cd96418c8b889ceabe80f6">domElement()</a>: you need to <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a1e16bb31ee6240a9f0e3a6824f4bef0d">setFrame()</a> after this method to attach a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> to the KeyFrameInterpolator.</p>
536
601
<p>See <a class="el" href="classqglviewer_1_1Vec.html#acd13d2ddeca530cb9f26ead47f7d25d3">Vec::initFromDOMElement()</a> for a complete code example.</p>
538
603
 
539
604
</div>
540
605
</div>
541
 
<a class="anchor" id="ad5393783e1768b6d688a8c49ddea56ae"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::interpolateAtTime" ref="ad5393783e1768b6d688a8c49ddea56ae" args="(float time)" -->
 
606
<a class="anchor" id="ad5393783e1768b6d688a8c49ddea56ae"></a>
542
607
<div class="memitem">
543
608
<div class="memproto">
 
609
<table class="mlabels">
 
610
  <tr>
 
611
  <td class="mlabels-left">
544
612
      <table class="memname">
545
613
        <tr>
546
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ad5393783e1768b6d688a8c49ddea56ae">interpolateAtTime</a> </td>
 
614
          <td class="memname">void interpolateAtTime </td>
547
615
          <td>(</td>
548
616
          <td class="paramtype">float&#160;</td>
549
617
          <td class="paramname"><em>time</em></td><td>)</td>
550
 
          <td><code> [virtual, slot]</code></td>
 
618
          <td></td>
551
619
        </tr>
552
620
      </table>
553
 
</div>
554
 
<div class="memdoc">
 
621
  </td>
 
622
  <td class="mlabels-right">
 
623
<span class="mlabels"><span class="mlabel">virtual</span><span class="mlabel">slot</span></span>  </td>
 
624
  </tr>
 
625
</table>
 
626
</div><div class="memdoc">
555
627
<p>Interpolate <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> at time <code>time</code> (expressed in seconds). <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime()</a> is set to <code>time</code> and <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> is set accordingly.</p>
556
628
<p>If you simply want to change <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime()</a> but not the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> state, use <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab860af88ea46ecedb2a648157bb68dc3">setInterpolationTime()</a> instead.</p>
557
629
<p>Emits the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab55c2a4f1732b90057fae4b6037399de">interpolated()</a> signal and makes the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> emit the <a class="el" href="classqglviewer_1_1Frame.html#ab55c2a4f1732b90057fae4b6037399de">Frame::interpolated()</a> signal. </p>
558
630
 
559
631
</div>
560
632
</div>
561
 
<a class="anchor" id="ab55c2a4f1732b90057fae4b6037399de"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::interpolated" ref="ab55c2a4f1732b90057fae4b6037399de" args="()" -->
 
633
<a class="anchor" id="ab55c2a4f1732b90057fae4b6037399de"></a>
562
634
<div class="memitem">
563
635
<div class="memproto">
 
636
<table class="mlabels">
 
637
  <tr>
 
638
  <td class="mlabels-left">
564
639
      <table class="memname">
565
640
        <tr>
566
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab55c2a4f1732b90057fae4b6037399de">interpolated</a> </td>
 
641
          <td class="memname">void interpolated </td>
567
642
          <td>(</td>
568
643
          <td class="paramname"></td><td>)</td>
569
 
          <td><code> [signal]</code></td>
 
644
          <td></td>
570
645
        </tr>
571
646
      </table>
572
 
</div>
573
 
<div class="memdoc">
 
647
  </td>
 
648
  <td class="mlabels-right">
 
649
<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
 
650
  </tr>
 
651
</table>
 
652
</div><div class="memdoc">
574
653
<p>This signal is emitted whenever the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> state is interpolated.</p>
575
654
<p>The emission of this signal triggers the synchronous emission of the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> <a class="el" href="classqglviewer_1_1Frame.html#ab55c2a4f1732b90057fae4b6037399de">Frame::interpolated()</a> signal, which may also be useful.</p>
576
655
<p>This signal should especially be connected to your <a class="el" href="classQGLViewer.html#ae12b7378efbffabc24a133ca1deb19ae">QGLViewer::updateGL()</a> slot, so that the display is updated after every update of the KeyFrameInterpolator <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a>: </p>
577
 
<div class="fragment"><pre class="fragment">    connect(myKeyFrameInterpolator, SIGNAL(<a class="code" href="classqglviewer_1_1KeyFrameInterpolator.html#ab55c2a4f1732b90057fae4b6037399de">interpolated</a>()), SLOT(updateGL()));
578
 
</pre></div><p> Use the <a class="el" href="classQGLViewer.html#a32d7a506084c50fd97a24f94d9ca4864">QGLViewer::QGLViewerPool()</a> to connect the signal to all the viewers.</p>
 
656
<div class="fragment"><div class="line">    connect(myKeyFrameInterpolator, SIGNAL(<a class="code" href="classqglviewer_1_1KeyFrameInterpolator.html#ab55c2a4f1732b90057fae4b6037399de">interpolated</a>()), SLOT(updateGL()));</div>
 
657
</div><!-- fragment --><p> Use the <a class="el" href="classQGLViewer.html#a32d7a506084c50fd97a24f94d9ca4864">QGLViewer::QGLViewerPool()</a> to connect the signal to all the viewers.</p>
579
658
<p>Note that the <a class="el" href="classQGLViewer.html#a27a9e97573822d296b48e1c408b74042">QGLViewer::camera()</a> <a class="el" href="classqglviewer_1_1Camera.html#abfbef567a6bbb9163b31c6f46238e4de">Camera::keyFrameInterpolator()</a> created using <a class="el" href="classQGLViewer.html#adfe21e109b45f8c79f2c360bf35fb835">QGLViewer::pathKey()</a> have their <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab55c2a4f1732b90057fae4b6037399de">interpolated()</a> signals automatically connected to the <a class="el" href="classQGLViewer.html#ae12b7378efbffabc24a133ca1deb19ae">QGLViewer::updateGL()</a> slot. </p>
580
659
 
581
660
</div>
582
661
</div>
583
 
<a class="anchor" id="a8cc0fa56ba7b6da71226cc191cc18e70"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::interpolationIsStarted" ref="a8cc0fa56ba7b6da71226cc191cc18e70" args="() const " -->
 
662
<a class="anchor" id="a8cc0fa56ba7b6da71226cc191cc18e70"></a>
584
663
<div class="memitem">
585
664
<div class="memproto">
586
665
      <table class="memname">
587
666
        <tr>
588
 
          <td class="memname">bool <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a8cc0fa56ba7b6da71226cc191cc18e70">interpolationIsStarted</a> </td>
 
667
          <td class="memname">bool interpolationIsStarted </td>
589
668
          <td>(</td>
590
669
          <td class="paramname"></td><td>)</td>
591
670
          <td> const</td>
592
671
        </tr>
593
672
      </table>
594
 
</div>
595
 
<div class="memdoc">
 
673
</div><div class="memdoc">
596
674
<p>Returns <code>true</code> when the interpolation is being performed. Use <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3c0098b2307d04e904c1f64f505e5819">startInterpolation()</a>, <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a16f0910299ae07cede3396a14ec01f4b">stopInterpolation()</a> or <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#acf744bd8ce09e5433f829f63ba310eef">toggleInterpolation()</a> to modify this state. </p>
597
675
 
598
676
</div>
599
677
</div>
600
 
<a class="anchor" id="a21bf6165ea3a6be2fd854e9be5105b1e"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::interpolationPeriod" ref="a21bf6165ea3a6be2fd854e9be5105b1e" args="() const " -->
 
678
<a class="anchor" id="a21bf6165ea3a6be2fd854e9be5105b1e"></a>
601
679
<div class="memitem">
602
680
<div class="memproto">
603
681
      <table class="memname">
604
682
        <tr>
605
 
          <td class="memname">int <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a21bf6165ea3a6be2fd854e9be5105b1e">interpolationPeriod</a> </td>
 
683
          <td class="memname">int interpolationPeriod </td>
606
684
          <td>(</td>
607
685
          <td class="paramname"></td><td>)</td>
608
686
          <td> const</td>
609
687
        </tr>
610
688
      </table>
611
 
</div>
612
 
<div class="memdoc">
 
689
</div><div class="memdoc">
613
690
<p>Returns the current interpolation period, expressed in milliseconds.</p>
614
691
<p>The update of the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> state will be done by a timer at this period when <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a8cc0fa56ba7b6da71226cc191cc18e70">interpolationIsStarted()</a>.</p>
615
692
<p>This period (multiplied by <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a7e468c84c27d896e341563c83e102aad">interpolationSpeed()</a>) is added to the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime()</a> at each update, and the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> state is modified accordingly (see <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ad5393783e1768b6d688a8c49ddea56ae">interpolateAtTime()</a>). Default value is 40 milliseconds. </p>
616
693
 
617
694
</div>
618
695
</div>
619
 
<a class="anchor" id="a7e468c84c27d896e341563c83e102aad"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::interpolationSpeed" ref="a7e468c84c27d896e341563c83e102aad" args="() const " -->
 
696
<a class="anchor" id="a7e468c84c27d896e341563c83e102aad"></a>
620
697
<div class="memitem">
621
698
<div class="memproto">
622
699
      <table class="memname">
623
700
        <tr>
624
 
          <td class="memname">float <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a7e468c84c27d896e341563c83e102aad">interpolationSpeed</a> </td>
 
701
          <td class="memname">float interpolationSpeed </td>
625
702
          <td>(</td>
626
703
          <td class="paramname"></td><td>)</td>
627
704
          <td> const</td>
628
705
        </tr>
629
706
      </table>
630
 
</div>
631
 
<div class="memdoc">
 
707
</div><div class="memdoc">
632
708
<p>Returns the current interpolation speed.</p>
633
709
<p>Default value is 1.0, which means <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a976ec792d48ccd7e53b55bb91b49d473">keyFrameTime()</a> will be matched during the interpolation (provided that your main loop is fast enough).</p>
634
710
<p>A negative value will result in a reverse interpolation of the keyFrames. See also <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a21bf6165ea3a6be2fd854e9be5105b1e">interpolationPeriod()</a>. </p>
635
711
 
636
712
</div>
637
713
</div>
638
 
<a class="anchor" id="a58326b7948e78c1d2861ca659492207a"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::interpolationTime" ref="a58326b7948e78c1d2861ca659492207a" args="() const " -->
 
714
<a class="anchor" id="a58326b7948e78c1d2861ca659492207a"></a>
639
715
<div class="memitem">
640
716
<div class="memproto">
641
717
      <table class="memname">
642
718
        <tr>
643
 
          <td class="memname">float <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime</a> </td>
 
719
          <td class="memname">float interpolationTime </td>
644
720
          <td>(</td>
645
721
          <td class="paramname"></td><td>)</td>
646
722
          <td> const</td>
647
723
        </tr>
648
724
      </table>
649
 
</div>
650
 
<div class="memdoc">
 
725
</div><div class="memdoc">
651
726
<p>Returns the current interpolation time (in seconds) along the KeyFrameInterpolator path.</p>
652
727
<p>This time is regularly updated when <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a8cc0fa56ba7b6da71226cc191cc18e70">interpolationIsStarted()</a>. Can be set directly with <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab860af88ea46ecedb2a648157bb68dc3">setInterpolationTime()</a> or <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ad5393783e1768b6d688a8c49ddea56ae">interpolateAtTime()</a>. </p>
653
728
 
654
729
</div>
655
730
</div>
656
 
<a class="anchor" id="a2437eecf340817ad1a3f86c822b111e8"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::keyFrame" ref="a2437eecf340817ad1a3f86c822b111e8" args="(int index) const " -->
 
731
<a class="anchor" id="a2437eecf340817ad1a3f86c822b111e8"></a>
657
732
<div class="memitem">
658
733
<div class="memproto">
659
734
      <table class="memname">
660
735
        <tr>
661
 
          <td class="memname"><a class="el" href="classqglviewer_1_1Frame.html">Frame</a> <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a2437eecf340817ad1a3f86c822b111e8">keyFrame</a> </td>
 
736
          <td class="memname"><a class="el" href="classqglviewer_1_1Frame.html">Frame</a> keyFrame </td>
662
737
          <td>(</td>
663
738
          <td class="paramtype">int&#160;</td>
664
739
          <td class="paramname"><em>index</em></td><td>)</td>
665
740
          <td> const</td>
666
741
        </tr>
667
742
      </table>
668
 
</div>
669
 
<div class="memdoc">
 
743
</div><div class="memdoc">
670
744
<p>Returns the <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> associated with the keyFrame at index <code>index</code>.</p>
671
745
<p>See also <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a976ec792d48ccd7e53b55bb91b49d473">keyFrameTime()</a>. <code>index</code> has to be in the range 0..<a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#aba3744250d9cd01ec848f81151a62273">numberOfKeyFrames()</a>-1.</p>
672
 
<dl class="note"><dt><b>Note:</b></dt><dd>If this keyFrame was defined using a pointer to a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> (see addKeyFrame(const Frame* const)), the <em>current</em> pointed <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> state is returned. </dd></dl>
 
746
<dl class="section note"><dt>Note:</dt><dd>If this keyFrame was defined using a pointer to a <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> (see addKeyFrame(const Frame* const)), the <em>current</em> pointed <a class="el" href="classqglviewer_1_1Frame.html" title="The Frame class represents a coordinate system, defined by a position and an orientation.">Frame</a> state is returned. </dd></dl>
673
747
 
674
748
</div>
675
749
</div>
676
 
<a class="anchor" id="a976ec792d48ccd7e53b55bb91b49d473"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::keyFrameTime" ref="a976ec792d48ccd7e53b55bb91b49d473" args="(int index) const " -->
 
750
<a class="anchor" id="a976ec792d48ccd7e53b55bb91b49d473"></a>
677
751
<div class="memitem">
678
752
<div class="memproto">
679
753
      <table class="memname">
680
754
        <tr>
681
 
          <td class="memname">float <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a976ec792d48ccd7e53b55bb91b49d473">keyFrameTime</a> </td>
 
755
          <td class="memname">float keyFrameTime </td>
682
756
          <td>(</td>
683
757
          <td class="paramtype">int&#160;</td>
684
758
          <td class="paramname"><em>index</em></td><td>)</td>
685
759
          <td> const</td>
686
760
        </tr>
687
761
      </table>
688
 
</div>
689
 
<div class="memdoc">
 
762
</div><div class="memdoc">
690
763
<p>Returns the time corresponding to the <code>index</code> keyFrame.</p>
691
764
<p>See also <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a2437eecf340817ad1a3f86c822b111e8">keyFrame()</a>. <code>index</code> has to be in the range 0..<a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#aba3744250d9cd01ec848f81151a62273">numberOfKeyFrames()</a>-1. </p>
692
765
 
693
766
</div>
694
767
</div>
695
 
<a class="anchor" id="a3e953e6c813baa461389c132c9509e30"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::lastTime" ref="a3e953e6c813baa461389c132c9509e30" args="() const " -->
 
768
<a class="anchor" id="a3e953e6c813baa461389c132c9509e30"></a>
696
769
<div class="memitem">
697
770
<div class="memproto">
698
771
      <table class="memname">
699
772
        <tr>
700
 
          <td class="memname">float <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3e953e6c813baa461389c132c9509e30">lastTime</a> </td>
 
773
          <td class="memname">float lastTime </td>
701
774
          <td>(</td>
702
775
          <td class="paramname"></td><td>)</td>
703
776
          <td> const</td>
704
777
        </tr>
705
778
      </table>
706
 
</div>
707
 
<div class="memdoc">
 
779
</div><div class="memdoc">
708
780
<p>Returns the time corresponding to the last keyFrame, expressed in seconds.</p>
709
781
<p>Returns 0.0 if the path is empty. See also <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5335f8bedcb11c4e9cc06cbbab838477">firstTime()</a>, <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a80c858ec25677a47d066e0900f4e1980">duration()</a> and <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a976ec792d48ccd7e53b55bb91b49d473">keyFrameTime()</a>. </p>
710
782
 
711
783
</div>
712
784
</div>
713
 
<a class="anchor" id="a906c17cf6c1d51a54c7d3b9b4c9cbd45"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::loopInterpolation" ref="a906c17cf6c1d51a54c7d3b9b4c9cbd45" args="() const " -->
 
785
<a class="anchor" id="a906c17cf6c1d51a54c7d3b9b4c9cbd45"></a>
714
786
<div class="memitem">
715
787
<div class="memproto">
716
788
      <table class="memname">
717
789
        <tr>
718
 
          <td class="memname">bool <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a906c17cf6c1d51a54c7d3b9b4c9cbd45">loopInterpolation</a> </td>
 
790
          <td class="memname">bool loopInterpolation </td>
719
791
          <td>(</td>
720
792
          <td class="paramname"></td><td>)</td>
721
793
          <td> const</td>
722
794
        </tr>
723
795
      </table>
724
 
</div>
725
 
<div class="memdoc">
 
796
</div><div class="memdoc">
726
797
<p>Returns <code>true</code> when the interpolation is played in an infinite loop.</p>
727
798
<p>When <code>false</code> (default), the interpolation stops when <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime()</a> reaches <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5335f8bedcb11c4e9cc06cbbab838477">firstTime()</a> (with negative <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a7e468c84c27d896e341563c83e102aad">interpolationSpeed()</a>) or <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3e953e6c813baa461389c132c9509e30">lastTime()</a>.</p>
728
799
<p><a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime()</a> is otherwise reset to <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5335f8bedcb11c4e9cc06cbbab838477">firstTime()</a> (+ <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime()</a> - <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3e953e6c813baa461389c132c9509e30">lastTime()</a>) (and inversely for negative <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a7e468c84c27d896e341563c83e102aad">interpolationSpeed()</a>) and interpolation continues.</p>
730
801
 
731
802
</div>
732
803
</div>
733
 
<a class="anchor" id="aba3744250d9cd01ec848f81151a62273"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::numberOfKeyFrames" ref="aba3744250d9cd01ec848f81151a62273" args="() const " -->
 
804
<a class="anchor" id="aba3744250d9cd01ec848f81151a62273"></a>
734
805
<div class="memitem">
735
806
<div class="memproto">
736
807
      <table class="memname">
737
808
        <tr>
738
 
          <td class="memname">int <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#aba3744250d9cd01ec848f81151a62273">numberOfKeyFrames</a> </td>
 
809
          <td class="memname">int numberOfKeyFrames </td>
739
810
          <td>(</td>
740
811
          <td class="paramname"></td><td>)</td>
741
812
          <td> const</td>
742
813
        </tr>
743
814
      </table>
744
 
</div>
745
 
<div class="memdoc">
 
815
</div><div class="memdoc">
746
816
<p>Returns the number of keyFrames used by the interpolation. Use <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a44ac54529e675a2157067c9d205d9622">addKeyFrame()</a> to add new keyFrames. </p>
747
817
 
748
818
</div>
749
819
</div>
750
 
<a class="anchor" id="a0bfc602dc2fcaca40cc49195bba7ba74"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::resetInterpolation" ref="a0bfc602dc2fcaca40cc49195bba7ba74" args="()" -->
 
820
<a class="anchor" id="a0bfc602dc2fcaca40cc49195bba7ba74"></a>
751
821
<div class="memitem">
752
822
<div class="memproto">
 
823
<table class="mlabels">
 
824
  <tr>
 
825
  <td class="mlabels-left">
753
826
      <table class="memname">
754
827
        <tr>
755
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a0bfc602dc2fcaca40cc49195bba7ba74">resetInterpolation</a> </td>
 
828
          <td class="memname">void resetInterpolation </td>
756
829
          <td>(</td>
757
830
          <td class="paramname"></td><td>)</td>
758
 
          <td><code> [slot]</code></td>
 
831
          <td></td>
759
832
        </tr>
760
833
      </table>
761
 
</div>
762
 
<div class="memdoc">
 
834
  </td>
 
835
  <td class="mlabels-right">
 
836
<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
 
837
  </tr>
 
838
</table>
 
839
</div><div class="memdoc">
763
840
<p>Stops the interpolation and resets <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime()</a> to the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5335f8bedcb11c4e9cc06cbbab838477">firstTime()</a>.</p>
764
841
<p>If desired, call <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ad5393783e1768b6d688a8c49ddea56ae">interpolateAtTime()</a> after this method to actually move the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> to <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5335f8bedcb11c4e9cc06cbbab838477">firstTime()</a>. </p>
765
842
 
766
843
</div>
767
844
</div>
768
 
<a class="anchor" id="a1e16bb31ee6240a9f0e3a6824f4bef0d"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::setFrame" ref="a1e16bb31ee6240a9f0e3a6824f4bef0d" args="(Frame *const frame)" -->
 
845
<a class="anchor" id="a1e16bb31ee6240a9f0e3a6824f4bef0d"></a>
769
846
<div class="memitem">
770
847
<div class="memproto">
 
848
<table class="mlabels">
 
849
  <tr>
 
850
  <td class="mlabels-left">
771
851
      <table class="memname">
772
852
        <tr>
773
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a1e16bb31ee6240a9f0e3a6824f4bef0d">setFrame</a> </td>
 
853
          <td class="memname">void setFrame </td>
774
854
          <td>(</td>
775
855
          <td class="paramtype"><a class="el" href="classqglviewer_1_1Frame.html">Frame</a> *const&#160;</td>
776
856
          <td class="paramname"><em>frame</em></td><td>)</td>
777
 
          <td><code> [slot]</code></td>
 
857
          <td></td>
778
858
        </tr>
779
859
      </table>
780
 
</div>
781
 
<div class="memdoc">
 
860
  </td>
 
861
  <td class="mlabels-right">
 
862
<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
 
863
  </tr>
 
864
</table>
 
865
</div><div class="memdoc">
782
866
<p>Sets the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> associated to the KeyFrameInterpolator. </p>
783
867
 
784
868
</div>
785
869
</div>
786
 
<a class="anchor" id="a9763e647346a8bee885517d9985173fd"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::setInterpolationPeriod" ref="a9763e647346a8bee885517d9985173fd" args="(int period)" -->
 
870
<a class="anchor" id="a9763e647346a8bee885517d9985173fd"></a>
787
871
<div class="memitem">
788
872
<div class="memproto">
 
873
<table class="mlabels">
 
874
  <tr>
 
875
  <td class="mlabels-left">
789
876
      <table class="memname">
790
877
        <tr>
791
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a9763e647346a8bee885517d9985173fd">setInterpolationPeriod</a> </td>
 
878
          <td class="memname">void setInterpolationPeriod </td>
792
879
          <td>(</td>
793
880
          <td class="paramtype">int&#160;</td>
794
881
          <td class="paramname"><em>period</em></td><td>)</td>
795
 
          <td><code> [slot]</code></td>
 
882
          <td></td>
796
883
        </tr>
797
884
      </table>
798
 
</div>
799
 
<div class="memdoc">
 
885
  </td>
 
886
  <td class="mlabels-right">
 
887
<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
 
888
  </tr>
 
889
</table>
 
890
</div><div class="memdoc">
800
891
<p>Sets the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a21bf6165ea3a6be2fd854e9be5105b1e">interpolationPeriod()</a>. </p>
801
892
 
802
893
</div>
803
894
</div>
804
 
<a class="anchor" id="a3cc64e95e1b8dfda110bcf3d033ecf2d"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::setInterpolationSpeed" ref="a3cc64e95e1b8dfda110bcf3d033ecf2d" args="(float speed)" -->
 
895
<a class="anchor" id="a3cc64e95e1b8dfda110bcf3d033ecf2d"></a>
805
896
<div class="memitem">
806
897
<div class="memproto">
 
898
<table class="mlabels">
 
899
  <tr>
 
900
  <td class="mlabels-left">
807
901
      <table class="memname">
808
902
        <tr>
809
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3cc64e95e1b8dfda110bcf3d033ecf2d">setInterpolationSpeed</a> </td>
 
903
          <td class="memname">void setInterpolationSpeed </td>
810
904
          <td>(</td>
811
905
          <td class="paramtype">float&#160;</td>
812
906
          <td class="paramname"><em>speed</em></td><td>)</td>
813
 
          <td><code> [slot]</code></td>
 
907
          <td></td>
814
908
        </tr>
815
909
      </table>
816
 
</div>
817
 
<div class="memdoc">
 
910
  </td>
 
911
  <td class="mlabels-right">
 
912
<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
 
913
  </tr>
 
914
</table>
 
915
</div><div class="memdoc">
818
916
<p>Sets the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a7e468c84c27d896e341563c83e102aad">interpolationSpeed()</a>. Negative or null values are allowed. </p>
819
917
 
820
918
</div>
821
919
</div>
822
 
<a class="anchor" id="ab860af88ea46ecedb2a648157bb68dc3"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::setInterpolationTime" ref="ab860af88ea46ecedb2a648157bb68dc3" args="(float time)" -->
 
920
<a class="anchor" id="ab860af88ea46ecedb2a648157bb68dc3"></a>
823
921
<div class="memitem">
824
922
<div class="memproto">
 
923
<table class="mlabels">
 
924
  <tr>
 
925
  <td class="mlabels-left">
825
926
      <table class="memname">
826
927
        <tr>
827
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab860af88ea46ecedb2a648157bb68dc3">setInterpolationTime</a> </td>
 
928
          <td class="memname">void setInterpolationTime </td>
828
929
          <td>(</td>
829
930
          <td class="paramtype">float&#160;</td>
830
931
          <td class="paramname"><em>time</em></td><td>)</td>
831
 
          <td><code> [slot]</code></td>
 
932
          <td></td>
832
933
        </tr>
833
934
      </table>
834
 
</div>
835
 
<div class="memdoc">
 
935
  </td>
 
936
  <td class="mlabels-right">
 
937
<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
 
938
  </tr>
 
939
</table>
 
940
</div><div class="memdoc">
836
941
<p>Sets the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime()</a>.</p>
837
 
<dl class="attention"><dt><b>Attention:</b></dt><dd>The <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> state is not affected by this method. Use this function to define the starting time of a future interpolation (see <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3c0098b2307d04e904c1f64f505e5819">startInterpolation()</a>). Use <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ad5393783e1768b6d688a8c49ddea56ae">interpolateAtTime()</a> to actually interpolate at a given time. </dd></dl>
 
942
<dl class="section attention"><dt>Attention:</dt><dd>The <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a> state is not affected by this method. Use this function to define the starting time of a future interpolation (see <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3c0098b2307d04e904c1f64f505e5819">startInterpolation()</a>). Use <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ad5393783e1768b6d688a8c49ddea56ae">interpolateAtTime()</a> to actually interpolate at a given time. </dd></dl>
838
943
 
839
944
</div>
840
945
</div>
841
 
<a class="anchor" id="a31a491ac2ac016298cbd1c66f07be6dd"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::setLoopInterpolation" ref="a31a491ac2ac016298cbd1c66f07be6dd" args="(bool loop=true)" -->
 
946
<a class="anchor" id="a31a491ac2ac016298cbd1c66f07be6dd"></a>
842
947
<div class="memitem">
843
948
<div class="memproto">
 
949
<table class="mlabels">
 
950
  <tr>
 
951
  <td class="mlabels-left">
844
952
      <table class="memname">
845
953
        <tr>
846
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a31a491ac2ac016298cbd1c66f07be6dd">setLoopInterpolation</a> </td>
 
954
          <td class="memname">void setLoopInterpolation </td>
847
955
          <td>(</td>
848
956
          <td class="paramtype">bool&#160;</td>
849
957
          <td class="paramname"><em>loop</em> = <code>true</code></td><td>)</td>
850
 
          <td><code> [slot]</code></td>
 
958
          <td></td>
851
959
        </tr>
852
960
      </table>
853
 
</div>
854
 
<div class="memdoc">
 
961
  </td>
 
962
  <td class="mlabels-right">
 
963
<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
 
964
  </tr>
 
965
</table>
 
966
</div><div class="memdoc">
855
967
<p>Sets the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a906c17cf6c1d51a54c7d3b9b4c9cbd45">loopInterpolation()</a> value. </p>
856
968
 
857
969
</div>
858
970
</div>
859
 
<a class="anchor" id="a3c0098b2307d04e904c1f64f505e5819"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::startInterpolation" ref="a3c0098b2307d04e904c1f64f505e5819" args="(int period=&#45;1)" -->
 
971
<a class="anchor" id="a3c0098b2307d04e904c1f64f505e5819"></a>
860
972
<div class="memitem">
861
973
<div class="memproto">
 
974
<table class="mlabels">
 
975
  <tr>
 
976
  <td class="mlabels-left">
862
977
      <table class="memname">
863
978
        <tr>
864
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3c0098b2307d04e904c1f64f505e5819">startInterpolation</a> </td>
 
979
          <td class="memname">void startInterpolation </td>
865
980
          <td>(</td>
866
981
          <td class="paramtype">int&#160;</td>
867
982
          <td class="paramname"><em>period</em> = <code>-1</code></td><td>)</td>
868
 
          <td><code> [slot]</code></td>
 
983
          <td></td>
869
984
        </tr>
870
985
      </table>
871
 
</div>
872
 
<div class="memdoc">
 
986
  </td>
 
987
  <td class="mlabels-right">
 
988
<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
 
989
  </tr>
 
990
</table>
 
991
</div><div class="memdoc">
873
992
<p>Starts the interpolation process.</p>
874
993
<p>A timer is started with an <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a21bf6165ea3a6be2fd854e9be5105b1e">interpolationPeriod()</a> period that updates the <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a5426b68b2b1bb6ad8dc0007914412b4f">frame()</a>'s position and orientation. <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a8cc0fa56ba7b6da71226cc191cc18e70">interpolationIsStarted()</a> will return <code>true</code> until <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a16f0910299ae07cede3396a14ec01f4b">stopInterpolation()</a> or <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#acf744bd8ce09e5433f829f63ba310eef">toggleInterpolation()</a> is called.</p>
875
994
<p>If <code>period</code> is positive, it is set as the new <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a21bf6165ea3a6be2fd854e9be5105b1e">interpolationPeriod()</a>. The previous <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a21bf6165ea3a6be2fd854e9be5105b1e">interpolationPeriod()</a> is used otherwise (default).</p>
877
996
<p>Use <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#ab860af88ea46ecedb2a648157bb68dc3">setInterpolationTime()</a> before calling this method to change the starting <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a58326b7948e78c1d2861ca659492207a">interpolationTime()</a>.</p>
878
997
<p>See the <a href="../examples/keyFrames.html">keyFrames example</a> for an illustration.</p>
879
998
<p>You may also be interested in <a class="el" href="classQGLViewer.html#a64465ac69c7fe9f4f8519a57501c76c2">QGLViewer::animate()</a> and <a class="el" href="classQGLViewer.html#ad5344a5f702678f309fafa0c699b2cf3">QGLViewer::startAnimation()</a>.</p>
880
 
<dl class="attention"><dt><b>Attention:</b></dt><dd>The keyFrames must be defined (see <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a44ac54529e675a2157067c9d205d9622">addKeyFrame()</a>) <em>before</em> you <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3c0098b2307d04e904c1f64f505e5819">startInterpolation()</a>, or else the interpolation will naturally immediately stop. </dd></dl>
 
999
<dl class="section attention"><dt>Attention:</dt><dd>The keyFrames must be defined (see <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a44ac54529e675a2157067c9d205d9622">addKeyFrame()</a>) <em>before</em> you <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3c0098b2307d04e904c1f64f505e5819">startInterpolation()</a>, or else the interpolation will naturally immediately stop. </dd></dl>
881
1000
 
882
1001
</div>
883
1002
</div>
884
 
<a class="anchor" id="a16f0910299ae07cede3396a14ec01f4b"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::stopInterpolation" ref="a16f0910299ae07cede3396a14ec01f4b" args="()" -->
 
1003
<a class="anchor" id="a16f0910299ae07cede3396a14ec01f4b"></a>
885
1004
<div class="memitem">
886
1005
<div class="memproto">
 
1006
<table class="mlabels">
 
1007
  <tr>
 
1008
  <td class="mlabels-left">
887
1009
      <table class="memname">
888
1010
        <tr>
889
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a16f0910299ae07cede3396a14ec01f4b">stopInterpolation</a> </td>
 
1011
          <td class="memname">void stopInterpolation </td>
890
1012
          <td>(</td>
891
1013
          <td class="paramname"></td><td>)</td>
892
 
          <td><code> [slot]</code></td>
 
1014
          <td></td>
893
1015
        </tr>
894
1016
      </table>
895
 
</div>
896
 
<div class="memdoc">
 
1017
  </td>
 
1018
  <td class="mlabels-right">
 
1019
<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
 
1020
  </tr>
 
1021
</table>
 
1022
</div><div class="memdoc">
897
1023
<p>Stops an interpolation started with <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3c0098b2307d04e904c1f64f505e5819">startInterpolation()</a>. See <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a8cc0fa56ba7b6da71226cc191cc18e70">interpolationIsStarted()</a> and <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#acf744bd8ce09e5433f829f63ba310eef">toggleInterpolation()</a>. </p>
898
1024
 
899
1025
</div>
900
1026
</div>
901
 
<a class="anchor" id="acf744bd8ce09e5433f829f63ba310eef"></a><!-- doxytag: member="qglviewer::KeyFrameInterpolator::toggleInterpolation" ref="acf744bd8ce09e5433f829f63ba310eef" args="()" -->
 
1027
<a class="anchor" id="acf744bd8ce09e5433f829f63ba310eef"></a>
902
1028
<div class="memitem">
903
1029
<div class="memproto">
 
1030
<table class="mlabels">
 
1031
  <tr>
 
1032
  <td class="mlabels-left">
904
1033
      <table class="memname">
905
1034
        <tr>
906
 
          <td class="memname">void <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#acf744bd8ce09e5433f829f63ba310eef">toggleInterpolation</a> </td>
 
1035
          <td class="memname">void toggleInterpolation </td>
907
1036
          <td>(</td>
908
1037
          <td class="paramname"></td><td>)</td>
909
 
          <td><code> [slot]</code></td>
 
1038
          <td></td>
910
1039
        </tr>
911
1040
      </table>
912
 
</div>
913
 
<div class="memdoc">
 
1041
  </td>
 
1042
  <td class="mlabels-right">
 
1043
<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
 
1044
  </tr>
 
1045
</table>
 
1046
</div><div class="memdoc">
914
1047
<p>Calls <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a3c0098b2307d04e904c1f64f505e5819">startInterpolation()</a> or <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a16f0910299ae07cede3396a14ec01f4b">stopInterpolation()</a>, depending on <a class="el" href="classqglviewer_1_1KeyFrameInterpolator.html#a8cc0fa56ba7b6da71226cc191cc18e70">interpolationIsStarted()</a>. </p>
915
1048
 
916
1049
</div>
917
1050
</div>
918
1051
</div><!-- contents -->
919
 
<!-- window showing the filter options -->
920
 
<div id="MSearchSelectWindow"
921
 
     onmouseover="return searchBox.OnSearchSelectShow()"
922
 
     onmouseout="return searchBox.OnSearchSelectHide()"
923
 
     onkeydown="return searchBox.OnSearchSelectKey(event)">
924
 
<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>
925
 
 
926
 
<!-- iframe showing the search results (closed by default) -->
927
 
<div id="MSearchResultsWindow">
928
 
<iframe src="javascript:void(0)" frameborder="0" 
929
 
        name="MSearchResults" id="MSearchResults">
930
 
</iframe>
931
 
</div>
932
 
 
933
 
 
934
 
 
 
1052
<!-- start footer part -->
935
1053
<hr class="footer"/><address class="footer"><small>
936
 
Generated on Thu Mar 8 2012 09:02:52 for libQGLViewer by &#160;<a href="http://www.doxygen.org/index.html">
 
1054
Generated on Wed Jun 6 2012 14:24:36 for libQGLViewer by &#160;<a href="http://www.doxygen.org/index.html">
937
1055
doxygen
938
 
</a> 1.7.6.1
 
1056
</a> 1.8.1
939
1057
</small></address>
940
 
 
941
1058
</body>
942
1059
</html>