diff options
Diffstat (limited to '')
-rw-r--r-- | docs/doxygen/nel/a03471.html | 457 |
1 files changed, 457 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a03471.html b/docs/doxygen/nel/a03471.html new file mode 100644 index 00000000..cbe6977a --- /dev/null +++ b/docs/doxygen/nel/a03471.html @@ -0,0 +1,457 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>NeL: TemplateCTCBTools< CKeyT, T, TMapTimeCKey > class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.6 --> +<div class="qindex"> <form class="search" action="search.php" method="get"> +<a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related Pages</a> | <span class="search"><u>S</u>earch for <input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div> +<h1>CTCBTools< CKeyT, T, TMapTimeCKey > Class Template Reference</h1><code>#include <<a class="el" href="a06566.html">track_tcb.h</a>></code> +<p> +<p>Inheritance diagram for CTCBTools< CKeyT, T, TMapTimeCKey >: +<p><center><img src="a03471.png" usemap="#CTCBTools< CKeyT, T, TMapTimeCKey >_map" border="0" alt=""></center> +<map name="CTCBTools< CKeyT, T, TMapTimeCKey >_map"> +<area href="a03581.html" alt="CTrackKeyFramerTCB< CKeyT, T >" shape="rect" coords="0,56,374,80"> +<area href="a03583.html" alt="CTrackKeyFramerTCB< CKeyTCBQuat, NLMISC::CAngleAxis >" shape="rect" coords="384,56,758,80"> +</map> +<hr><a name="_details"></a><h2>Detailed Description</h2> +<h3>template<class CKeyT, class T, class TMapTimeCKey><br> + class CTCBTools< CKeyT, T, TMapTimeCKey ></h3> + +TCB Track tools (for both normal TCB, and quat TCB). internal use.<p> +<dl compact><dt><b>Author:</b></dt><dd>Cyril 'Hulud' Corvazier <p> +Nevrax France </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>2001 </dd></dl> + +<p> + +<p> +Definition at line <a class="el" href="a06566.html#l00048">48</a> of file <a class="el" href="a06566.html">track_tcb.h</a>.<table border=0 cellpadding=0 cellspacing=0> +<tr><td></td></tr> +<tr><td colspan=2><br><h2>Protected Types</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>typedef TMapTimeCKey::iterator </td><td class="memItemRight" valign=bottom><a class="el" href="a03471.html#CTrackKeyFramerTCB_3_01CKeyTCBQuat_00_01NLMISC_1_1CAngleAxis_01_4y0">TMapTimeCKeyIterator</a></td></tr> + +<tr><td colspan=2><br><h2>Protected Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03471.html#CTrackKeyFramerTCB_3_01CKeyTCBQuat_00_01NLMISC_1_1CAngleAxis_01_4d0">compileTCBEase</a> (TMapTimeCKey &mapKey, bool loopMode)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">compute TCB ease information. <a href="#CTrackKeyFramerTCB_3_01CKeyTCBQuat_00_01NLMISC_1_1CAngleAxis_01_4d0"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03471.html#CTrackKeyFramerTCB_3_01CKeyTCBQuat_00_01NLMISC_1_1CAngleAxis_01_4d1">computeHermiteBasis</a> (float d, float hb[4])</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03471.html#CTrackKeyFramerTCB_3_01CKeyTCBQuat_00_01NLMISC_1_1CAngleAxis_01_4d2">computeTCBFactors</a> (const CKeyT &key, float timeBefore, float time, float timeAfter, float rangeDelta, bool firstKey, bool endKey, bool isLoop, float &ksm, float &ksp, float &kdm, float &kdp)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>float </td><td class="memItemRight" valign=bottom><a class="el" href="a03471.html#CTrackKeyFramerTCB_3_01CKeyTCBQuat_00_01NLMISC_1_1CAngleAxis_01_4d4">ease</a> (const CKeyT *key, float d)</td></tr> + +</table> +<hr><h2>Member Typedef Documentation</h2> +<a class="anchor" name="CTrackKeyFramerTCB_3_01CKeyTCBQuat_00_01NLMISC_1_1CAngleAxis_01_4y0" doxytag="CTCBTools::TMapTimeCKeyIterator" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class CKeyT, class T, class TMapTimeCKey> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> typedef TMapTimeCKey::iterator <a class="el" href="a03471.html">CTCBTools</a>< CKeyT, T, TMapTimeCKey >::<a class="el" href="a03471.html#CTrackKeyFramerTCB_3_01CKeyTCBQuat_00_01NLMISC_1_1CAngleAxis_01_4y0">TMapTimeCKeyIterator</a><code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06566.html#l00051">51</a> of file <a class="el" href="a06566.html">track_tcb.h</a>. </td> + </tr> +</table> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="CTrackKeyFramerTCB_3_01CKeyTCBQuat_00_01NLMISC_1_1CAngleAxis_01_4d0" doxytag="CTCBTools::compileTCBEase" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class CKeyT, class T, class TMapTimeCKey> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> void <a class="el" href="a03471.html">CTCBTools</a>< CKeyT, T, TMapTimeCKey >::compileTCBEase </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">TMapTimeCKey & </td> + <td class="mdname" nowrap> <em>mapKey</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>bool </td> + <td class="mdname" nowrap> <em>loopMode</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [inline, protected]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +compute TCB ease information. +<p> + +<p> +Definition at line <a class="el" href="a06566.html#l00056">56</a> of file <a class="el" href="a06566.html">track_tcb.h</a>. +<p> +Referenced by <a class="el" href="a06566.html#l00430">CTrackKeyFramerTCB< CKeyTCBQuat, NLMISC::CAngleAxis >::compile()</a>, and <a class="el" href="a06566.html#l00253">CTrackKeyFramerTCB< CKeyT, T >::compile()</a>. +<p> +<div class="fragment"><pre>00057 { +00058 <a class="code" href="a03471.html#CTrackKeyFramerTCB_3_01CKeyTCBQuat_00_01NLMISC_1_1CAngleAxis_01_4y0">TMapTimeCKeyIterator</a> it= mapKey.begin(); +00059 <span class="keywordflow">for</span>(;it!=mapKey.end();it++) +00060 { +00061 <a class="code" href="a03471.html#CTrackKeyFramerTCB_3_01CKeyTCBQuat_00_01NLMISC_1_1CAngleAxis_01_4y0">TMapTimeCKeyIterator</a> next= it; +00062 next++; +00063 +00064 <span class="comment">// loop mgt. must compute ease from last to first (usefull if _RangeLock is false).</span> +00065 <span class="keywordflow">if</span>(next==mapKey.end() && loopMode && mapKey.size()>1) +00066 next= mapKey.begin(); +00067 +00068 <span class="comment">// Ease Precompute.</span> +00069 <span class="comment">//=================</span> +00070 CKeyT &key= it->second; +00071 <span class="keywordflow">if</span>(next!=mapKey.end()) +00072 { +00073 <span class="keywordtype">float</span> e0= it->second.EaseFrom; +00074 <span class="keywordtype">float</span> e1= next->second.EaseTo; +00075 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a626">s</a> = e0 + e1; +00076 +00077 <span class="comment">// "normalize".</span> +00078 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a626">s</a> > 1.0f) +00079 { +00080 e0 = e0/<a class="code" href="a04223.html#a626">s</a>; +00081 e1 = e1/<a class="code" href="a04223.html#a626">s</a>; +00082 } +00083 +00084 <span class="comment">// precalc ease factors.</span> +00085 key.Ease0= e0; +00086 key.Ease1= e1; +00087 key.EaseK= 1/(2.0f - e0 - e1); +00088 <span class="keywordflow">if</span>(e0) +00089 key.EaseKOverEase0= key.EaseK / e0; +00090 <span class="keywordflow">if</span>(e1) +00091 key.EaseKOverEase1= key.EaseK / e1; +00092 } +00093 <span class="keywordflow">else</span> +00094 { +00095 <span class="comment">// force ease() to just return d (see ease()).</span> +00096 key.EaseK = 0.5f; +00097 } +00098 +00099 } +00100 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="CTrackKeyFramerTCB_3_01CKeyTCBQuat_00_01NLMISC_1_1CAngleAxis_01_4d1" doxytag="CTCBTools::computeHermiteBasis" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class CKeyT, class T, class TMapTimeCKey> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> void <a class="el" href="a03471.html">CTCBTools</a>< CKeyT, T, TMapTimeCKey >::computeHermiteBasis </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">float </td> + <td class="mdname" nowrap> <em>d</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float </td> + <td class="mdname" nowrap> <em>hb</em>[4]</td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [inline, protected]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06566.html#l00121">121</a> of file <a class="el" href="a06566.html">track_tcb.h</a>. +<p> +Referenced by <a class="el" href="a06566.html#l00223">CTrackKeyFramerTCB< CKeyT, T >::evalKey()</a>. +<p> +<div class="fragment"><pre>00122 { +00123 <span class="keywordtype">float</span> d2,d3,a; +00124 +00125 d2 = d*d; +00126 d3 = d2*d; +00127 a = 3.0f*d2 - 2.0f*d3; +00128 hb[0] = 1.0f - a; +00129 hb[1] = a; +00130 hb[2] = d3 - 2.0f*d2 + d; +00131 hb[3] = d3 - d2; +00132 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="CTrackKeyFramerTCB_3_01CKeyTCBQuat_00_01NLMISC_1_1CAngleAxis_01_4d2" doxytag="CTCBTools::computeTCBFactors" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class CKeyT, class T, class TMapTimeCKey> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> void <a class="el" href="a03471.html">CTCBTools</a>< CKeyT, T, TMapTimeCKey >::computeTCBFactors </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const CKeyT & </td> + <td class="mdname" nowrap> <em>key</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float </td> + <td class="mdname" nowrap> <em>timeBefore</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float </td> + <td class="mdname" nowrap> <em>time</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float </td> + <td class="mdname" nowrap> <em>timeAfter</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float </td> + <td class="mdname" nowrap> <em>rangeDelta</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>bool </td> + <td class="mdname" nowrap> <em>firstKey</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>bool </td> + <td class="mdname" nowrap> <em>endKey</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>bool </td> + <td class="mdname" nowrap> <em>isLoop</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float & </td> + <td class="mdname" nowrap> <em>ksm</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float & </td> + <td class="mdname" nowrap> <em>ksp</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float & </td> + <td class="mdname" nowrap> <em>kdm</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float & </td> + <td class="mdname" nowrap> <em>kdp</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [inline, protected]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06566.html#l00136">136</a> of file <a class="el" href="a06566.html">track_tcb.h</a>. +<p> +Referenced by <a class="el" href="a06566.html#l00520">CTrackKeyFramerTCB< CKeyTCBQuat, NLMISC::CAngleAxis >::computeTCBKey()</a>, and <a class="el" href="a06566.html#l00326">CTrackKeyFramerTCB< CKeyT, T >::computeTCBKey()</a>. +<p> +<div class="fragment"><pre>00138 { +00139 <span class="keywordtype">float</span> fp,fn; +00140 +00141 <span class="keywordflow">if</span>(isLoop || (!firstKey && !endKey)) +00142 { +00143 <span class="keywordtype">float</span> dtm; +00144 <span class="comment">// Compute Time deltas.</span> +00145 <span class="keywordflow">if</span> (firstKey) +00146 { +00147 dtm = 0.5f * (rangeDelta + timeAfter - time); +00148 fp = rangeDelta / dtm; +00149 fn = (timeAfter - time) / dtm; +00150 } +00151 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (endKey) +00152 { +00153 dtm = 0.5f * (rangeDelta + time - timeBefore); +00154 fp = rangeDelta / dtm; +00155 fn = (time - timeBefore) / dtm; +00156 } +00157 <span class="keywordflow">else</span> +00158 { +00159 dtm = 0.5f * (timeAfter - timeBefore); +00160 fp = (time - timeBefore) / dtm; +00161 fn = (timeAfter - time) / dtm; +00162 } +00163 <span class="keywordtype">float</span> c= (<span class="keywordtype">float</span>)fabs( key.Continuity ); +00164 fp = fp + c - c * fp; +00165 fn = fn + c - c * fn; +00166 } +00167 <span class="keywordflow">else</span> +00168 { +00169 <span class="comment">// firstkey and lastkey of not loop track.</span> +00170 fp = 1.0f; +00171 fn = 1.0f; +00172 } +00173 +00174 <span class="comment">// Compute tangents factors.</span> +00175 <span class="keywordtype">float</span> tm,cm,cp,bm,bp,tmcm,tmcp; +00176 +00177 cm = 1.0f - key.Continuity; +00178 tm = 0.5f * ( 1.0f - key.Tension ); +00179 cp = 2.0f - cm; +00180 bm = 1.0f - key.Bias; +00181 bp = 2.0f - bm; +00182 tmcm = tm*cm; tmcp = tm*cp; +00183 +00184 <span class="comment">// tgts factors.</span> +00185 ksm = tmcm*bp*fp; ksp = tmcp*bm*fp; +00186 kdm = tmcp*bp*fn; kdp = tmcm*bm*fn; +00187 +00188 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="CTrackKeyFramerTCB_3_01CKeyTCBQuat_00_01NLMISC_1_1CAngleAxis_01_4d4" doxytag="CTCBTools::ease" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class CKeyT, class T, class TMapTimeCKey> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> float <a class="el" href="a03471.html">CTCBTools</a>< CKeyT, T, TMapTimeCKey >::ease </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const CKeyT * </td> + <td class="mdname" nowrap> <em>key</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float </td> + <td class="mdname" nowrap> <em>d</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [inline, protected]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06566.html#l00103">103</a> of file <a class="el" href="a06566.html">track_tcb.h</a>. +<p> +Referenced by <a class="el" href="a06566.html#l00401">CTrackKeyFramerTCB< CKeyTCBQuat, NLMISC::CAngleAxis >::evalKey()</a>, and <a class="el" href="a06566.html#l00223">CTrackKeyFramerTCB< CKeyT, T >::evalKey()</a>. +<p> +<div class="fragment"><pre>00104 { +00105 <span class="keywordflow">if</span> (d==0.0f || d==1.0f) <span class="keywordflow">return</span> d; +00106 <span class="comment">// k==0.5f <=> e0+e1 == 0.</span> +00107 <span class="keywordflow">if</span> (key->EaseK == 0.5f) <span class="keywordflow">return</span> d; +00108 +00109 <span class="keywordflow">if</span> (d < key->Ease0) +00110 <span class="keywordflow">return</span> key->EaseKOverEase0 * d*d; +00111 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d < 1.0f - key->Ease1) +00112 <span class="keywordflow">return</span> key->EaseK * (2.0f*d - key->Ease0); +00113 <span class="keywordflow">else</span> +00114 { +00115 d = 1.0f - d; +00116 <span class="keywordflow">return</span> 1.0f - key->EaseKOverEase1 * d*d; +00117 } +00118 } +</pre></div> </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="a06566.html">track_tcb.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 06:43:53 2004 for NeL by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border=0 > +</a>1.3.6 </small></address> +</body> +</html> |