diff options
Diffstat (limited to '')
-rw-r--r-- | docs/doxygen/nel/a02317.html | 940 |
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 Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related Pages</a> | <span class="search"><u>S</u>earch for <input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div> +<h1>NL3D::CCameraCol Class Reference</h1><code>#include <<a class="el" href="a05533.html">camera_col.h</a>></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 </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> &start, const <a class="el" href="a03128.html">CVector</a> &end, float radius, bool cone)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top> </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 </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> &p0, const <a class="el" href="a03128.html">CVector</a> &p1, const <a class="el" href="a03128.html">CVector</a> &p2, float &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> </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 </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> </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 </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> </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 </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> </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> </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 </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 </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 </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> </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 </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> </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 </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> </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> + + </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> </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 & 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">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="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">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> & </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> & </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 </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 </td> + <td class="mdname" nowrap> <em>cone</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="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? => 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>><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">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> & </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> & </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> & </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 & </td> + <td class="mdname" nowrap> <em>sqrMinDist</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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<<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 => 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<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<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<nVert;i++) +00178 { +00179 <span class="keyword">const</span> CVector &v0= pIn[i]; +00180 <span class="keyword">const</span> CVector &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>0 && fStart<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<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 < 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<nVert;i++) +00215 { +00216 <span class="keyword">const</span> CVector &v0= pIn[i]; +00217 <span class="keyword">const</span> CVector &v1= pIn[(i+1)%nVert]; +00218 <span class="keywordtype">float</span> d = ((v1-v0)^normal)*(proj-v0); +00219 <span class="keywordflow">if</span>(d<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>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><=<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<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<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<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 >=0</span> +00268 <span class="keywordflow">if</span>(<a class="code" href="a04223.html#a574">z</a>>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<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<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<=numSubdiv;i++) +00304 { +00305 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> j=0;j<=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 >=0</span> +00317 <span class="keywordflow">if</span>(<a class="code" href="a04223.html#a574">z</a>>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<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> + + </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> + + </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> + + </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> + + </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> + + </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> + + </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> + + </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> + + </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> + + </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> + + </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> + + </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> + + </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> + + </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> + + </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> + + </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> |