aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a03249.html
diff options
context:
space:
mode:
authorneodarz <neodarz@neodarz.net>2018-08-11 20:21:34 +0200
committerneodarz <neodarz@neodarz.net>2018-08-11 20:21:34 +0200
commit0ea5fc66924303d1bf73ba283a383e2aadee02f2 (patch)
tree2568e71a7ccc44ec23b8bb3f0ff97fb6bf2ed709 /docs/doxygen/nel/a03249.html
downloadnevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.tar.xz
nevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.zip
Initial commit
Diffstat (limited to 'docs/doxygen/nel/a03249.html')
-rw-r--r--docs/doxygen/nel/a03249.html1781
1 files changed, 1781 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a03249.html b/docs/doxygen/nel/a03249.html
new file mode 100644
index 00000000..32951614
--- /dev/null
+++ b/docs/doxygen/nel/a03249.html
@@ -0,0 +1,1781 @@
+<!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: NL3D::CPSUtil struct 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&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a> | <span class="search"><u>S</u>earch&nbsp;for&nbsp;<input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
+<h1>NL3D::CPSUtil Struct Reference</h1><code>#include &lt;<a class="el" href="a06286.html">ps_util.h</a>&gt;</code>
+<p>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+This struct contains utility functions used by the particle system. <dl compact><dt><b>Author:</b></dt><dd>Nicolas Vizerie <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="a06286.html#l00057">57</a> of file <a class="el" href="a06286.html">ps_util.h</a>.<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile0">addRadiusToAABBox</a> (<a class="el" href="a02156.html">NLMISC::CAABBox</a> &amp;box, float radius)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">enlarge a bounding box by the specified radius <a href="#NL3D_1_1CPSUtile0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile1">buildPerlinNoise</a> (<a class="el" href="a03128.html">NLMISC::CVector</a> &amp;pos, <a class="el" href="a04558.html#a15">uint</a> nbOctaves)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile2">buildSchmidtBasis</a> (const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;<a class="el" href="a04223.html#a576">v</a>, <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;dest)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile3">display3DQuad</a> (<a class="el" href="a02434.html">NL3D::IDriver</a> &amp;driver, const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;c1, const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;c2,const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;c3, const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;c4, <a class="el" href="a03337.html">NLMISC::CRGBA</a> color=<a class="el" href="a03337.html#NLMISC_1_1CRGBAs6">NLMISC::CRGBA::White</a>)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">display a 3d quad in wireline, by using the 4 gicen corners <a href="#NL3D_1_1CPSUtile3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile4">displayArrow</a> (<a class="el" href="a02434.html">NL3D::IDriver</a> *driver, const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;start, const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;<a class="el" href="a04223.html#a576">v</a>, float <a class="el" href="a04223.html#a587">size</a>, <a class="el" href="a03337.html">NLMISC::CRGBA</a> col1, <a class="el" href="a03337.html">NLMISC::CRGBA</a> col2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile5">displayBasis</a> (<a class="el" href="a02434.html">NL3D::IDriver</a> *driver, const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;modelMat, const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;m, float <a class="el" href="a04223.html#a587">size</a>, <a class="el" href="a02541.html">CFontGenerator</a> &amp;fg, <a class="el" href="a02542.html">CFontManager</a> &amp;fm)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">display a basis using the given matrix. The model matrix must be restored after this call <a href="#NL3D_1_1CPSUtile5"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile6">displayBBox</a> (<a class="el" href="a02434.html">NL3D::IDriver</a> *driver, const <a class="el" href="a02156.html">NLMISC::CAABBox</a> &amp;box, <a class="el" href="a03337.html">NLMISC::CRGBA</a> col=<a class="el" href="a03337.html#NLMISC_1_1CRGBAs6">NLMISC::CRGBA::White</a>)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">this draw a bounding box <a href="#NL3D_1_1CPSUtile6"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile7">displayCylinder</a> (<a class="el" href="a02434.html">NL3D::IDriver</a> &amp;driver, const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;center, const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;mat, const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;dim, <a class="el" href="a04558.html#a15">uint</a> nbSubdiv=32, <a class="el" href="a03337.html">NLMISC::CRGBA</a> color=<a class="el" href="a03337.html#NLMISC_1_1CRGBAs6">NLMISC::CRGBA::White</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile8">displayDisc</a> (<a class="el" href="a02434.html">NL3D::IDriver</a> &amp;driver, float radius, const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;center, const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;mat, <a class="el" href="a04558.html#a15">uint</a> nbSubdiv=32, <a class="el" href="a03337.html">NLMISC::CRGBA</a> color=<a class="el" href="a03337.html#NLMISC_1_1CRGBAs6">NLMISC::CRGBA::White</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile9">displaySphere</a> (<a class="el" href="a02434.html">NL3D::IDriver</a> &amp;driver, float radius, const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;center, <a class="el" href="a04558.html#a15">uint</a> nbSubdiv=4, <a class="el" href="a03337.html">NLMISC::CRGBA</a> color=<a class="el" href="a03337.html#NLMISC_1_1CRGBAs6">NLMISC::CRGBA::White</a>)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">draw a sphere <a href="#NL3D_1_1CPSUtile9"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile10">getCos</a> (<a class="el" href="a04558.html#a10">sint32</a> angle)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile11">getSin</a> (<a class="el" href="a04558.html#a10">sint32</a> angle)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile12">initFastCosNSinTable</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile13">initPerlinNoiseTable</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile14">print</a> (<a class="el" href="a02434.html">NL3D::IDriver</a> *driver, const std::string &amp;text, <a class="el" href="a02541.html">CFontGenerator</a> &amp;fg, <a class="el" href="a02542.html">CFontManager</a> &amp;fm, const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;pos, float <a class="el" href="a04223.html#a587">size</a>, <a class="el" href="a03337.html">NLMISC::CRGBA</a> col=<a class="el" href="a03337.html#NLMISC_1_1CRGBAs6">NLMISC::CRGBA::White</a>)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">display a string at the given world position. The The model matrix must be restored after this call <a href="#NL3D_1_1CPSUtile14"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtile15">registerSerialParticleSystem</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">register the classes of the system mus be called when serializing <a href="#NL3D_1_1CPSUtile15"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Static Private Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtilh0">getInterpolatedNoise</a> (const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;pos)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtilh1">getPerlinNoise</a> (<a class="el" href="a04558.html#a15">uint</a> <a class="el" href="a04223.html#a572">x</a>, <a class="el" href="a04558.html#a15">uint</a> <a class="el" href="a04223.html#a573">y</a>, <a class="el" href="a04558.html#a15">uint</a> <a class="el" href="a04223.html#a574">z</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtilh2">registerAttribs</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtilh3">registerEmitters</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtilh4">registerForces</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtilh5">registerParticles</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtilh6">registerZones</a> ()</td></tr>
+
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtilv0">_CosTable</a> [256]</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtilv1">_CosTableInitialized</a> = false</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtilv2">_PerlinNoiseTab</a> [1024]</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtilv3">_PerlinNoiseTableInitialized</a> = false</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03249.html#NL3D_1_1CPSUtilv4">_SinTable</a> [256]</td></tr>
+
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="NL3D_1_1CPSUtile0" doxytag="NL3D::CPSUtil::addRadiusToAABBox" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::addRadiusToAABBox </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02156.html">NLMISC::CAABBox</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>box</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>radius</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+enlarge a bounding box by the specified radius
+<p>
+
+<p>
+Definition at line <a class="el" href="a06286.html#l00179">179</a> of file <a class="el" href="a06286.html">ps_util.h</a>.
+<p>
+References <a class="el" href="a05385.html#l00091">NLMISC::CAABBox::getHalfSize()</a>, and <a class="el" href="a05385.html#l00067">NLMISC::CAABBox::setHalfSize()</a>.
+<p>
+<div class="fragment"><pre>00180 {
+00181 box.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1902_2">setHalfSize</a>(box.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_1">getHalfSize</a>() + <a class="code" href="a03128.html">NLMISC::CVector</a>(radius, radius, radius) );
+00182 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtile1" doxytag="NL3D::CPSUtil::buildPerlinNoise" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float NL3D::CPSUtil::buildPerlinNoise </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03128.html">NLMISC::CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>pos</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>nbOctaves</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+compute a perlin noise value, that will range from [0 to 1] The first octave has the unit size <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a03249.html#NL3D_1_1CPSUtile13">initPerlinNoiseTable()</a></dd></dl>
+
+<p>
+Definition at line <a class="el" href="a06286.html#l00238">238</a> of file <a class="el" href="a06286.html">ps_util.h</a>.
+<p>
+References <a class="el" href="a06285.html#l00060">_PerlinNoiseTableInitialized</a>, <a class="el" href="a06286.html#l00192">getInterpolatedNoise()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>00239 {
+00240 <a class="code" href="a04199.html#a6">nlassert</a>(_PerlinNoiseTableInitialized);
+00241
+00242 <span class="keywordtype">float</span> result = 0;
+00243 <span class="keywordtype">float</span> fact = .5f;
+00244 <span class="keywordtype">float</span> scale = 1.f;
+00245
+00246 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> k = 0; k &lt; numOctaves; k++)
+00247 {
+00248 result += fact * <a class="code" href="a03249.html#NL3D_1_1CPSUtilh0">getInterpolatedNoise</a>(scale * pos);
+00249 fact *= .5f;
+00250 scale *= 1.2537f;
+00251 }
+00252 <span class="keywordflow">return</span> result;
+00253 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtile2" doxytag="NL3D::CPSUtil::buildSchmidtBasis" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::buildSchmidtBasis </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>dest</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+build a basis from a vector using Schmidt orthogonalization method <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>v</em>&nbsp;</td><td>K axis in the resulting basis </td></tr>
+ <tr><td valign=top><em>dest</em>&nbsp;</td><td>The matrix containing the result. Only the rotation part is modified</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00257">257</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+References <a class="el" href="a06682.html#l00119">NLMISC::CVector::normalize()</a>, and <a class="el" href="a05972.html#l00209">NLMISC::CMatrix::setRot()</a>.
+<p>
+Referenced by <a class="el" href="a06285.html#l00169">displayArrow()</a>.
+<p>
+<div class="fragment"><pre>00258 {
+00259 <span class="keyword">const</span> <span class="keywordtype">float</span> epsilon = 10E-4f;
+00260
+00261
+00262 CVector k = k_;
+00263 k.normalize();
+00264 CVector i;
+00265 <span class="keywordflow">if</span> ((1.0f - fabsf(k * CVector::I)) &gt; epsilon)
+00266 {
+00267 i = k ^ CVector::I;
+00268 }
+00269 <span class="keywordflow">else</span>
+00270 <span class="keywordflow">if</span> ((1.0f - fabs(k * CVector::J)) &gt; epsilon)
+00271 {
+00272 i = k ^ CVector::J;
+00273 }
+00274 <span class="keywordflow">else</span>
+00275 {
+00276 i = k ^ CVector::K;
+00277 }
+00278
+00279 i = i - (k * i) * k;
+00280 i.normalize();
+00281 result.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1961_10">setRot</a>(i, k ^ i, k, <span class="keyword">true</span>);
+00282 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtile3" doxytag="NL3D::CPSUtil::display3DQuad" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::display3DQuad </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">NL3D::IDriver</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>driver</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>c1</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>c2</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>c3</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>c4</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03337.html">NLMISC::CRGBA</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>color</em> = <a class="el" href="a03337.html#NLMISC_1_1CRGBAs6">NLMISC::CRGBA::White</a></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+display a 3d quad in wireline, by using the 4 gicen corners
+<p>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00383">383</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+<div class="fragment"><pre>00385 {
+00386 CDRU::drawLine(c1, c2, color, driver);
+00387 CDRU::drawLine(c2, c3, color, driver);
+00388 CDRU::drawLine(c3, c4, color, driver);
+00389 CDRU::drawLine(c4, c1, color, driver);
+00390 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtile4" doxytag="NL3D::CPSUtil::displayArrow" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::displayArrow </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">NL3D::IDriver</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>driver</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>start</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03337.html">NLMISC::CRGBA</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>col1</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03337.html">NLMISC::CRGBA</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>col2</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+display an arrow (the same that is used with displayBasis) The user must setup the model matrix himself <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>driver</em>&nbsp;</td><td>the driver used for rendering </td></tr>
+ <tr><td valign=top><em>start</em>&nbsp;</td><td>start point of the arrow </td></tr>
+ <tr><td valign=top><em>v</em>&nbsp;</td><td>direction of the arrow </td></tr>
+ <tr><td valign=top><em>size</em>&nbsp;</td><td>size of the arrow (will be drawn as size * v) </td></tr>
+ <tr><td valign=top><em>col1</em>&nbsp;</td><td>color of the arrow start </td></tr>
+ <tr><td valign=top><em>col2</em>&nbsp;</td><td>color of the arrow end</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00169">169</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+References <a class="el" href="a02434.html#NL3D_1_1IDrivera2">NL3D::IDriver::activeVertexBuffer()</a>, <a class="el" href="a06285.html#l00257">buildSchmidtBasis()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera56">NL3D::IDriver::renderTriangles()</a>, <a class="el" href="a05641.html#l00064">NL3D::CMaterial::setBlend()</a>, <a class="el" href="a05641.html#l00091">NL3D::CMaterial::setBlendFunc()</a>, <a class="el" href="a05641.html#l00118">NL3D::CMaterial::setColor()</a>, <a class="el" href="a05641.html#l00071">NL3D::CMaterial::setDoubleSided()</a>, <a class="el" href="a05641.html#l00127">NL3D::CMaterial::setLighting()</a>, <a class="el" href="a06710.html#l00409">NL3D::CVertexBuffer::setNumVertices()</a>, <a class="el" href="a06711.html#l00524">NL3D::CVertexBuffer::setVertexCoord()</a>, <a class="el" href="a06710.html#l00169">NL3D::CVertexBuffer::setVertexFormat()</a>, <a class="el" href="a05641.html#l00105">NL3D::CMaterial::setZWrite()</a>, <a class="el" href="a05646.html#l00645">size</a>, <a class="el" href="a05981.html#l00100">uint32</a>, and <a class="el" href="a05646.html#l00237">v</a>.
+<p>
+Referenced by <a class="el" href="a06285.html#l00212">displayBasis()</a>.
+<p>
+<div class="fragment"><pre>00170 {
+00171
+00172 <span class="keyword">const</span> <span class="keywordtype">float</span> coneSize = <a class="code" href="a04223.html#a587">size</a> * 0.1f;
+00173
+00174 <a class="code" href="a04558.html#a11">uint32</a> vTab[] = { 1, 2, 4,
+00175 4, 2, 3,
+00176 1, 2, 0,
+00177 2, 3, 0,
+00178 3, 4, 0,
+00179 4, 1, 0 };
+00180
+00181 CVector end = start + <a class="code" href="a04223.html#a587">size</a> * <a class="code" href="a04223.html#a576">v</a>;
+00182 CDRU::drawLine(start, end, col1, *driver);
+00183 CMatrix m;
+00184 <a class="code" href="a03249.html#NL3D_1_1CPSUtile2">buildSchmidtBasis</a>(v, m);
+00185
+00186 CVertexBuffer vb;
+00187 vb.setVertexFormat(CVertexBuffer::PositionFlag);
+00188 vb.setNumVertices(5);
+00189
+00190
+00191
+00192 vb.setVertexCoord(0, end + m * CVector(0, 0, 3.0f * coneSize) );
+00193 vb.setVertexCoord(1, end + m * CVector(-coneSize, -coneSize, 0) );
+00194 vb.setVertexCoord(2, end + m * CVector(coneSize, -coneSize, 0) );
+00195 vb.setVertexCoord(3, end + m * CVector(coneSize, coneSize, 0) );
+00196 vb.setVertexCoord(4, end + m * CVector(-coneSize, coneSize, 0) );
+00197
+00198 CMaterial material;
+00199
+00200 material.setColor(col2);
+00201 material.setLighting(<span class="keyword">false</span>);
+00202 material.setBlendFunc(CMaterial::one, CMaterial::one);
+00203 material.setZWrite(<span class="keyword">false</span>);
+00204 material.setBlend(<span class="keyword">true</span>);
+00205 material.setDoubleSided(<span class="keyword">true</span>);
+00206
+00207 driver-&gt;<a class="code" href="a02434.html#NL3D_1_1IDrivera2">activeVertexBuffer</a>(vb, 0, 5);
+00208 driver-&gt;<a class="code" href="a02434.html#NL3D_1_1IDrivera56">renderTriangles</a>(material, vTab, 6);
+00209 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtile5" doxytag="NL3D::CPSUtil::displayBasis" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::displayBasis </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">NL3D::IDriver</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>driver</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>modelMat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>m</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02541.html">CFontGenerator</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>fg</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02542.html">CFontManager</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>fm</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+display a basis using the given matrix. The model matrix must be restored after this call
+<p>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00212">212</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+References <a class="el" href="a06285.html#l00169">displayArrow()</a>, <a class="el" href="a05972.html#l00419">NLMISC::CMatrix::getI()</a>, <a class="el" href="a05972.html#l00427">NLMISC::CMatrix::getJ()</a>, <a class="el" href="a05972.html#l00435">NLMISC::CMatrix::getK()</a>, <a class="el" href="a05973.html#l00198">NLMISC::CMatrix::getPos()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera68">NL3D::IDriver::setupModelMatrix()</a>, and <a class="el" href="a05646.html#l00645">size</a>.
+<p>
+<div class="fragment"><pre>00213 {
+00214 CMaterial material;
+00215
+00216 driver-&gt;<a class="code" href="a02434.html#NL3D_1_1IDrivera68">setupModelMatrix</a>(modelMat);
+00217
+00218
+00219
+00220 <a class="code" href="a03249.html#NL3D_1_1CPSUtile4">displayArrow</a>(driver, m.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_6">getPos</a>(), m.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_2">getI</a>(), <a class="code" href="a04223.html#a587">size</a>, <a class="code" href="a03337.html">CRGBA</a>(127, 127, 127), CRGBA(0, 0, 80));
+00221 <a class="code" href="a03249.html#NL3D_1_1CPSUtile4">displayArrow</a>(driver, m.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_6">getPos</a>(), m.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_3">getJ</a>(), <a class="code" href="a04223.html#a587">size</a>, CRGBA(127, 127, 127), CRGBA(0, 0, 80));
+00222 <a class="code" href="a03249.html#NL3D_1_1CPSUtile4">displayArrow</a>(driver, m.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_6">getPos</a>(), m.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_4">getK</a>(), <a class="code" href="a04223.html#a587">size</a>, CRGBA(127, 127, 127), CRGBA(200, 0, 80));
+00223
+00224
+00225 <span class="comment">// draw the letters</span>
+00226
+00227 CPSUtil::print(driver, std::string(<span class="stringliteral">"x"</span>), fg, fm, modelMat * m * CVector(1.4f * size, 0, 0), 15.0f * size);
+00228 CPSUtil::print(driver, std::string(<span class="stringliteral">"y"</span>), fg, fm, modelMat * m * CVector(0, 1.4f * size, 0), 15.0f * size);
+00229 CPSUtil::print(driver, std::string(<span class="stringliteral">"z"</span>), fg, fm, modelMat * m * CVector(0, 0, 1.4f * size), 15.0f * size);
+00230
+00231 };
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtile6" doxytag="NL3D::CPSUtil::displayBBox" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::displayBBox </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">NL3D::IDriver</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>driver</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02156.html">NLMISC::CAABBox</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>box</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03337.html">NLMISC::CRGBA</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>col</em> = <a class="el" href="a03337.html#NLMISC_1_1CRGBAs6">NLMISC::CRGBA::White</a></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+this draw a bounding box
+<p>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00118">118</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+References <a class="el" href="a02434.html#NL3D_1_1IDrivera2">NL3D::IDriver::activeVertexBuffer()</a>, <a class="el" href="a06197.html#l00080">NL3D::CPrimitiveBlock::addLine()</a>, <a class="el" href="a05385.html#l00087">NLMISC::CAABBox::getMax()</a>, <a class="el" href="a05385.html#l00086">NLMISC::CAABBox::getMin()</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera51">NL3D::IDriver::render()</a>, <a class="el" href="a06197.html#l00056">NL3D::CPrimitiveBlock::reserveLine()</a>, <a class="el" href="a05641.html#l00064">NL3D::CMaterial::setBlend()</a>, <a class="el" href="a05641.html#l00091">NL3D::CMaterial::setBlendFunc()</a>, <a class="el" href="a05641.html#l00118">NL3D::CMaterial::setColor()</a>, <a class="el" href="a05641.html#l00127">NL3D::CMaterial::setLighting()</a>, <a class="el" href="a06710.html#l00409">NL3D::CVertexBuffer::setNumVertices()</a>, <a class="el" href="a06711.html#l00524">NL3D::CVertexBuffer::setVertexCoord()</a>, <a class="el" href="a06710.html#l00169">NL3D::CVertexBuffer::setVertexFormat()</a>, <a class="el" href="a05641.html#l00105">NL3D::CMaterial::setZWrite()</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>.
+<p>
+<div class="fragment"><pre>00119 {
+00120 CVector max = box.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_3">getMax</a>()
+00121 ,<a class="code" href="a04061.html#a0">min</a> = box.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_5">getMin</a>();
+00122 CVertexBuffer vb;
+00123 vb.setVertexFormat(CVertexBuffer::PositionFlag);
+00124 vb.setNumVertices(8);
+00125
+00126 vb.setVertexCoord(0, min);
+00127 vb.setVertexCoord(1, CVector(max.x, <a class="code" href="a04061.html#a0">min</a>.y, <a class="code" href="a04061.html#a0">min</a>.z));
+00128 vb.setVertexCoord(2, CVector(<a class="code" href="a04061.html#a0">min</a>.x, max.y, <a class="code" href="a04061.html#a0">min</a>.z));
+00129 vb.setVertexCoord(3, CVector(max.x, max.y, <a class="code" href="a04061.html#a0">min</a>.z));
+00130 vb.setVertexCoord(4, CVector(<a class="code" href="a04061.html#a0">min</a>.x, <a class="code" href="a04061.html#a0">min</a>.y, max.z));
+00131 vb.setVertexCoord(5, CVector(max.x, <a class="code" href="a04061.html#a0">min</a>.y, max.z));
+00132 vb.setVertexCoord(6, CVector(<a class="code" href="a04061.html#a0">min</a>.x, max.y, max.z));
+00133 vb.setVertexCoord(7, max);
+00134
+00135
+00136 CMaterial material;
+00137
+00138 material.setColor(col);
+00139 material.setLighting(<span class="keyword">false</span>);
+00140 material.setBlendFunc(CMaterial::one, CMaterial::one);
+00141 material.setZWrite(<span class="keyword">false</span>);
+00142 material.setBlend(<span class="keyword">true</span>);
+00143
+00144
+00145
+00146 CPrimitiveBlock pb;
+00147 pb.reserveLine(12);
+00148 pb.addLine(0, 1);
+00149 pb.addLine(1, 5);
+00150 pb.addLine(5, 4);
+00151 pb.addLine(4, 0);
+00152 pb.addLine(0, 2);
+00153 pb.addLine(1, 3);
+00154 pb.addLine(4, 6);
+00155 pb.addLine(5, 7);
+00156 pb.addLine(6, 7);
+00157 pb.addLine(7, 3);
+00158 pb.addLine(3, 2);
+00159 pb.addLine(2, 6);
+00160
+00161
+00162
+00163 driver-&gt;<a class="code" href="a02434.html#NL3D_1_1IDrivera2">activeVertexBuffer</a>(vb);
+00164 driver-&gt;<a class="code" href="a02434.html#NL3D_1_1IDrivera51">render</a>(pb, material);
+00165 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtile7" doxytag="NL3D::CPSUtil::displayCylinder" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::displayCylinder </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">NL3D::IDriver</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>driver</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>center</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>mat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>dim</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>nbSubdiv</em> = 32, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03337.html">NLMISC::CRGBA</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>color</em> = <a class="el" href="a03337.html#NLMISC_1_1CRGBAs6">NLMISC::CRGBA::White</a></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+draw a cylinder (not filled) <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>dim</em>&nbsp;</td><td>dimension of the cylinder along each axis, packed in a vector</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00351">351</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+References <a class="el" href="a05972.html#l00419">NLMISC::CMatrix::getI()</a>, <a class="el" href="a05972.html#l00427">NLMISC::CMatrix::getJ()</a>, <a class="el" href="a05972.html#l00435">NLMISC::CMatrix::getK()</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>.
+<p>
+<div class="fragment"><pre>00352 {
+00353 <span class="comment">// not optimized, but for edition only</span>
+00354 <span class="keywordtype">float</span> thetaDelta = (<span class="keywordtype">float</span>) NLMISC::Pi * 2.f / nbSubdiv;
+00355 <span class="keywordtype">float</span> theta = 0.f;
+00356 <span class="keyword">const</span> CVector &amp;I = mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_2">getI</a>();
+00357 <span class="keyword">const</span> CVector &amp;J = mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_3">getJ</a>();
+00358 <span class="keyword">const</span> CVector &amp;K = mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_4">getK</a>();
+00359
+00360 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> k = 0; k &lt; nbSubdiv; ++k)
+00361 {
+00362
+00363 CDRU::drawLine(center + dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a> * K + dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a> * cosf(theta) * I + dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a> * sinf(theta) * J
+00364 , center + dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a> * K + dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a> * cosf(theta + thetaDelta) * I + dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a> * sinf(theta + thetaDelta) * J
+00365 , color, driver);
+00366
+00367 CDRU::drawLine(center - dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a> * K + dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a> * cosf(theta) * I + dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a> * sinf(theta) * J
+00368 , center - dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a> * K + dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a> * cosf(theta + thetaDelta) * I + dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a> * sinf(theta + thetaDelta) * J
+00369 , color, driver);
+00370
+00371 CDRU::drawLine(center + dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a> * K + dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a> * cosf(theta) * I + dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a> * sinf(theta) * J
+00372 , center - dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a> * K + dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a> * cosf(theta) * I + dim.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a> * sinf(theta) * J
+00373 , color, driver);
+00374
+00375
+00376
+00377
+00378 theta += thetaDelta;
+00379 }
+00380 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtile8" doxytag="NL3D::CPSUtil::displayDisc" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::displayDisc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">NL3D::IDriver</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>driver</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>radius</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>center</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>mat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>nbSubdiv</em> = 32, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03337.html">NLMISC::CRGBA</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>color</em> = <a class="el" href="a03337.html#NLMISC_1_1CRGBAs6">NLMISC::CRGBA::White</a></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+draw a disc (not filled) <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>mat</em>&nbsp;</td><td>: a matrix, whose K vector is normal to the plane containing the disc</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00332">332</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+References <a class="el" href="a05972.html#l00419">NLMISC::CMatrix::getI()</a>, <a class="el" href="a05972.html#l00427">NLMISC::CMatrix::getJ()</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>00333 {
+00334 <span class="comment">// not optimized, but for edition only</span>
+00335 <span class="keywordtype">float</span> thetaDelta = (<span class="keywordtype">float</span>) NLMISC::Pi * 2.f / nbSubdiv;
+00336 <span class="keywordtype">float</span> theta = 0.f;
+00337 <span class="keyword">const</span> CVector &amp;I = mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_2">getI</a>();
+00338 <span class="keyword">const</span> CVector &amp;J = mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_3">getJ</a>();
+00339 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> k = 0; k &lt; nbSubdiv; ++k)
+00340 {
+00341
+00342 CDRU::drawLine(center + radius * ((<span class="keywordtype">float</span>) cos(theta) * I + (<span class="keywordtype">float</span>) sin(theta) * J)
+00343 , center + radius * ((<span class="keywordtype">float</span>) cos(theta + thetaDelta) * I + (<span class="keywordtype">float</span>) sin(theta + thetaDelta) * J)
+00344 , color, driver);
+00345 theta += thetaDelta;
+00346 }
+00347
+00348 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtile9" doxytag="NL3D::CPSUtil::displaySphere" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::displaySphere </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">NL3D::IDriver</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>driver</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>radius</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>center</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>nbSubdiv</em> = 4, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03337.html">NLMISC::CRGBA</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>color</em> = <a class="el" href="a03337.html#NLMISC_1_1CRGBAs6">NLMISC::CRGBA::White</a></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+draw a sphere
+<p>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00286">286</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+References <a class="el" href="a06682.html#l00119">NLMISC::CVector::normalize()</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05646.html#l00236">x</a>, and <a class="el" href="a05646.html#l00236">y</a>.
+<p>
+<div class="fragment"><pre>00287 {
+00288 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a572">x</a>, <a class="code" href="a04223.html#a573">y</a>, k;
+00289 CVector p, p1, p2;
+00290
+00291 <span class="keyword">static</span> <span class="keyword">const</span> CVector lK[] = { CVector::I, -CVector::I
+00292 ,CVector::J, -CVector::J
+00293 ,CVector::K, -CVector::K };
+00294
+00295 <span class="comment">/* static const CVector lI = { CVector::J, -CVector::J</span>
+00296 <span class="comment"> ,CVector::K, -CVector::K</span>
+00297 <span class="comment"> ,CVector::I, -CVector::I };*/</span>
+00298
+00299
+00300
+00301 <span class="keywordflow">for</span> (k = 0; k &lt; 6; ++k)
+00302 {
+00303 <span class="keyword">const</span> CVector &amp;I = lK[(k + 2) % 6];
+00304 <span class="keyword">const</span> CVector &amp;K = lK[k];
+00305 <span class="keyword">const</span> CVector J = K ^ I;
+00306
+00307 <span class="keywordflow">for</span> (<a class="code" href="a04223.html#a572">x</a> = 0; <a class="code" href="a04223.html#a572">x</a> &lt; nbSubdiv; ++<a class="code" href="a04223.html#a572">x</a>)
+00308 {
+00309 <span class="keywordflow">for</span> (<a class="code" href="a04223.html#a573">y</a> = 0; <a class="code" href="a04223.html#a573">y</a> &lt; nbSubdiv; ++<a class="code" href="a04223.html#a573">y</a>)
+00310 {
+00311 p = ((2.f * <a class="code" href="a04223.html#a572">x</a> / float(nbSubdiv) ) - 1.f) * I + ((2.f * <a class="code" href="a04223.html#a573">y</a> / float(nbSubdiv) ) - 1.f) * J + K;
+00312 p1 = p + 2.f / float(nbSubdiv) * I;
+00313 p2 = p + 2.f / float(nbSubdiv) * J;
+00314
+00315 p.normalize();
+00316 p1.normalize();
+00317 p2.normalize();
+00318
+00319 p = center + radius * p;
+00320 p1 = center + radius * p1;
+00321 p2 = center + radius * p2;
+00322
+00323 CDRU::drawLine(p, p1, color, driver);
+00324 CDRU::drawLine(p, p2, color, driver);
+00325 }
+00326 }
+00327 }
+00328 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtile10" doxytag="NL3D::CPSUtil::getCos" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float NL3D::CPSUtil::getCos </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a10">sint32</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>angle</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get a cosine from the fast cosine table (which must be have initialised with initFastCosNSinTable). 256 &lt;=&gt; 2 Pi
+<p>
+Definition at line <a class="el" href="a06286.html#l00122">122</a> of file <a class="el" href="a06286.html">ps_util.h</a>.
+<p>
+References <a class="el" href="a06285.html#l00063">_CosTable</a>, <a class="el" href="a06285.html#l00059">_CosTableInitialized</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, and <a class="el" href="a05981.html#l00099">sint32</a>.
+<p>
+<div class="fragment"><pre>00123 {
+00124 <a class="code" href="a04199.html#a6">nlassert</a>(_CosTableInitialized == <span class="keyword">true</span>);
+00125 <span class="keywordflow">return</span> <a class="code" href="a03249.html#NL3D_1_1CPSUtilv0">_CosTable</a>[angle &amp; 0xff];
+00126 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtilh0" doxytag="NL3D::CPSUtil::getInterpolatedNoise" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float NL3D::CPSUtil::getInterpolatedNoise </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>pos</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, static, private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06286.html#l00192">192</a> of file <a class="el" href="a06286.html">ps_util.h</a>.
+<p>
+References <a class="el" href="a06286.html#l00186">getPerlinNoise()</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a05646.html#l00236">x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>, <a class="el" href="a05646.html#l00236">y</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>, and <a class="el" href="a05646.html#l00236">z</a>.
+<p>
+Referenced by <a class="el" href="a06286.html#l00238">buildPerlinNoise()</a>.
+<p>
+<div class="fragment"><pre>00193 {
+00194 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a572">x</a> = (<a class="code" href="a04558.html#a15">uint</a>) pos.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>
+00195 , <a class="code" href="a04223.html#a573">y</a> = (<a class="code" href="a04558.html#a15">uint</a>) pos.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a>
+00196 , <a class="code" href="a04223.html#a574">z</a> = (<a class="code" href="a04558.html#a15">uint</a>) pos.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a>;
+00197
+00198 <span class="comment">// we want to avoid costly ctor call there...</span>
+00199 <span class="keywordtype">float</span> fx = pos.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a> - <a class="code" href="a04223.html#a572">x</a>
+00200 , fy = pos.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a> - <a class="code" href="a04223.html#a573">y</a>
+00201 , fz = pos.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a> - <a class="code" href="a04223.html#a574">z</a>;
+00202
+00203 <span class="comment">// we use the following topology to get the value :</span>
+00204 <span class="comment">//</span>
+00205 <span class="comment">//</span>
+00206 <span class="comment">// z</span>
+00207 <span class="comment">// | 7-----6</span>
+00208 <span class="comment">// / /</span>
+00209 <span class="comment">// 4-----5 |</span>
+00210 <span class="comment">// | | |</span>
+00211 <span class="comment">// | 3 | |2</span>
+00212 <span class="comment">// | | /</span>
+00213 <span class="comment">// 0_____1/__x</span>
+00214
+00215
+00216 <span class="keyword">const</span> <span class="keywordtype">float</span> v0 = <a class="code" href="a03249.html#NL3D_1_1CPSUtilh1">getPerlinNoise</a>(x, <a class="code" href="a04223.html#a573">y</a>, <a class="code" href="a04223.html#a574">z</a>)
+00217 ,v1 = <a class="code" href="a03249.html#NL3D_1_1CPSUtilh1">getPerlinNoise</a>(x + 1, <a class="code" href="a04223.html#a573">y</a>, <a class="code" href="a04223.html#a574">z</a>)
+00218 ,v2 = <a class="code" href="a03249.html#NL3D_1_1CPSUtilh1">getPerlinNoise</a>(x + 1, <a class="code" href="a04223.html#a573">y</a> + 1, <a class="code" href="a04223.html#a574">z</a>)
+00219 ,v3 = <a class="code" href="a03249.html#NL3D_1_1CPSUtilh1">getPerlinNoise</a>(x, <a class="code" href="a04223.html#a573">y</a> + 1, <a class="code" href="a04223.html#a574">z</a>)
+00220 ,v4 = <a class="code" href="a03249.html#NL3D_1_1CPSUtilh1">getPerlinNoise</a>(x, <a class="code" href="a04223.html#a573">y</a>, <a class="code" href="a04223.html#a574">z</a> + 1)
+00221 ,v5 = <a class="code" href="a03249.html#NL3D_1_1CPSUtilh1">getPerlinNoise</a>(x + 1, <a class="code" href="a04223.html#a573">y</a>, <a class="code" href="a04223.html#a574">z</a> + 1)
+00222 ,v6 = <a class="code" href="a03249.html#NL3D_1_1CPSUtilh1">getPerlinNoise</a>(x + 1, <a class="code" href="a04223.html#a573">y</a> + 1, <a class="code" href="a04223.html#a574">z</a> + 1)
+00223 ,v7 = <a class="code" href="a03249.html#NL3D_1_1CPSUtilh1">getPerlinNoise</a>(x, <a class="code" href="a04223.html#a573">y</a> + 1, <a class="code" href="a04223.html#a574">z</a> + 1);
+00224
+00225
+00226 <span class="keyword">const</span> <span class="keywordtype">float</span> h1 = fx * v1 + (1.f - fx) * v0
+00227 ,h2 = fx * v3 + (1.f - fx) * v2
+00228 ,h3 = fx * v5 + (1.f - fx) * v4
+00229 ,h4 = fx * v7 + (1.f - fx )* v6;
+00230
+00231 <span class="keyword">const</span> <span class="keywordtype">float</span> c1 = fy * h2 + (1.f - fy) * h1
+00232 ,c2 = fy * h4 + (1.f - fy) * h3;
+00233
+00234 <span class="keywordflow">return</span> fz * c2 + (1.f - fz) * c1;
+00235 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtilh1" doxytag="NL3D::CPSUtil::getPerlinNoise" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float NL3D::CPSUtil::getPerlinNoise </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>z</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, static, private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06286.html#l00186">186</a> of file <a class="el" href="a06286.html">ps_util.h</a>.
+<p>
+References <a class="el" href="a06285.html#l00065">_PerlinNoiseTab</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05646.html#l00236">x</a>, <a class="el" href="a05646.html#l00236">y</a>, and <a class="el" href="a05646.html#l00236">z</a>.
+<p>
+Referenced by <a class="el" href="a06286.html#l00192">getInterpolatedNoise()</a>.
+<p>
+<div class="fragment"><pre>00187 {
+00188 <span class="keywordflow">return</span> <a class="code" href="a03249.html#NL3D_1_1CPSUtilv2">_PerlinNoiseTab</a>[(<a class="code" href="a04223.html#a572">x</a> ^ <a class="code" href="a04223.html#a573">y</a> ^ <a class="code" href="a04223.html#a574">z</a>) &amp; 1023];
+00189 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtile11" doxytag="NL3D::CPSUtil::getSin" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float NL3D::CPSUtil::getSin </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a10">sint32</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>angle</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get a cosine from the fast cosine table (which must be have initialised with initFastCosNSinTable). 256 &lt;=&gt; 2 Pi
+<p>
+Definition at line <a class="el" href="a06286.html#l00131">131</a> of file <a class="el" href="a06286.html">ps_util.h</a>.
+<p>
+References <a class="el" href="a06285.html#l00059">_CosTableInitialized</a>, <a class="el" href="a06285.html#l00064">_SinTable</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, and <a class="el" href="a05981.html#l00099">sint32</a>.
+<p>
+<div class="fragment"><pre>00132 {
+00133 <a class="code" href="a04199.html#a6">nlassert</a>(_CosTableInitialized == <span class="keyword">true</span>);
+00134 <span class="keywordflow">return</span> <a class="code" href="a03249.html#NL3D_1_1CPSUtilv4">_SinTable</a>[angle &amp; 0xff];
+00135 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtile12" doxytag="NL3D::CPSUtil::initFastCosNSinTable" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::initFastCosNSinTable </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Init the table for cosine and sinus lookup <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a03249.html#NL3D_1_1CPSUtile10">getCos()</a>, <a class="el" href="a03249.html#NL3D_1_1CPSUtile11">getSin()</a></dd></dl>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00083">83</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+References <a class="el" href="a06285.html#l00063">_CosTable</a>, <a class="el" href="a06285.html#l00059">_CosTableInitialized</a>, <a class="el" href="a06285.html#l00064">_SinTable</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+Referenced by <a class="el" href="a06285.html#l00097">registerSerialParticleSystem()</a>.
+<p>
+<div class="fragment"><pre>00084 {
+00085 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a11">uint32</a> k = 0; k &lt; 256; k++)
+00086 {
+00087 <span class="keyword">const</span> <span class="keywordtype">float</span> angle = k / 256.0f * 2.0f * float(NLMISC::Pi);
+00088 <a class="code" href="a03249.html#NL3D_1_1CPSUtilv0">_CosTable</a>[k] = (<span class="keywordtype">float</span>) cos( angle );
+00089 <a class="code" href="a03249.html#NL3D_1_1CPSUtilv4">_SinTable</a>[k] = (<span class="keywordtype">float</span>) sin( angle );
+00090 }
+00091 <span class="comment">//#ifdef NL_DEBUG</span>
+00092 <a class="code" href="a03249.html#NL3D_1_1CPSUtilv1">_CosTableInitialized</a> = <span class="keyword">true</span>;
+00093 <span class="comment">//#endif</span>
+00094 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtile13" doxytag="NL3D::CPSUtil::initPerlinNoiseTable" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::initPerlinNoiseTable </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+init the table used by perlin noise. This must be used before any call to buildPerlinNoise
+<p>
+Definition at line <a class="el" href="a06285.html#l00071">71</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+References <a class="el" href="a06285.html#l00065">_PerlinNoiseTab</a>, <a class="el" href="a06285.html#l00060">_PerlinNoiseTableInitialized</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+Referenced by <a class="el" href="a06285.html#l00097">registerSerialParticleSystem()</a>.
+<p>
+<div class="fragment"><pre>00072 {
+00073 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a11">uint32</a> k = 0; k &lt; 1024; ++k)
+00074 {
+00075 <a class="code" href="a03249.html#NL3D_1_1CPSUtilv2">_PerlinNoiseTab</a>[k] = (rand() % 30000) / 30000.f;
+00076 }
+00077 <span class="comment">//#ifdef NL_DEBUG</span>
+00078 <a class="code" href="a03249.html#NL3D_1_1CPSUtilv3">_PerlinNoiseTableInitialized</a> = <span class="keyword">true</span>;
+00079 <span class="comment">//#endif</span>
+00080 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtile14" doxytag="NL3D::CPSUtil::print" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::print </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">NL3D::IDriver</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>driver</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const std::string &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>text</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02541.html">CFontGenerator</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>fg</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02542.html">CFontManager</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>fm</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>pos</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>size</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03337.html">NLMISC::CRGBA</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>col</em> = <a class="el" href="a03337.html#NLMISC_1_1CRGBAs6">NLMISC::CRGBA::White</a></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+display a string at the given world position. The The model matrix must be restored after this call
+<p>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00235">235</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+References <a class="el" href="a02434.html#NL3D_1_1IDrivera34">NL3D::IDriver::getViewMatrix()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05595.html#l00151">NL3D::CComputedString::render3D()</a>, <a class="el" href="a05972.html#l00644">NLMISC::CMatrix::scale()</a>, <a class="el" href="a05972.html#l00267">NLMISC::CMatrix::setPos()</a>, <a class="el" href="a05646.html#l00645">size</a>, and <a class="el" href="a05972.html#l00935">NLMISC::CMatrix::transpose()</a>.
+<p>
+<div class="fragment"><pre>00236 {
+00237 <a class="code" href="a04199.html#a6">nlassert</a>((&amp;fg) &amp;&amp; (&amp;fm));
+00238 CComputedString cptedString;
+00239 fm.computeString ( text,
+00240 &amp;fg,
+00241 col,
+00242 16,
+00243 driver,
+00244 cptedString);
+00245
+00246
+00247 CMatrix mat = driver-&gt;<a class="code" href="a02434.html#NL3D_1_1IDrivera34">getViewMatrix</a>();
+00248 mat.setPos(CVector::Null);
+00249 mat.scale(CVector(size, size, size));
+00250 mat.transpose();
+00251 mat.setPos(pos);
+00252 cptedString.render3D(*driver, mat);
+00253 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtilh2" doxytag="NL3D::CPSUtil::registerAttribs" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::registerAttribs </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [static, private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06264.html#l00040">40</a> of file <a class="el" href="a06264.html">ps_register_attribs.cpp</a>.
+<p>
+References <a class="el" href="a06223.html#l00058">NL3D::PSRegisterColorAttribs()</a>, <a class="el" href="a06237.html#l00203">NL3D::PSRegisterFloatAttribs()</a>, <a class="el" href="a06241.html#l00054">NL3D::PSRegisterIntAttribs()</a>, and <a class="el" href="a06260.html#l00357">NL3D::PSRegisterPlaneBasisAttribs()</a>.
+<p>
+Referenced by <a class="el" href="a06285.html#l00097">registerSerialParticleSystem()</a>.
+<p>
+<div class="fragment"><pre>00041 {
+00042 <a class="code" href="a05363.html#a489">PSRegisterIntAttribs</a>();
+00043 <a class="code" href="a05363.html#a487">PSRegisterFloatAttribs</a>();
+00044 <a class="code" href="a05363.html#a478">PSRegisterColorAttribs</a>();
+00045 <a class="code" href="a05363.html#a505">PSRegisterPlaneBasisAttribs</a>();
+00046 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtilh3" doxytag="NL3D::CPSUtil::registerEmitters" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::registerEmitters </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [static, private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06266.html#l00035">35</a> of file <a class="el" href="a06266.html">ps_register_emitters.cpp</a>.
+<p>
+References <a class="el" href="a05550.html#l00120">NLMISC_REGISTER_CLASS</a>.
+<p>
+Referenced by <a class="el" href="a06285.html#l00097">registerSerialParticleSystem()</a>.
+<p>
+<div class="fragment"><pre>00036 {
+00037 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSEmitterOmni);
+00038 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSEmitterDirectionnal);
+00039 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSEmitterRectangle);
+00040 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSEmitterConic);
+00041 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSSphericalEmitter);
+00042 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSRadialEmitter);
+00043
+00044 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtilh4" doxytag="NL3D::CPSUtil::registerForces" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::registerForces </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [static, private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06268.html#l00035">35</a> of file <a class="el" href="a06268.html">ps_register_forces.cpp</a>.
+<p>
+References <a class="el" href="a05550.html#l00120">NLMISC_REGISTER_CLASS</a>.
+<p>
+Referenced by <a class="el" href="a06285.html#l00097">registerSerialParticleSystem()</a>.
+<p>
+<div class="fragment"><pre>00036 {
+00037 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSSpring);
+00038 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSDirectionnalForce);
+00039 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSGravity);
+00040 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSBrownianForce);
+00041 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSCentralGravity);
+00042 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSFluidFriction);
+00043 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSTurbul);
+00044 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSCylindricVortex);
+00045 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSMagneticForce);
+00046 CPSBrownianForce::initPrecalc();
+00047 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtilh5" doxytag="NL3D::CPSUtil::registerParticles" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::registerParticles </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [static, private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06270.html#l00036">36</a> of file <a class="el" href="a06270.html">ps_register_particles.cpp</a>.
+<p>
+References <a class="el" href="a05550.html#l00120">NLMISC_REGISTER_CLASS</a>.
+<p>
+Referenced by <a class="el" href="a06285.html#l00097">registerSerialParticleSystem()</a>.
+<p>
+<div class="fragment"><pre>00037 {
+00038 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSFanLight);
+00039 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSTailDot);
+00040 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSRibbon);
+00041 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSRibbonLookAt);
+00042 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSShockWave);
+00043 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSFace);
+00044 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSMesh);
+00045 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSConstraintMesh);
+00046 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSDot);
+00047 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSFaceLookAt);
+00048
+00049 CPSRotated2DParticle::initRotTable(); <span class="comment">// init the precalc rot table for face lookat</span>
+00050 CPSFanLight::initFanLightPrecalc();
+00051 CPSDot::initVertexBuffers();
+00052 CPSQuad::initVertexBuffers();
+00053 CPSConstraintMesh::initPrerotVB();
+00054 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtile15" doxytag="NL3D::CPSUtil::registerSerialParticleSystem" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::registerSerialParticleSystem </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+register the classes of the system mus be called when serializing
+<p>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00097">97</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+References <a class="el" href="a06285.html#l00083">initFastCosNSinTable()</a>, <a class="el" href="a06285.html#l00071">initPerlinNoiseTable()</a>, <a class="el" href="a05550.html#l00120">NLMISC_REGISTER_CLASS</a>, <a class="el" href="a06264.html#l00040">registerAttribs()</a>, <a class="el" href="a06266.html#l00035">registerEmitters()</a>, <a class="el" href="a06268.html#l00035">registerForces()</a>, <a class="el" href="a06270.html#l00036">registerParticles()</a>, and <a class="el" href="a06272.html#l00035">registerZones()</a>.
+<p>
+<div class="fragment"><pre>00098 {
+00099 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSLocated);
+00100 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CParticleSystemShape);
+00101 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSSound);
+00102 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSLight);
+00103
+00104
+00105 <a class="code" href="a03249.html#NL3D_1_1CPSUtilh5">registerParticles</a>();
+00106 <a class="code" href="a03249.html#NL3D_1_1CPSUtilh4">registerForces</a>();
+00107 <a class="code" href="a03249.html#NL3D_1_1CPSUtilh3">registerEmitters</a>();
+00108 <a class="code" href="a03249.html#NL3D_1_1CPSUtilh6">registerZones</a>();
+00109 <a class="code" href="a03249.html#NL3D_1_1CPSUtilh2">registerAttribs</a>();
+00110
+00111
+00112 <span class="comment">// while we are here, we perform some important inits </span>
+00113 <a class="code" href="a03249.html#NL3D_1_1CPSUtile12">initFastCosNSinTable</a>(); <span class="comment">// init fast cosine lookup table</span>
+00114 <a class="code" href="a03249.html#NL3D_1_1CPSUtile13">initPerlinNoiseTable</a>(); <span class="comment">// init perlin noise table </span>
+00115 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtilh6" doxytag="NL3D::CPSUtil::registerZones" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSUtil::registerZones </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [static, private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06272.html#l00035">35</a> of file <a class="el" href="a06272.html">ps_register_zones.cpp</a>.
+<p>
+References <a class="el" href="a05550.html#l00120">NLMISC_REGISTER_CLASS</a>.
+<p>
+Referenced by <a class="el" href="a06285.html#l00097">registerSerialParticleSystem()</a>.
+<p>
+<div class="fragment"><pre>00036 {
+00037 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSZonePlane);
+00038 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSZoneSphere);
+00039 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSZoneDisc);
+00040 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSZoneRectangle);
+00041 <a class="code" href="a04127.html#a1">NLMISC_REGISTER_CLASS</a>(CPSZoneCylinder);
+00042 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="NL3D_1_1CPSUtilv0" doxytag="NL3D::CPSUtil::_CosTable" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float <a class="el" href="a03249.html#NL3D_1_1CPSUtilv0">NL3D::CPSUtil::_CosTable</a><code> [static, private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00063">63</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+Referenced by <a class="el" href="a06286.html#l00122">getCos()</a>, and <a class="el" href="a06285.html#l00083">initFastCosNSinTable()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtilv1" doxytag="NL3D::CPSUtil::_CosTableInitialized" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool <a class="el" href="a03249.html#NL3D_1_1CPSUtilv1">NL3D::CPSUtil::_CosTableInitialized</a> = false<code> [static, private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00059">59</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+Referenced by <a class="el" href="a06286.html#l00122">getCos()</a>, <a class="el" href="a06286.html#l00131">getSin()</a>, and <a class="el" href="a06285.html#l00083">initFastCosNSinTable()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtilv2" doxytag="NL3D::CPSUtil::_PerlinNoiseTab" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float <a class="el" href="a03249.html#NL3D_1_1CPSUtilv2">NL3D::CPSUtil::_PerlinNoiseTab</a><code> [static, private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00065">65</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+Referenced by <a class="el" href="a06286.html#l00186">getPerlinNoise()</a>, and <a class="el" href="a06285.html#l00071">initPerlinNoiseTable()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtilv3" doxytag="NL3D::CPSUtil::_PerlinNoiseTableInitialized" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool <a class="el" href="a03249.html#NL3D_1_1CPSUtilv3">NL3D::CPSUtil::_PerlinNoiseTableInitialized</a> = false<code> [static, private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00060">60</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+Referenced by <a class="el" href="a06286.html#l00238">buildPerlinNoise()</a>, and <a class="el" href="a06285.html#l00071">initPerlinNoiseTable()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSUtilv4" doxytag="NL3D::CPSUtil::_SinTable" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float <a class="el" href="a03249.html#NL3D_1_1CPSUtilv4">NL3D::CPSUtil::_SinTable</a><code> [static, private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06285.html#l00064">64</a> of file <a class="el" href="a06285.html">ps_util.cpp</a>.
+<p>
+Referenced by <a class="el" href="a06286.html#l00131">getSin()</a>, and <a class="el" href="a06285.html#l00083">initFastCosNSinTable()</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following files:<ul>
+<li><a class="el" href="a06286.html">ps_util.h</a><li><a class="el" href="a06264.html">ps_register_attribs.cpp</a><li><a class="el" href="a06266.html">ps_register_emitters.cpp</a><li><a class="el" href="a06268.html">ps_register_forces.cpp</a><li><a class="el" href="a06270.html">ps_register_particles.cpp</a><li><a class="el" href="a06272.html">ps_register_zones.cpp</a><li><a class="el" href="a06285.html">ps_util.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 07:29: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>