aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a02317.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/doxygen/nel/a02317.html')
-rw-r--r--docs/doxygen/nel/a02317.html940
1 files changed, 940 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a02317.html b/docs/doxygen/nel/a02317.html
new file mode 100644
index 00000000..ac95a104
--- /dev/null
+++ b/docs/doxygen/nel/a02317.html
@@ -0,0 +1,940 @@
+<!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::CCameraCol 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&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::CCameraCol Class Reference</h1><code>#include &lt;<a class="el" href="a05533.html">camera_col.h</a>&gt;</code>
+<p>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+A tool class used to compute differents info for camera collision <dl compact><dt><b>Author:</b></dt><dd>Lionel Berenguier <p>
+Nevrax France </dd></dl>
+<dl compact><dt><b>Date:</b></dt><dd>2003 </dd></dl>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05533.html#l00044">44</a> of file <a class="el" href="a05533.html">camera_col.h</a>.<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>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="a02317.html#NL3D_1_1CCameraCola0">build</a> (const <a class="el" href="a03128.html">CVector</a> &amp;start, const <a class="el" href="a03128.html">CVector</a> &amp;end, float radius, bool cone)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraCola1">CCameraCol</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraCola2">minimizeDistanceAgainstTri</a> (const <a class="el" href="a03128.html">CVector</a> &amp;p0, const <a class="el" href="a03128.html">CVector</a> &amp;p1, const <a class="el" href="a03128.html">CVector</a> &amp;p2, float &amp;sqrMinDist)</td></tr>
+
+<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02156.html">NLMISC::CAABBox</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraColo0">BBox</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraColo1">Cone</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03128.html">CVector</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraColo2">End</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraColo3">Radius</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03128.html">CVector</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraColo4">Start</a></td></tr>
+
+<tr><td colspan=2><br><h2>Private Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>enum &nbsp;</td><td class="memItemRight" valign=bottom>{ <a class="el" href="a02317.html#NL3D_1_1CCameraColy0NL3D_1_1CCameraColy1">MaxNPlanes</a> = 6
+ }</td></tr>
+
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03128.html">CVector</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraColr0">_ArrayIn</a> [3+MaxNPlanes]</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03128.html">CVector</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraColr1">_ArrayOut</a> [3+MaxNPlanes]</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraColr2">_MaxRadius</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraColr3">_MaxRadiusProj</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraColr4">_MinRadiusProj</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraColr5">_NPlanes</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraColr6">_OODeltaRadiusProj</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03082.html">NLMISC::CPlane</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraColr7">_Pyramid</a> [MaxNPlanes]</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraColr8">_RayLen</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03128.html">CVector</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02317.html#NL3D_1_1CCameraColr9">_RayNorm</a></td></tr>
+
+</table>
+<hr><h2>Member Enumeration Documentation</h2>
+<a class="anchor" name="NL3D_1_1CCameraColy0" doxytag="NL3D::CCameraCol::@7" ></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"> anonymous enum<code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Enumeration values: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1CCameraColy0NL3D_1_1CCameraColy1" doxytag="MaxNPlanes" ></a>MaxNPlanes</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05533.html#l00070">70</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+<div class="fragment"><pre>00070 {<a class="code" href="a02317.html#NL3D_1_1CCameraColy0NL3D_1_1CCameraColy1">MaxNPlanes</a>=6};
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="NL3D_1_1CCameraCola1" doxytag="NL3D::CCameraCol::CCameraCol" ></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"> NL3D::CCameraCol::CCameraCol </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05532.html#l00043">43</a> of file <a class="el" href="a05532.html">camera_col.cpp</a>.
+<p>
+<div class="fragment"><pre>00044 {
+00045 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="NL3D_1_1CCameraCola0" doxytag="NL3D::CCameraCol::build" ></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::CCameraCol::build </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">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">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>end</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>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>cone</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05532.html#l00048">48</a> of file <a class="el" href="a05532.html">camera_col.cpp</a>.
+<p>
+References <a class="el" href="a05533.html#l00081">_MaxRadius</a>, <a class="el" href="a05533.html#l00084">_MaxRadiusProj</a>, <a class="el" href="a05533.html#l00083">_MinRadiusProj</a>, <a class="el" href="a05533.html#l00078">_NPlanes</a>, <a class="el" href="a05533.html#l00085">_OODeltaRadiusProj</a>, <a class="el" href="a05533.html#l00077">_Pyramid</a>, <a class="el" href="a05533.html#l00086">_RayLen</a>, <a class="el" href="a05533.html#l00087">_RayNorm</a>, <a class="el" href="a05533.html#l00057">BBox</a>, <a class="el" href="a05533.html#l00054">Cone</a>, <a class="el" href="a05533.html#l00050">End</a>, <a class="el" href="a05384.html#l00215">NLMISC::CAABBox::extend()</a>, <a class="el" href="a05385.html#l00091">NLMISC::CAABBox::getHalfSize()</a>, <a class="el" href="a06170.html#l00036">NLMISC::CPlane::make()</a>, <a class="el" href="a05532.html#l00038">NL3D::NL3D_CameraSmoothRadiusFactor</a>, <a class="el" href="a05972.html#l01170">NLMISC::CMatrix::normalize()</a>, <a class="el" href="a06682.html#l00125">NLMISC::CVector::normed()</a>, <a class="el" href="a05533.html#l00052">Radius</a>, <a class="el" href="a05385.html#l00066">NLMISC::CAABBox::setCenter()</a>, <a class="el" href="a05385.html#l00067">NLMISC::CAABBox::setHalfSize()</a>, <a class="el" href="a05972.html#l00267">NLMISC::CMatrix::setPos()</a>, <a class="el" href="a05972.html#l00209">NLMISC::CMatrix::setRot()</a>, and <a class="el" href="a05533.html#l00048">Start</a>.
+<p>
+Referenced by <a class="el" href="a06729.html#l00144">NL3D::CVisualCollisionManager::getCameraCollision()</a>, and <a class="el" href="a06374.html#l00308">NL3D::CShadowPolyReceiver::getCameraCollision()</a>.
+<p>
+<div class="fragment"><pre>00049 {
+00050 <span class="comment">// copy</span>
+00051 <a class="code" href="a02317.html#NL3D_1_1CCameraColo4">Start</a>= start;
+00052 <a class="code" href="a02317.html#NL3D_1_1CCameraColo2">End</a>= end;
+00053 <a class="code" href="a02317.html#NL3D_1_1CCameraColo3">Radius</a>= radius;
+00054 <a class="code" href="a02317.html#NL3D_1_1CCameraColo1">Cone</a>= cone;
+00055
+00056 <span class="comment">// For camera smoothing</span>
+00057 <span class="keywordtype">float</span> maxRadiusFactor= <a class="code" href="a05363.html#a8">NL3D_CameraSmoothRadiusFactor</a>;
+00058
+00059 <span class="comment">// not a Cone? =&gt; no smoothing</span>
+00060 <span class="keywordflow">if</span>(!<a class="code" href="a02317.html#NL3D_1_1CCameraColo1">Cone</a>)
+00061 maxRadiusFactor= 1;
+00062
+00063 <span class="comment">// **** Compute Camera smooth infos</span>
+00064 <a class="code" href="a02317.html#NL3D_1_1CCameraColr2">_MaxRadius</a>= radius * maxRadiusFactor;
+00065 <a class="code" href="a02317.html#NL3D_1_1CCameraColr4">_MinRadiusProj</a>= <a class="code" href="a02317.html#NL3D_1_1CCameraColo3">Radius</a> / (end-start).norm();
+00066 <a class="code" href="a02317.html#NL3D_1_1CCameraColr3">_MaxRadiusProj</a>= <a class="code" href="a02317.html#NL3D_1_1CCameraColr2">_MaxRadius</a> / (end-start).norm();
+00067 <a class="code" href="a02317.html#NL3D_1_1CCameraColr9">_RayNorm</a>= (end-start).normed();
+00068 <a class="code" href="a02317.html#NL3D_1_1CCameraColr8">_RayLen</a>= (end-start).norm();
+00069 <a class="code" href="a02317.html#NL3D_1_1CCameraColr6">_OODeltaRadiusProj</a>= 0;
+00070 <span class="keywordflow">if</span>(<a class="code" href="a02317.html#NL3D_1_1CCameraColr3">_MaxRadiusProj</a>&gt;<a class="code" href="a02317.html#NL3D_1_1CCameraColr4">_MinRadiusProj</a>)
+00071 <a class="code" href="a02317.html#NL3D_1_1CCameraColr6">_OODeltaRadiusProj</a>= 1.f / (<a class="code" href="a02317.html#NL3D_1_1CCameraColr3">_MaxRadiusProj</a>-<a class="code" href="a02317.html#NL3D_1_1CCameraColr4">_MinRadiusProj</a>);
+00072
+00073 <span class="comment">// **** build the pyramid, with MaxRadius</span>
+00074 <span class="comment">// approximate with a box</span>
+00075 CMatrix mat;
+00076 <span class="comment">// Precision note: make the pyramid local to Start</span>
+00077 mat.setRot(CVector::I, (start-end).normed(), CVector::K);
+00078 mat.normalize(CMatrix::YZX);
+00079 <span class="comment">// build the start 4 points</span>
+00080 CVector ps[4];
+00081 <span class="comment">// cone or cylinder?</span>
+00082 <span class="keywordflow">if</span>(cone)
+00083 {
+00084 <a class="code" href="a02317.html#NL3D_1_1CCameraColr5">_NPlanes</a>= 5;
+00085 <span class="comment">// local to start!</span>
+00086 ps[0]= CVector::Null;
+00087 ps[1]= CVector::Null;
+00088 ps[2]= CVector::Null;
+00089 ps[3]= CVector::Null;
+00090 }
+00091 <span class="keywordflow">else</span>
+00092 {
+00093 <a class="code" href="a02317.html#NL3D_1_1CCameraColr5">_NPlanes</a>= 6;
+00094 <span class="comment">// local to start!</span>
+00095 ps[0]= mat * CVector(_MaxRadius, 0, -_MaxRadius);
+00096 ps[1]= mat * CVector(_MaxRadius, 0, _MaxRadius);
+00097 ps[2]= mat * CVector(-_MaxRadius, 0, _MaxRadius);
+00098 ps[3]= mat * CVector(-_MaxRadius, 0, -_MaxRadius);
+00099 }
+00100 <span class="comment">// build the end 4 points</span>
+00101 CVector pe[4];
+00102 <span class="comment">// local to start!</span>
+00103 mat.setPos(end-start);
+00104 pe[0]= mat * CVector(_MaxRadius, 0, -_MaxRadius);
+00105 pe[1]= mat * CVector(_MaxRadius, 0, _MaxRadius);
+00106 pe[2]= mat * CVector(-_MaxRadius, 0, _MaxRadius);
+00107 pe[3]= mat * CVector(-_MaxRadius, 0, -_MaxRadius);
+00108 <span class="comment">// try to roder for optimisation</span>
+00109 <span class="comment">// left/right</span>
+00110 <a class="code" href="a02317.html#NL3D_1_1CCameraColr7">_Pyramid</a>[0].<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a>(ps[3], pe[3], pe[2]);
+00111 <a class="code" href="a02317.html#NL3D_1_1CCameraColr7">_Pyramid</a>[1].<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a>(ps[1], pe[1], pe[0]);
+00112 <span class="comment">// back</span>
+00113 <a class="code" href="a02317.html#NL3D_1_1CCameraColr7">_Pyramid</a>[2].<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a>(pe[0], pe[1], pe[2]);
+00114 <span class="comment">// top-bottom</span>
+00115 <a class="code" href="a02317.html#NL3D_1_1CCameraColr7">_Pyramid</a>[3].<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a>(ps[2], pe[2], pe[1]);
+00116 <a class="code" href="a02317.html#NL3D_1_1CCameraColr7">_Pyramid</a>[4].<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a>(ps[0], pe[0], pe[3]);
+00117 <span class="comment">// front if not cone</span>
+00118 <span class="keywordflow">if</span>(!cone)
+00119 <a class="code" href="a02317.html#NL3D_1_1CCameraColr7">_Pyramid</a>[5].<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a>(ps[0], ps[2], ps[1]);
+00120
+00121 <span class="comment">// **** build the bbox</span>
+00122 <a class="code" href="a02317.html#NL3D_1_1CCameraColo0">BBox</a>.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1902_1">setCenter</a>(start);
+00123 <a class="code" href="a02317.html#NL3D_1_1CCameraColo0">BBox</a>.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxExtz1902_0">extend</a>(end);
+00124 <span class="comment">// enlarge a bit for radius</span>
+00125 <a class="code" href="a02317.html#NL3D_1_1CCameraColo0">BBox</a>.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1902_2">setHalfSize</a>(<a class="code" href="a02317.html#NL3D_1_1CCameraColo0">BBox</a>.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_1">getHalfSize</a>()+CVector(_MaxRadius, _MaxRadius, _MaxRadius));
+00126
+00127 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CCameraCola2" doxytag="NL3D::CCameraCol::minimizeDistanceAgainstTri" ></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::CCameraCol::minimizeDistanceAgainstTri </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>p0</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>p1</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>p2</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>sqrMinDist</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+compute the intersection of the Camera Volume against the triangle, and minimize minDist (actual square of distance) with min sqr distance of the poly.
+<p>
+Definition at line <a class="el" href="a05532.html#l00131">131</a> of file <a class="el" href="a05532.html">camera_col.cpp</a>.
+<p>
+References <a class="el" href="a05533.html#l00073">_ArrayIn</a>, <a class="el" href="a05533.html#l00074">_ArrayOut</a>, <a class="el" href="a05533.html#l00084">_MaxRadiusProj</a>, <a class="el" href="a05533.html#l00083">_MinRadiusProj</a>, <a class="el" href="a05533.html#l00078">_NPlanes</a>, <a class="el" href="a05533.html#l00085">_OODeltaRadiusProj</a>, <a class="el" href="a05533.html#l00077">_Pyramid</a>, <a class="el" href="a05533.html#l00086">_RayLen</a>, <a class="el" href="a05533.html#l00087">_RayNorm</a>, <a class="el" href="a05587.html#l00115">NLMISC::clamp()</a>, <a class="el" href="a06170.html#l00097">NLMISC::CPlane::clipPolygonBack()</a>, <a class="el" href="a06171.html#l00052">NLMISC::CPlane::d</a>, <a class="el" href="a06172.html#l00035">NLMISC::CPlane::getNormal()</a>, <a class="el" href="a06170.html#l00036">NLMISC::CPlane::make()</a>, <a class="el" href="a02317.html#NL3D_1_1CCameraColy0NL3D_1_1CCameraColy1">MaxNPlanes</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a05532.html#l00040">NL3D::NL3D_CameraSmoothNumAngleSample</a>, <a class="el" href="a05532.html#l00039">NL3D::NL3D_CameraSmoothNumZSample</a>, <a class="el" href="a06682.html#l00115">NLMISC::CVector::norm()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05587.html#l00107">NLMISC::sqr()</a>, <a class="el" href="a06682.html#l00111">NLMISC::CVector::sqrnorm()</a>, <a class="el" href="a05533.html#l00048">Start</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05646.html#l00236">z</a>.
+<p>
+Referenced by <a class="el" href="a06729.html#l00330">NL3D::CVisualCollisionManager::CMeshCol::getCameraCollision()</a>, and <a class="el" href="a06374.html#l00308">NL3D::CShadowPolyReceiver::getCameraCollision()</a>.
+<p>
+<div class="fragment"><pre>00132 {
+00133 CVector *pIn= <a class="code" href="a02317.html#NL3D_1_1CCameraColr0">_ArrayIn</a>;
+00134 CVector *pOut= <a class="code" href="a02317.html#NL3D_1_1CCameraColr1">_ArrayOut</a>;
+00135
+00136 <span class="comment">// **** clip triangle against the pyramid</span>
+00137 <span class="comment">// build the triangle, local to start for precision problems</span>
+00138 pIn[0]= p0 - <a class="code" href="a02317.html#NL3D_1_1CCameraColo4">Start</a>;
+00139 pIn[1]= p1 - <a class="code" href="a02317.html#NL3D_1_1CCameraColo4">Start</a>;
+00140 pIn[2]= p2 - <a class="code" href="a02317.html#NL3D_1_1CCameraColo4">Start</a>;
+00141 <a class="code" href="a04558.html#a14">sint</a> nVert= 3;
+00142 <span class="comment">// clip</span>
+00143 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0;i&lt;<a class="code" href="a02317.html#NL3D_1_1CCameraColr5">_NPlanes</a>;i++)
+00144 {
+00145 nVert= <a class="code" href="a02317.html#NL3D_1_1CCameraColr7">_Pyramid</a>[i].<a class="code" href="a03082.html#NLMISC_1_1CPlanez1992_0">clipPolygonBack</a>(pIn, pOut, nVert);
+00146 swap(pIn, pOut);
+00147 <span class="keywordflow">if</span>(!nVert)
+00148 <span class="keywordflow">break</span>;
+00149 }
+00150
+00151 <span class="comment">// **** if clipped =&gt; collision</span>
+00152 <span class="keywordflow">if</span>(nVert)
+00153 {
+00154 <span class="comment">/*</span>
+00155 <span class="comment"> Polygon nearest distance to a point is:</span>
+00156 <span class="comment"> - the nearest distance of all vertices</span>
+00157 <span class="comment"> - or the nearest distance to the plane (if the project lies in the polygon)</span>
+00158 <span class="comment"> - or the nearest distance to each edge</span>
+00159 <span class="comment"></span>
+00160 <span class="comment"> NB: testing only points works with low radius, but may fails in general case</span>
+00161 <span class="comment"> */</span>
+00162
+00163 <span class="comment">// compute first the poly min distance</span>
+00164 <span class="keywordtype">float</span> sqrPolyMinDist= FLT_MAX;
+00165
+00166 <span class="comment">// **** get the nearest distance for all points (avoid precision problem if doing only edge ones)</span>
+00167 <a class="code" href="a04558.html#a14">sint</a> i;
+00168 <span class="keywordflow">for</span>(i=0;i&lt;nVert;i++)
+00169 {
+00170 <span class="comment">// NB: pIn[i] is already local to start</span>
+00171 <span class="keywordtype">float</span> sqrDist= pIn[i].sqrnorm();
+00172 <span class="keywordflow">if</span>(sqrDist&lt;sqrPolyMinDist)
+00173 sqrPolyMinDist= sqrDist;
+00174 }
+00175
+00176 <span class="comment">// **** get the nearest distance of the Start against each edge</span>
+00177 <span class="keywordflow">for</span>(i=0;i&lt;nVert;i++)
+00178 {
+00179 <span class="keyword">const</span> CVector &amp;v0= pIn[i];
+00180 <span class="keyword">const</span> CVector &amp;v1= pIn[(i+1)%nVert];
+00181 CVector vDir= v1-v0;
+00182 <span class="comment">// project on line</span>
+00183 <span class="keywordtype">float</span> fLen= vDir.sqrnorm(); <span class="comment">// same as vDir * (v1 - v0)</span>
+00184 <span class="comment">// NB: Project CVector::Null, since we are local to start here!</span>
+00185 <span class="keywordtype">float</span> fStart= vDir * (-v0);
+00186 <span class="comment">// if start projection in the edge</span>
+00187 <span class="keywordflow">if</span>(fStart&gt;0 &amp;&amp; fStart&lt;fLen)
+00188 {
+00189 <span class="comment">// compute distance to line</span>
+00190 CVector proj= v0 + (fStart / fLen) * vDir;
+00191 <span class="comment">// proj is local to Start</span>
+00192 <span class="keywordtype">float</span> sqrDist= proj.sqrnorm();
+00193 <span class="keywordflow">if</span>(sqrDist&lt;sqrPolyMinDist)
+00194 sqrPolyMinDist= sqrDist;
+00195 }
+00196 }
+00197
+00198 <span class="comment">// **** get the nearest distance of the Start against the plane</span>
+00199 <span class="comment">// get the plane local to start</span>
+00200 CPlane plane;
+00201 plane.make(p0-Start, p1-Start, p2-Start);
+00202 <span class="comment">// plane * StartLocalToStart == plane * CVector::Null == plane.d !</span>
+00203 <span class="keywordtype">float</span> planeDist= plane.d;
+00204 <span class="comment">// need to do the poly inclusion test only if the plane dist is better than the vertices</span>
+00205 <span class="keywordtype">float</span> sqrPlaneDist= <a class="code" href="a05378.html#a373">sqr</a>(planeDist);
+00206 <span class="keywordflow">if</span>(sqrPlaneDist &lt; sqrPolyMinDist)
+00207 {
+00208 CVector normal= plane.getNormal();
+00209
+00210 <span class="comment">// the projection of Start on the plane: StartLocalToStart + </span>
+00211 CVector proj= planeDist * normal;
+00212 <span class="comment">// test poly inclusion</span>
+00213 <a class="code" href="a04558.html#a14">sint</a> sign= 0;
+00214 <span class="keywordflow">for</span>(i=0;i&lt;nVert;i++)
+00215 {
+00216 <span class="keyword">const</span> CVector &amp;v0= pIn[i];
+00217 <span class="keyword">const</span> CVector &amp;v1= pIn[(i+1)%nVert];
+00218 <span class="keywordtype">float</span> d = ((v1-v0)^normal)*(proj-v0);
+00219 <span class="keywordflow">if</span>(d&lt;0)
+00220 {
+00221 <span class="keywordflow">if</span>(sign==1) <span class="keywordflow">break</span>;
+00222 <span class="keywordflow">else</span> sign=-1;
+00223 }
+00224 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(d&gt;0)
+00225 {
+00226 <span class="keywordflow">if</span>(sign==-1) <span class="keywordflow">break</span>;
+00227 <span class="keywordflow">else</span> sign=1;
+00228 }
+00229 <span class="keywordflow">else</span>
+00230 <span class="keywordflow">break</span>;
+00231 }
+00232
+00233 <span class="comment">// if succeed, minimize</span>
+00234 <span class="keywordflow">if</span>(i==nVert)
+00235 sqrPolyMinDist= sqrPlaneDist;
+00236 }
+00237
+00238 <span class="comment">// **** Camera Smoothing: modulate according to angle of poly against cone</span>
+00239 <span class="comment">// Camera smooth not enabled?</span>
+00240 <span class="keywordflow">if</span>(<a class="code" href="a02317.html#NL3D_1_1CCameraColr3">_MaxRadiusProj</a>&lt;=<a class="code" href="a02317.html#NL3D_1_1CCameraColr4">_MinRadiusProj</a>)
+00241 {
+00242 <span class="comment">// then just take minum</span>
+00243 <span class="keywordflow">if</span>(sqrPolyMinDist&lt;sqrMinDist)
+00244 sqrMinDist= sqrPolyMinDist;
+00245 }
+00246 <span class="comment">// Camera Smooth mode. if the unmodulated distance is lower than the current minDist, </span>
+00247 <span class="comment">// then this poly may be interesting, else don't have a chance</span>
+00248 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(sqrPolyMinDist&lt;sqrMinDist)
+00249 {
+00250 <span class="keywordtype">float</span> sampleZSize= <a class="code" href="a02317.html#NL3D_1_1CCameraColr8">_RayLen</a> / <a class="code" href="a05363.html#a9">NL3D_CameraSmoothNumZSample</a>;
+00251 <span class="keywordtype">float</span> sampleProjSize= 2*<a class="code" href="a02317.html#NL3D_1_1CCameraColr3">_MaxRadiusProj</a> / <a class="code" href="a05363.html#a10">NL3D_CameraSmoothNumAngleSample</a>;
+00252
+00253 <span class="comment">// **** Compute num Subdivision required</span>
+00254 <span class="comment">// To compute the number of subdivision, let's take the max of 2 req:</span>
+00255 <span class="comment">// the subdivision in Z (for Distance part of the function)</span>
+00256 <span class="comment">// the subdivision in Projection (for angle part of the function)</span>
+00257
+00258 <span class="comment">// Project all vertices to the plane</span>
+00259 <span class="keyword">static</span> CVector pProj[3+<a class="code" href="a02317.html#NL3D_1_1CCameraColy0NL3D_1_1CCameraColy1">MaxNPlanes</a>];
+00260 <span class="keywordtype">float</span> minZ= <a class="code" href="a02317.html#NL3D_1_1CCameraColr8">_RayLen</a>;
+00261 <span class="keywordtype">float</span> maxZ= 0;
+00262 <span class="keywordflow">for</span>(i=0;i&lt;nVert;i++)
+00263 {
+00264 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a574">z</a>= pIn[i] * <a class="code" href="a02317.html#NL3D_1_1CCameraColr9">_RayNorm</a>;
+00265 minZ= <a class="code" href="a04061.html#a0">min</a>(minZ, z);
+00266 maxZ= max(maxZ, z);
+00267 <span class="comment">// cause of pyramid cliping, z should be &gt;=0</span>
+00268 <span class="keywordflow">if</span>(<a class="code" href="a04223.html#a574">z</a>&gt;0)
+00269 pProj[i]= pIn[i] / <a class="code" href="a04223.html#a574">z</a>;
+00270 <span class="keywordflow">else</span>
+00271 pProj[i]= CVector::Null;
+00272
+00273 <span class="comment">// make local</span>
+00274 pProj[i]-= _RayNorm;
+00275 }
+00276 <span class="comment">// Compute perimeter of projected poly</span>
+00277 <span class="keywordtype">float</span> perimeterProj= 0;
+00278 <span class="keywordflow">for</span>(i=0;i&lt;nVert;i++)
+00279 {
+00280 perimeterProj+= (pProj[(i+1)%nVert]-pProj[i]).norm();
+00281 }
+00282
+00283 <span class="comment">// compute the number of subdivision required on Z</span>
+00284 <a class="code" href="a04558.html#a15">uint</a> numSubdivZ= (<a class="code" href="a04558.html#a15">uint</a>)((maxZ-minZ) / sampleZSize);
+00285 <span class="comment">// suppose a full projected quad perimeter will require max samples</span>
+00286 <a class="code" href="a04558.html#a15">uint</a> numSubdivAngle= (<a class="code" href="a04558.html#a15">uint</a>)(perimeterProj / (4*sampleProjSize));
+00287 <span class="comment">// the number of subdivision</span>
+00288 <a class="code" href="a04558.html#a15">uint</a> numSubdiv= max(numSubdivZ, numSubdivAngle);
+00289 numSubdiv= max(numSubdiv, (<a class="code" href="a04558.html#a15">uint</a>)1);
+00290 <span class="keywordtype">float</span> ooNumSubdiv= 1.f / (<span class="keywordtype">float</span>)numSubdiv;
+00291
+00292 <span class="comment">// **** Sample the polygon, to compute the minimum of the function</span>
+00293 <span class="comment">// for each tri of the polygon</span>
+00294 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> tri=0;tri&lt;nVert-2;tri++)
+00295 {
+00296 CVector lp[3];
+00297 <span class="comment">// optim: prediv by numSubdiv</span>
+00298 lp[0]= pIn[0] * ooNumSubdiv;
+00299 lp[1]= pIn[tri+1] * ooNumSubdiv;
+00300 lp[2]= pIn[tri+2] * ooNumSubdiv;
+00301
+00302 <span class="comment">// sample using barycentric coordinates</span>
+00303 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0;i&lt;=numSubdiv;i++)
+00304 {
+00305 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> j=0;j&lt;=numSubdiv-i;j++)
+00306 {
+00307 <a class="code" href="a04558.html#a15">uint</a> k= numSubdiv - i - j;
+00308 CVector sample= lp[0] * (<span class="keywordtype">float</span>)i + lp[1] * (<span class="keywordtype">float</span>)j + lp[2] * (<span class="keywordtype">float</span>)k;
+00309
+00310 <span class="comment">// NB: sample is already local to start</span>
+00311 <span class="keywordtype">float</span> sqrDist= sample.sqrnorm();
+00312
+00313 <span class="comment">// **** get the point projection </span>
+00314 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a574">z</a>= sample * <a class="code" href="a02317.html#NL3D_1_1CCameraColr9">_RayNorm</a>;
+00315 CVector proj;
+00316 <span class="comment">// cause of pyramid cliping, z should be &gt;=0</span>
+00317 <span class="keywordflow">if</span>(<a class="code" href="a04223.html#a574">z</a>&gt;0)
+00318 proj= sample / <a class="code" href="a04223.html#a574">z</a>;
+00319 <span class="keywordflow">else</span>
+00320 proj= CVector::Null;
+00321 <span class="comment">// make local</span>
+00322 proj-= _RayNorm;
+00323
+00324 <span class="comment">// **** compute the Cone Linear factor (like a spot light)</span>
+00325 <span class="keywordtype">float</span> rayDist= proj.norm();
+00326 <span class="keywordtype">float</span> angleFactor= (rayDist-<a class="code" href="a02317.html#NL3D_1_1CCameraColr4">_MinRadiusProj</a>) * <a class="code" href="a02317.html#NL3D_1_1CCameraColr6">_OODeltaRadiusProj</a>;
+00327 <a class="code" href="a05378.html#a374">clamp</a>(angleFactor, 0.f, 1.f);
+00328 <span class="comment">// avoid C1 discontinuity when angleFactor==0</span>
+00329 angleFactor= <a class="code" href="a05378.html#a373">sqr</a>(angleFactor);
+00330
+00331 <span class="comment">// **** modulate, but to a bigger value! (ie raylen)</span>
+00332 sqrDist= _RayLen * angleFactor + sqrtf(sqrDist) * (1-angleFactor);
+00333 sqrDist= <a class="code" href="a05378.html#a373">sqr</a>(sqrDist);
+00334
+00335 <span class="comment">// if distance is lesser, take it</span>
+00336 <span class="keywordflow">if</span>(sqrDist&lt;sqrMinDist)
+00337 sqrMinDist= sqrDist;
+00338 }
+00339 }
+00340 }
+00341 }
+00342 }
+00343 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="NL3D_1_1CCameraColr0" doxytag="NL3D::CCameraCol::_ArrayIn" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03128.html">CVector</a> <a class="el" href="a02317.html#NL3D_1_1CCameraColr0">NL3D::CCameraCol::_ArrayIn</a>[3+MaxNPlanes]<code> [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="a05533.html#l00073">73</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+Referenced by <a class="el" href="a05532.html#l00131">minimizeDistanceAgainstTri()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CCameraColr1" doxytag="NL3D::CCameraCol::_ArrayOut" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03128.html">CVector</a> <a class="el" href="a02317.html#NL3D_1_1CCameraColr1">NL3D::CCameraCol::_ArrayOut</a>[3+MaxNPlanes]<code> [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="a05533.html#l00074">74</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+Referenced by <a class="el" href="a05532.html#l00131">minimizeDistanceAgainstTri()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CCameraColr2" doxytag="NL3D::CCameraCol::_MaxRadius" ></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="a02317.html#NL3D_1_1CCameraColr2">NL3D::CCameraCol::_MaxRadius</a><code> [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="a05533.html#l00081">81</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+Referenced by <a class="el" href="a05532.html#l00048">build()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CCameraColr3" doxytag="NL3D::CCameraCol::_MaxRadiusProj" ></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="a02317.html#NL3D_1_1CCameraColr3">NL3D::CCameraCol::_MaxRadiusProj</a><code> [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="a05533.html#l00084">84</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+Referenced by <a class="el" href="a05532.html#l00048">build()</a>, and <a class="el" href="a05532.html#l00131">minimizeDistanceAgainstTri()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CCameraColr4" doxytag="NL3D::CCameraCol::_MinRadiusProj" ></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="a02317.html#NL3D_1_1CCameraColr4">NL3D::CCameraCol::_MinRadiusProj</a><code> [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="a05533.html#l00083">83</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+Referenced by <a class="el" href="a05532.html#l00048">build()</a>, and <a class="el" href="a05532.html#l00131">minimizeDistanceAgainstTri()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CCameraColr5" doxytag="NL3D::CCameraCol::_NPlanes" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a15">uint</a> <a class="el" href="a02317.html#NL3D_1_1CCameraColr5">NL3D::CCameraCol::_NPlanes</a><code> [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="a05533.html#l00078">78</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+Referenced by <a class="el" href="a05532.html#l00048">build()</a>, and <a class="el" href="a05532.html#l00131">minimizeDistanceAgainstTri()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CCameraColr6" doxytag="NL3D::CCameraCol::_OODeltaRadiusProj" ></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="a02317.html#NL3D_1_1CCameraColr6">NL3D::CCameraCol::_OODeltaRadiusProj</a><code> [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="a05533.html#l00085">85</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+Referenced by <a class="el" href="a05532.html#l00048">build()</a>, and <a class="el" href="a05532.html#l00131">minimizeDistanceAgainstTri()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CCameraColr7" doxytag="NL3D::CCameraCol::_Pyramid" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03082.html">NLMISC::CPlane</a> <a class="el" href="a02317.html#NL3D_1_1CCameraColr7">NL3D::CCameraCol::_Pyramid</a>[MaxNPlanes]<code> [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="a05533.html#l00077">77</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+Referenced by <a class="el" href="a05532.html#l00048">build()</a>, and <a class="el" href="a05532.html#l00131">minimizeDistanceAgainstTri()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CCameraColr8" doxytag="NL3D::CCameraCol::_RayLen" ></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="a02317.html#NL3D_1_1CCameraColr8">NL3D::CCameraCol::_RayLen</a><code> [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="a05533.html#l00086">86</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+Referenced by <a class="el" href="a05532.html#l00048">build()</a>, and <a class="el" href="a05532.html#l00131">minimizeDistanceAgainstTri()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CCameraColr9" doxytag="NL3D::CCameraCol::_RayNorm" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03128.html">CVector</a> <a class="el" href="a02317.html#NL3D_1_1CCameraColr9">NL3D::CCameraCol::_RayNorm</a><code> [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="a05533.html#l00087">87</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+Referenced by <a class="el" href="a05532.html#l00048">build()</a>, and <a class="el" href="a05532.html#l00131">minimizeDistanceAgainstTri()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CCameraColo0" doxytag="NL3D::CCameraCol::BBox" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a02156.html">NLMISC::CAABBox</a> <a class="el" href="a02317.html#NL3D_1_1CCameraColo0">NL3D::CCameraCol::BBox</a>
+ </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="a05533.html#l00057">57</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+Referenced by <a class="el" href="a05532.html#l00048">build()</a>, <a class="el" href="a06729.html#l00330">NL3D::CVisualCollisionManager::CMeshCol::getCameraCollision()</a>, <a class="el" href="a06729.html#l00144">NL3D::CVisualCollisionManager::getCameraCollision()</a>, and <a class="el" href="a06374.html#l00308">NL3D::CShadowPolyReceiver::getCameraCollision()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CCameraColo1" doxytag="NL3D::CCameraCol::Cone" ></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="a02317.html#NL3D_1_1CCameraColo1">NL3D::CCameraCol::Cone</a>
+ </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="a05533.html#l00054">54</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+Referenced by <a class="el" href="a05532.html#l00048">build()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CCameraColo2" doxytag="NL3D::CCameraCol::End" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03128.html">CVector</a> <a class="el" href="a02317.html#NL3D_1_1CCameraColo2">NL3D::CCameraCol::End</a>
+ </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="a05533.html#l00050">50</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+Referenced by <a class="el" href="a05532.html#l00048">build()</a>, and <a class="el" href="a06729.html#l00330">NL3D::CVisualCollisionManager::CMeshCol::getCameraCollision()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CCameraColo3" doxytag="NL3D::CCameraCol::Radius" ></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="a02317.html#NL3D_1_1CCameraColo3">NL3D::CCameraCol::Radius</a>
+ </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="a05533.html#l00052">52</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+Referenced by <a class="el" href="a05532.html#l00048">build()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CCameraColo4" doxytag="NL3D::CCameraCol::Start" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03128.html">CVector</a> <a class="el" href="a02317.html#NL3D_1_1CCameraColo4">NL3D::CCameraCol::Start</a>
+ </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="a05533.html#l00048">48</a> of file <a class="el" href="a05533.html">camera_col.h</a>.
+<p>
+Referenced by <a class="el" href="a05532.html#l00048">build()</a>, <a class="el" href="a06729.html#l00330">NL3D::CVisualCollisionManager::CMeshCol::getCameraCollision()</a>, and <a class="el" href="a05532.html#l00131">minimizeDistanceAgainstTri()</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="a05533.html">camera_col.h</a><li><a class="el" href="a05532.html">camera_col.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 06:44:52 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>