diff options
Diffstat (limited to '')
-rw-r--r-- | docs/doxygen/nel/a03289.html | 1261 |
1 files changed, 1261 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a03289.html b/docs/doxygen/nel/a03289.html new file mode 100644 index 00000000..10652735 --- /dev/null +++ b/docs/doxygen/nel/a03289.html @@ -0,0 +1,1261 @@ +<!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: TemplateNL3D::CQuadTree< T > 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::CQuadTree< T > Class Template Reference</h1><code>#include <<a class="el" href="a06306.html">quad_tree.h</a>></code> +<p> +<hr><a name="_details"></a><h2>Detailed Description</h2> +<h3>template<class T><br> + class NL3D::CQuadTree< T ></h3> + +class: <a class="el" href="a03289.html">CQuadTree</a>.<p> +A template <a class="el" href="a03289.html">CQuadTree</a>.<p> +This first implementation support real-time quad node split, but never merge the quad node. The possibility to merge (delete) empty quads, when an element erase occurs, will be added later.<p> +The quadtree is geometrically delimited. By default, his size is 1*1, centered on (0,0,0). If an element which is out this zone is inserted, then it will ALWAYS be considered selected in select*() methods. By default, the quad tree is aligned on XZ.<p> +Sample code using <a class="el" href="a03289.html">CQuadTree</a>: <pre class="fragment"><div> <span class="comment">// My quad tree</span> + CQuadTree<myType> quadTree; + + <span class="comment">// My min and max BoundingBox corner of each element</span> + CVector minPoint[elementCount]=...; + CVector maxPoint[elementCount]=...; + + <span class="comment">// My values</span> + myType <a class="code" href="a04223.html#a658">value</a>[elementCount]=...; + + <span class="comment">// Init the quadTree with recursions depth = 6 (so max 64*64 cells)</span> + <span class="comment">// centered in (0,0,0) with a max size of 10 in the plane XZ</span> + quadTree.create (6, CVector (0.f, 0.f, 0.f), 10.f); + + <span class="comment">// Insert element in the quadTree</span> + <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i<elementCount; i++) + quadTree.insert (minPoint[i], maxPoint[i], value[i]); + + <span class="comment">// [...]</span> + + <span class="comment">// Clear the selection</span> + quadTree.clearSelection (); + + <span class="comment">// Select an element with the X axis as a 3d ray</span> + quadTree.selectRay (CVector (0,0,0), CVector (1,0,0)); + + <span class="comment">// Get first selected nodes..</span> + CQuadTree<myType>::CIterator it=quadTree.begin(); + <span class="keywordflow">while</span> (it!=quadTree.end()) + { + <span class="comment">// Check what you want...</span> + + <span class="comment">// Next selected element</span> + it++; + } +</div></pre> +<p> + +<p> +Definition at line <a class="el" href="a06306.html#l00096">96</a> of file <a class="el" href="a06306.html">quad_tree.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> </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreea0">CQuadTree</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Default constructor, use axes XZ. <a href="#NL3D_1_1CQuadTreea0"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top> </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreea1">~CQuadTree</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">dtor. <a href="#NL3D_1_1CQuadTreea1"></a><br><br></td></tr> +<tr><td colspan="2"><div class="groupHeader">Selection</div></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03291.html">CIterator</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreez1362_0">begin</a> ()</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreez1362_1">clearSelection</a> ()</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03291.html">CIterator</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreez1362_2">end</a> ()</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreez1362_3">select</a> (const std::vector< <a class="el" href="a03082.html">NLMISC::CPlane</a> > &BVolume)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreez1362_4">select</a> (const <a class="el" href="a03128.html">NLMISC::CVector</a> &bboxmin, const <a class="el" href="a03128.html">NLMISC::CVector</a> &bboxmax)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreez1362_5">selectAll</a> ()</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreez1362_6">selectRay</a> (const <a class="el" href="a03128.html">NLMISC::CVector</a> &source, const <a class="el" href="a03128.html">NLMISC::CVector</a> &dir)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreez1362_7">selectSegment</a> (const <a class="el" href="a03128.html">NLMISC::CVector</a> &source, const <a class="el" href="a03128.html">NLMISC::CVector</a> &dest)</td></tr> + +<tr><td colspan="2"><div class="groupHeader">Initialization</div></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreez1358_0">changeBase</a> (const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &base)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreez1358_1">create</a> (<a class="el" href="a04558.html#a15">uint</a> DepthMax, const <a class="el" href="a03128.html">NLMISC::CVector</a> &center, float <a class="el" href="a04223.html#a587">size</a>)</td></tr> + +<tr><td colspan="2"><div class="groupHeader">Container operation</div></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreez1360_0">clear</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Clear the container. Elements are deleted, and the quadtree too (<a class="el" href="a03289.html#NL3D_1_1CQuadTreez1358_1">create()</a> is undone). <a href="#NL3D_1_1CQuadTreez1360_0"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreez1360_1">erase</a> (<a class="el" href="a03291.html">CIterator</a> it)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreez1360_2">eraseAll</a> ()</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03291.html">CIterator</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreez1360_3">insert</a> (const <a class="el" href="a03128.html">NLMISC::CVector</a> &bboxmin, const <a class="el" href="a03128.html">NLMISC::CVector</a> &bboxmax, const T &val)</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="a02851.html">NLMISC::CMatrix</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreer0">_ChangeBasis</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="a03289.html#NL3D_1_1CQuadTreer1">_DepthMax</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03294.html">CQuadNode</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreer2">_QuadRoot</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03290.html">CBaseNode</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreer3">_Selection</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>float </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreer4">_Size</a></td></tr> + +<tr><td colspan=2><br><h2>Friends</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>class </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreen0">CConstIterator</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>class </td><td class="memItemRight" valign=bottom><a class="el" href="a03289.html#NL3D_1_1CQuadTreen1">CIterator</a></td></tr> + +</table> +<hr><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" name="NL3D_1_1CQuadTreea0" doxytag="NL3D::CQuadTree::CQuadTree" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::<a class="el" href="a03289.html">CQuadTree</a> </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> +Default constructor, use axes XZ. +<p> + +<p> +Definition at line <a class="el" href="a06306.html#l00658">658</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +References <a class="el" href="a06306.html#l00579">NL3D::CQuadTree< T >::_DepthMax</a>, <a class="el" href="a06306.html#l00577">NL3D::CQuadTree< T >::_QuadRoot</a>, <a class="el" href="a06306.html#l00296">NL3D::CQuadTree< T >::CQuadNode::BBoxMax</a>, <a class="el" href="a06306.html#l00296">NL3D::CQuadTree< T >::CQuadNode::BBoxMin</a>, <a class="el" href="a05972.html#l00200">NLMISC::CMatrix::identity()</a>, <a class="el" href="a06306.html#l00236">NL3D::CQuadTree< T >::CBaseNode::Next</a>, and <a class="el" href="a06682.html#l00136">NLMISC::CVector::set()</a>. +<p> +<div class="fragment"><pre>00659 { +00660 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer3">_Selection</a>.<a class="code" href="a03290.html#NL3D_1_1CQuadTree_1_1CNodeo0">Next</a>= NULL; +00661 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer1">_DepthMax</a>= 0; +00662 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer2">_QuadRoot</a>.<a class="code" href="a03294.html#NL3D_1_1CQuadTree_1_1CQuadNodeo1">BBoxMin</a>.<a class="code" href="a03128.html#NLMISC_1_1CVectorz2051_8">set</a>(-0.5, 0, -0.5); +00663 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer2">_QuadRoot</a>.<a class="code" href="a03294.html#NL3D_1_1CQuadTree_1_1CQuadNodeo0">BBoxMax</a>.<a class="code" href="a03128.html#NLMISC_1_1CVectorz2051_8">set</a>( 0.5, 0, 0.5); +00664 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer4">_Size</a>=1; +00665 +00666 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer0">_ChangeBasis</a>.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1961_0">identity</a>(); +00667 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreea1" doxytag="NL3D::CQuadTree::~CQuadTree" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::~<a class="el" href="a03289.html">CQuadTree</a>< T > </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> +dtor. +<p> + </td> + </tr> +</table> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="NL3D_1_1CQuadTreez1362_0" doxytag="NL3D::CQuadTree::begin" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a03289.html">CQuadTree</a>< T >::<a class="el" href="a03291.html">CIterator</a> <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::begin </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> +Return the first iterator of the selected element list. begin and end are valid till the next insert. +<p> +Definition at line <a class="el" href="a06306.html#l00884">884</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +References <a class="el" href="a06306.html#l00236">NL3D::CQuadTree< T >::CBaseNode::Next</a>. +<p> +Referenced by <a class="el" href="a06306.html#l00704">NL3D::CQuadTree< T >::eraseAll()</a>. +<p> +<div class="fragment"><pre>00885 { +00886 <span class="keywordflow">return</span> (CNode*)(<a class="code" href="a03289.html#NL3D_1_1CQuadTreer3">_Selection</a>.<a class="code" href="a03290.html#NL3D_1_1CQuadTree_1_1CNodeo0">Next</a>); +00887 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreez1358_0" doxytag="NL3D::CQuadTree::changeBase" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> void <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::changeBase </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a02851.html">NLMISC::CMatrix</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>base</em> </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> +Change the base matrix of the quad tree. For exemple this code init the quad tree in the plane XY: <pre class="fragment"><div> <a class="code" href="a03289.html#NL3D_1_1CQuadTreea0">CQuadTree</a> quadTree; + <a class="code" href="a02851.html">NLMISC::CMatrix</a> tmp; + <a class="code" href="a03128.html">NLMISC::CVector</a> I(1,0,0); + <a class="code" href="a03128.html">NLMISC::CVector</a> J(0,0,-1); + <a class="code" href="a03128.html">NLMISC::CVector</a> K(0,1,0); + + tmp.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1961_0">identity</a>(); + tmp.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1961_10">setRot</a>(I,J,K, <span class="keyword">true</span>); + quadTree.changeBase (tmp); +</div></pre><p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign=top><em>base</em> </td><td>Base of the quad tree</td></tr> + </table> +</dl> + +<p> +Definition at line <a class="el" href="a06306.html#l00669">669</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +<div class="fragment"><pre>00670 { +00671 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer0">_ChangeBasis</a>=base; +00672 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreez1360_0" doxytag="NL3D::CQuadTree::clear" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> void <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::clear </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> +Clear the container. Elements are deleted, and the quadtree too (<a class="el" href="a03289.html#NL3D_1_1CQuadTreez1358_1">create()</a> is undone). +<p> + +<p> +Definition at line <a class="el" href="a06306.html#l00679">679</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +References <a class="el" href="a06306.html#l00577">NL3D::CQuadTree< T >::_QuadRoot</a>, <a class="el" href="a06306.html#l00322">NL3D::CQuadTree< T >::CQuadNode::clear()</a>, and <a class="el" href="a06306.html#l00236">NL3D::CQuadTree< T >::CBaseNode::Next</a>. +<p> +Referenced by <a class="el" href="a06306.html#l00685">NL3D::CQuadTree< T >::create()</a>. +<p> +<div class="fragment"><pre>00680 { +00681 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer2">_QuadRoot</a>.<a class="code" href="a03294.html#NL3D_1_1CQuadTree_1_1CQuadNodea1">clear</a>(); +00682 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer3">_Selection</a>.<a class="code" href="a03290.html#NL3D_1_1CQuadTree_1_1CNodeo0">Next</a>= NULL; +00683 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreez1362_1" doxytag="NL3D::CQuadTree::clearSelection" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> void <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::clearSelection </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> +Clear the selection list +<p> +Definition at line <a class="el" href="a06306.html#l00775">775</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +References <a class="el" href="a06306.html#l00236">NL3D::CQuadTree< T >::CBaseNode::Next</a>, and <a class="el" href="a06306.html#l00236">NL3D::CQuadTree< T >::CBaseNode::Prev</a>. +<p> +Referenced by <a class="el" href="a06306.html#l00793">NL3D::CQuadTree< T >::select()</a>, and <a class="el" href="a06306.html#l00787">NL3D::CQuadTree< T >::selectAll()</a>. +<p> +<div class="fragment"><pre>00776 { +00777 CBaseNode *p; +00778 <span class="keywordflow">while</span>(p=<a class="code" href="a03289.html#NL3D_1_1CQuadTreer3">_Selection</a>.<a class="code" href="a03290.html#NL3D_1_1CQuadTree_1_1CNodeo0">Next</a>) +00779 { +00780 <span class="comment">// On retire ce noeud de la selection. Ce qui va modifier implicitement _Selection.Next.</span> +00781 <span class="keywordflow">if</span>(p->Prev) p->Prev->Next= p->Next; +00782 <span class="keywordflow">if</span>(p->Next) p->Next->Prev= p->Prev; +00783 p->Prev=p->Next=NULL; +00784 } +00785 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreez1358_1" doxytag="NL3D::CQuadTree::create" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> void <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::create </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a> </td> + <td class="mdname" nowrap> <em>DepthMax</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname" nowrap> <em>center</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float </td> + <td class="mdname" nowrap> <em>size</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> +Init the container<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign=top><em>DepthMax</em> </td><td>is the max depth in the tree. The max cell count is (1<<DepthMax)^2 </td></tr> + <tr><td valign=top><em>center</em> </td><td>is the center of the quad tree </td></tr> + <tr><td valign=top><em>size</em> </td><td>is the width and the height of the initial quad tree.</td></tr> + </table> +</dl> + +<p> +Definition at line <a class="el" href="a06306.html#l00685">685</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +References <a class="el" href="a06306.html#l00579">NL3D::CQuadTree< T >::_DepthMax</a>, <a class="el" href="a06306.html#l00577">NL3D::CQuadTree< T >::_QuadRoot</a>, <a class="el" href="a06306.html#l00296">NL3D::CQuadTree< T >::CQuadNode::BBoxMax</a>, <a class="el" href="a06306.html#l00296">NL3D::CQuadTree< T >::CQuadNode::BBoxMin</a>, <a class="el" href="a06306.html#l00679">NL3D::CQuadTree< T >::clear()</a>, <a class="el" href="a05646.html#l00645">size</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +<div class="fragment"><pre>00686 { +00687 <a class="code" href="a03128.html">NLMISC::CVector</a> mycenter=<a class="code" href="a03289.html#NL3D_1_1CQuadTreer0">_ChangeBasis</a>*center; +00688 <a class="code" href="a03289.html#NL3D_1_1CQuadTreez1360_0">clear</a>(); +00689 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer1">_DepthMax</a>= DepthMax; +00690 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer4">_Size</a>= <a class="code" href="a04223.html#a587">size</a>; +00691 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer2">_QuadRoot</a>.<a class="code" href="a03294.html#NL3D_1_1CQuadTree_1_1CQuadNodeo1">BBoxMin</a>= mycenter-<a class="code" href="a03128.html">NLMISC::CVector</a>(size/2, 0 , size/2); +00692 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer2">_QuadRoot</a>.<a class="code" href="a03294.html#NL3D_1_1CQuadTree_1_1CQuadNodeo0">BBoxMax</a>= mycenter+<a class="code" href="a03128.html">NLMISC::CVector</a>(size/2, 0 , size/2); +00693 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreez1362_2" doxytag="NL3D::CQuadTree::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" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a03289.html">CQuadTree</a>< T >::<a class="el" href="a03291.html">CIterator</a> <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::end </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> +Return the end iterator of the selected element list. begin and end are valid till the next insert. +<p> +Definition at line <a class="el" href="a06306.html#l00889">889</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +References <a class="el" href="a06306.html#l00102">NL3D::CQuadTree< T >::CIterator</a>. +<p> +Referenced by <a class="el" href="a06306.html#l00704">NL3D::CQuadTree< T >::eraseAll()</a>. +<p> +<div class="fragment"><pre>00890 { +00891 <span class="keywordflow">return</span> <a class="code" href="a03289.html#NL3D_1_1CQuadTreen1">CIterator</a>(NULL); +00892 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreez1360_1" doxytag="NL3D::CQuadTree::erase" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> void <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::erase </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a03291.html">CIterator</a> </td> + <td class="mdname1" valign="top" nowrap> <em>it</em> </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> +Erase an interator from the container<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign=top><em>it</em> </td><td>is the iterator to erase.</td></tr> + </table> +</dl> + +<p> +Definition at line <a class="el" href="a06306.html#l00723">723</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +References <a class="el" href="a06306.html#l00614">NL3D::CQuadTree< T >::const_iterator::_Ptr</a>, and <a class="el" href="a06306.html#l00250">NL3D::CQuadTree< T >::CBaseNode::clear()</a>. +<p> +Referenced by <a class="el" href="a06306.html#l00704">NL3D::CQuadTree< T >::eraseAll()</a>. +<p> +<div class="fragment"><pre>00724 { +00725 CNode *p=it._Ptr; +00726 <span class="keywordflow">if</span>(p) +00727 { +00728 <span class="comment">// Clear links.</span> +00729 p->clear(); +00730 +00731 <span class="comment">// delete it!!</span> +00732 <span class="keyword">delete</span> p; +00733 } +00734 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreez1360_2" doxytag="NL3D::CQuadTree::eraseAll" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> void <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::eraseAll </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> +Erase all elements from the container +<p> +Definition at line <a class="el" href="a06306.html#l00704">704</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +References <a class="el" href="a06306.html#l00884">NL3D::CQuadTree< T >::begin()</a>, <a class="el" href="a06306.html#l00889">NL3D::CQuadTree< T >::end()</a>, <a class="el" href="a06306.html#l00723">NL3D::CQuadTree< T >::erase()</a>, <a class="el" href="a06306.html#l00787">NL3D::CQuadTree< T >::selectAll()</a>, and <a class="el" href="a05981.html#l00104">sint</a>. +<p> +<div class="fragment"><pre>00705 { +00706 <a class="code" href="a03289.html#NL3D_1_1CQuadTreen1">CIterator</a> it; +00707 std::vector<CIterator> its; +00708 +00709 <span class="comment">// First, make a copy of all elements.</span> +00710 <a class="code" href="a03289.html#NL3D_1_1CQuadTreez1362_5">selectAll</a>(); +00711 <span class="keywordflow">for</span>(it= <a class="code" href="a03289.html#NL3D_1_1CQuadTreez1362_0">begin</a>();it!=<a class="code" href="a03289.html#NL3D_1_1CQuadTreez1362_2">end</a>();it++) +00712 { +00713 its.push_back(it); +00714 } +00715 +00716 <span class="comment">// Then erase them. Must do it OUTSIDE the select loop.</span> +00717 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> i=0;i<(<a class="code" href="a04558.html#a14">sint</a>)its.size();i++) +00718 { +00719 <a class="code" href="a03289.html#NL3D_1_1CQuadTreez1360_1">erase</a>(its[i]); +00720 } +00721 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreez1360_3" doxytag="NL3D::CQuadTree::insert" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a03289.html">CQuadTree</a>< T >::<a class="el" href="a03291.html">CIterator</a> <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::insert </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname" nowrap> <em>bboxmin</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname" nowrap> <em>bboxmax</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const T & </td> + <td class="mdname" nowrap> <em>val</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> +Insert a new element in the container. The bounding box of the element MUST be included in the bounding box of the quadtree.<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign=top><em>bboxmin</em> </td><td>is the corner of the bounding box of the element to insert with minimal coordinates. </td></tr> + <tr><td valign=top><em>bboxmax</em> </td><td>is the corner of the bounding box of the element to insert with maximal coordinates. </td></tr> + <tr><td valign=top><em>val</em> </td><td>is a reference on the value to insert</td></tr> + </table> +</dl> + +<p> +Definition at line <a class="el" href="a06306.html#l00736">736</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +References <a class="el" href="a06306.html#l00579">NL3D::CQuadTree< T >::_DepthMax</a>, <a class="el" href="a06306.html#l00577">NL3D::CQuadTree< T >::_QuadRoot</a>, <a class="el" href="a06306.html#l00102">NL3D::CQuadTree< T >::CIterator</a>, <a class="el" href="a06306.html#l00443">NL3D::CQuadTree< T >::CQuadNode::insert()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>. +<p> +<div class="fragment"><pre>00737 { +00738 <a class="code" href="a03128.html">NLMISC::CVector</a> myboxmin2=<a class="code" href="a03289.html#NL3D_1_1CQuadTreer0">_ChangeBasis</a>*bboxmin; +00739 <a class="code" href="a03128.html">NLMISC::CVector</a> myboxmax2=<a class="code" href="a03289.html#NL3D_1_1CQuadTreer0">_ChangeBasis</a>*bboxmax; +00740 <a class="code" href="a03128.html">NLMISC::CVector</a> myboxmin (std::min (myboxmin2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>, myboxmax2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>), std::min (myboxmin2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a>, myboxmax2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a>), std::min (myboxmin2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a>, myboxmax2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a>)); +00741 <a class="code" href="a03128.html">NLMISC::CVector</a> myboxmax (std::max (myboxmin2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>, myboxmax2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>), std::max (myboxmin2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a>, myboxmax2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a>), std::max (myboxmin2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a>, myboxmax2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a>)); +00742 +00743 CNode *newNode=<span class="keyword">new</span> CNode(val); +00744 +00745 <a class="code" href="a04199.html#a6">nlassert</a>(myboxmax.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>>=myboxmin.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>); +00746 <a class="code" href="a04199.html#a6">nlassert</a>(myboxmax.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a>>=myboxmin.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a>); +00747 <a class="code" href="a04199.html#a6">nlassert</a>(myboxmax.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a>>=myboxmin.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a>); +00748 +00749 <span class="keywordtype">float</span> boxsize= std::max(myboxmax.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>-myboxmin.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>, myboxmax.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a>-myboxmin.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a> ); +00750 <span class="comment">// Prevent float precision problems. Increase bbox size a little.</span> +00751 boxsize*=1.01f; +00752 <span class="comment">// We must find the level quad which is just bigger.</span> +00753 <span class="keywordtype">float</span> wantsize=<a class="code" href="a03289.html#NL3D_1_1CQuadTreer4">_Size</a>; +00754 <a class="code" href="a04558.html#a15">uint</a> wantdepth=0; +00755 <span class="keywordflow">while</span>(boxsize<wantsize/2 && wantdepth<<a class="code" href="a03289.html#NL3D_1_1CQuadTreer1">_DepthMax</a>) +00756 { +00757 wantsize/=2; +00758 wantdepth++; +00759 } +00760 +00761 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer2">_QuadRoot</a>.<a class="code" href="a03294.html#NL3D_1_1CQuadTree_1_1CQuadNodea4">insert</a>(myboxmin, myboxmax, wantdepth, newNode); +00762 +00763 <span class="keywordflow">return</span> <a class="code" href="a03289.html#NL3D_1_1CQuadTreen1">CIterator</a>(newNode); +00764 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreez1362_3" doxytag="NL3D::CQuadTree::select" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> void <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::select </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const std::vector< <a class="el" href="a03082.html">NLMISC::CPlane</a> > & </td> + <td class="mdname1" valign="top" nowrap> <em>BVolume</em> </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> +Select element with multiple planes. Intersect with a polytope convex made of planes. The normals of planes must be directed outwards the polytope.<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign=top><em>BVolume</em> </td><td>is a plane vector</td></tr> + </table> +</dl> + +<p> +Definition at line <a class="el" href="a06306.html#l00804">804</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +References <a class="el" href="a06306.html#l00577">NL3D::CQuadTree< T >::_QuadRoot</a>, <a class="el" href="a06306.html#l00775">NL3D::CQuadTree< T >::clearSelection()</a>, and <a class="el" href="a06306.html#l00536">NL3D::CQuadTree< T >::CQuadNode::select()</a>. +<p> +<div class="fragment"><pre>00805 { +00806 std::vector<NLMISC::CPlane> BVolumeCopy; +00807 BVolumeCopy.resize (BVolume.size()); +00808 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i<(<span class="keywordtype">int</span>)BVolumeCopy.size(); i++) +00809 { +00810 BVolumeCopy[i]=BVolume[i]*((<a class="code" href="a03289.html#NL3D_1_1CQuadTreer0">_ChangeBasis</a>).inverted()); +00811 } +00812 +00813 <a class="code" href="a03289.html#NL3D_1_1CQuadTreez1362_1">clearSelection</a>(); +00814 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer2">_QuadRoot</a>.<a class="code" href="a03294.html#NL3D_1_1CQuadTree_1_1CQuadNodea10">select</a>(_Selection, BVolumeCopy); +00815 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreez1362_4" doxytag="NL3D::CQuadTree::select" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> void <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::select </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname" nowrap> <em>bboxmin</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname" nowrap> <em>bboxmax</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> +Select element intersecting a bounding box<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign=top><em>bboxmin</em> </td><td>is the corner of the bounding box used to select </td></tr> + <tr><td valign=top><em>bboxmax</em> </td><td>is the corner of the bounding box used to select</td></tr> + </table> +</dl> + +<p> +Definition at line <a class="el" href="a06306.html#l00793">793</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +References <a class="el" href="a06306.html#l00577">NL3D::CQuadTree< T >::_QuadRoot</a>, <a class="el" href="a06306.html#l00775">NL3D::CQuadTree< T >::clearSelection()</a>, <a class="el" href="a06306.html#l00536">NL3D::CQuadTree< T >::CQuadNode::select()</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>. +<p> +Referenced by <a class="el" href="a06306.html#l00817">NL3D::CQuadTree< T >::selectRay()</a>, and <a class="el" href="a06306.html#l00848">NL3D::CQuadTree< T >::selectSegment()</a>. +<p> +<div class="fragment"><pre>00794 { +00795 <a class="code" href="a03128.html">NLMISC::CVector</a> myboxmin2=<a class="code" href="a03289.html#NL3D_1_1CQuadTreer0">_ChangeBasis</a>*bboxmin; +00796 <a class="code" href="a03128.html">NLMISC::CVector</a> myboxmax2=<a class="code" href="a03289.html#NL3D_1_1CQuadTreer0">_ChangeBasis</a>*bboxmax; +00797 <a class="code" href="a03128.html">NLMISC::CVector</a> bboxminCopy (std::min (myboxmin2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>, myboxmax2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>), std::min (myboxmin2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a>, myboxmax2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a>), std::min (myboxmin2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a>, myboxmax2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a>)); +00798 <a class="code" href="a03128.html">NLMISC::CVector</a> bboxmaxCopy (std::max (myboxmin2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>, myboxmax2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>), std::max (myboxmin2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a>, myboxmax2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a>), std::max (myboxmin2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a>, myboxmax2.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a>)); +00799 +00800 <a class="code" href="a03289.html#NL3D_1_1CQuadTreez1362_1">clearSelection</a>(); +00801 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer2">_QuadRoot</a>.<a class="code" href="a03294.html#NL3D_1_1CQuadTree_1_1CQuadNodea10">select</a>(_Selection, bboxminCopy, bboxmaxCopy); +00802 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreez1362_5" doxytag="NL3D::CQuadTree::selectAll" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> void <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::selectAll </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> +Select all the container +<p> +Definition at line <a class="el" href="a06306.html#l00787">787</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +References <a class="el" href="a06306.html#l00577">NL3D::CQuadTree< T >::_QuadRoot</a>, <a class="el" href="a06306.html#l00775">NL3D::CQuadTree< T >::clearSelection()</a>, and <a class="el" href="a06306.html#l00524">NL3D::CQuadTree< T >::CQuadNode::selectAll()</a>. +<p> +Referenced by <a class="el" href="a06306.html#l00704">NL3D::CQuadTree< T >::eraseAll()</a>. +<p> +<div class="fragment"><pre>00788 { +00789 <a class="code" href="a03289.html#NL3D_1_1CQuadTreez1362_1">clearSelection</a>(); +00790 <a class="code" href="a03289.html#NL3D_1_1CQuadTreer2">_QuadRoot</a>.<a class="code" href="a03294.html#NL3D_1_1CQuadTree_1_1CQuadNodea11">selectAll</a>(_Selection); +00791 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreez1362_6" doxytag="NL3D::CQuadTree::selectRay" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> void <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::selectRay </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname" nowrap> <em>source</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname" nowrap> <em>dir</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> +Select element with a ray<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign=top><em>source</em> </td><td>is a point in the ray </td></tr> + <tr><td valign=top><em>dir</em> </td><td>is the direction off the ray</td></tr> + </table> +</dl> + +<p> +Definition at line <a class="el" href="a06306.html#l00817">817</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +References <a class="el" href="a05972.html#l00427">NLMISC::CMatrix::getJ()</a>, <a class="el" href="a05972.html#l00435">NLMISC::CMatrix::getK()</a>, <a class="el" href="a05972.html#l00200">NLMISC::CMatrix::identity()</a>, <a class="el" href="a06170.html#l00036">NLMISC::CPlane::make()</a>, <a class="el" href="a05972.html#l01170">NLMISC::CMatrix::normalize()</a>, <a class="el" href="a06306.html#l00793">NL3D::CQuadTree< T >::select()</a>, and <a class="el" href="a05972.html#l00209">NLMISC::CMatrix::setRot()</a>. +<p> +<div class="fragment"><pre>00818 { +00819 <a class="code" href="a02851.html">NLMISC::CMatrix</a> mat; +00820 mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1961_0">identity</a> (); +00821 +00822 <span class="comment">// Set a wrong matrix</span> +00823 <a class="code" href="a03128.html">NLMISC::CVector</a> vTmp=dir^((fabs(vTmp*CVector(1,0,0))>0.f)?CVector(1,0,0):CVector(0,1,0)); +00824 mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1961_10">setRot</a> (dir, vTmp, dir^vTmp); +00825 +00826 <span class="comment">// Normalize it Yoyo!</span> +00827 mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1967_2">normalize</a> (NLMISC::CMatrix::XYZ); +00828 +00829 <span class="comment">// Get the planes..</span> +00830 std::vector<NLMISC::CPlane> BVolume; +00831 BVolume.reserve (4); +00832 +00833 <span class="comment">// Setup the planes</span> +00834 <a class="code" href="a03082.html">NLMISC::CPlane</a> plane; +00835 plane.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a> (mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_3">getJ</a>(), source); +00836 BVolume.push_back (plane); +00837 plane.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a> (mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_4">getK</a>(), source); +00838 BVolume.push_back (plane); +00839 plane.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a> (-mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_3">getJ</a>(), source); +00840 BVolume.push_back (plane); +00841 plane.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a> (-mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_4">getK</a>(), source); +00842 BVolume.push_back (plane); +00843 +00844 <span class="comment">// Select the nodes</span> +00845 <a class="code" href="a03289.html#NL3D_1_1CQuadTreez1362_4">select</a> (BVolume); +00846 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreez1362_7" doxytag="NL3D::CQuadTree::selectSegment" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> void <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::selectSegment </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname" nowrap> <em>source</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname" nowrap> <em>dest</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> +Select element with a segment<p> +<dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign=top><em>source</em> </td><td>is the source of the segment </td></tr> + <tr><td valign=top><em>dest</em> </td><td>is the destination of the segment</td></tr> + </table> +</dl> + +<p> +Definition at line <a class="el" href="a06306.html#l00848">848</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +References <a class="el" href="a05972.html#l00419">NLMISC::CMatrix::getI()</a>, <a class="el" href="a05972.html#l00427">NLMISC::CMatrix::getJ()</a>, <a class="el" href="a05972.html#l00435">NLMISC::CMatrix::getK()</a>, <a class="el" href="a05972.html#l00200">NLMISC::CMatrix::identity()</a>, <a class="el" href="a06170.html#l00036">NLMISC::CPlane::make()</a>, <a class="el" href="a05972.html#l01170">NLMISC::CMatrix::normalize()</a>, <a class="el" href="a06306.html#l00793">NL3D::CQuadTree< T >::select()</a>, and <a class="el" href="a05972.html#l00209">NLMISC::CMatrix::setRot()</a>. +<p> +<div class="fragment"><pre>00849 { +00850 <a class="code" href="a02851.html">NLMISC::CMatrix</a> mat; +00851 mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1961_0">identity</a> (); +00852 +00853 <span class="comment">// Set a wrong matrix</span> +00854 CVector dir=dest-source; +00855 <a class="code" href="a03128.html">NLMISC::CVector</a> vTmp=dir^((fabs(vTmp*CVector(1,0,0))>0.f)?CVector(1,0,0):CVector(0,1,0)); +00856 mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1961_10">setRot</a> (dir, vTmp, dir^vTmp); +00857 +00858 <span class="comment">// Normalize it Yoyo!</span> +00859 mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1967_2">normalize</a> (NLMISC::CMatrix::XYZ); +00860 +00861 <span class="comment">// Get the planes..</span> +00862 std::vector<NLMISC::CPlane> BVolume; +00863 BVolume.reserve (4); +00864 +00865 <span class="comment">// Setup the planes</span> +00866 <a class="code" href="a03082.html">NLMISC::CPlane</a> plane; +00867 plane.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a> (mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_3">getJ</a>(), source); +00868 BVolume.push_back (plane); +00869 plane.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a> (mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_4">getK</a>(), source); +00870 BVolume.push_back (plane); +00871 plane.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a> (-mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_3">getJ</a>(), source); +00872 BVolume.push_back (plane); +00873 plane.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a> (-mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_4">getK</a>(), source); +00874 BVolume.push_back (plane); +00875 plane.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a> (mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_2">getI</a>(), dest); +00876 BVolume.push_back (plane); +00877 plane.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a> (-mat.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1963_2">getI</a>(), source); +00878 BVolume.push_back (plane); +00879 +00880 <span class="comment">// Select the nodes</span> +00881 <a class="code" href="a03289.html#NL3D_1_1CQuadTreez1362_4">select</a> (BVolume); +00882 } +</pre></div> </td> + </tr> +</table> +<hr><h2>Friends And Related Function Documentation</h2> +<a class="anchor" name="NL3D_1_1CQuadTreen0" doxytag="NL3D::CQuadTree::CConstIterator" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> friend class CConstIterator<code> [friend]</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="a06306.html#l00105">105</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreen1" doxytag="NL3D::CQuadTree::CIterator" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> friend class <a class="el" href="a03291.html">CIterator</a><code> [friend]</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="a06306.html#l00102">102</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +Referenced by <a class="el" href="a06306.html#l00889">NL3D::CQuadTree< T >::end()</a>, and <a class="el" href="a06306.html#l00736">NL3D::CQuadTree< T >::insert()</a>. </td> + </tr> +</table> +<hr><h2>Field Documentation</h2> +<a class="anchor" name="NL3D_1_1CQuadTreer0" doxytag="NL3D::CQuadTree::_ChangeBasis" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a02851.html">NLMISC::CMatrix</a> <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::<a class="el" href="a03289.html#NL3D_1_1CQuadTreer0">_ChangeBasis</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="a06306.html#l00581">581</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreer1" doxytag="NL3D::CQuadTree::_DepthMax" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a15">uint</a> <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::<a class="el" href="a03289.html#NL3D_1_1CQuadTreer1">_DepthMax</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="a06306.html#l00579">579</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +Referenced by <a class="el" href="a06306.html#l00658">NL3D::CQuadTree< T >::CQuadTree()</a>, <a class="el" href="a06306.html#l00685">NL3D::CQuadTree< T >::create()</a>, and <a class="el" href="a06306.html#l00736">NL3D::CQuadTree< T >::insert()</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreer2" doxytag="NL3D::CQuadTree::_QuadRoot" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a03294.html">CQuadNode</a> <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::<a class="el" href="a03289.html#NL3D_1_1CQuadTreer2">_QuadRoot</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="a06306.html#l00577">577</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. +<p> +Referenced by <a class="el" href="a06306.html#l00679">NL3D::CQuadTree< T >::clear()</a>, <a class="el" href="a06306.html#l00658">NL3D::CQuadTree< T >::CQuadTree()</a>, <a class="el" href="a06306.html#l00685">NL3D::CQuadTree< T >::create()</a>, <a class="el" href="a06306.html#l00736">NL3D::CQuadTree< T >::insert()</a>, <a class="el" href="a06306.html#l00793">NL3D::CQuadTree< T >::select()</a>, and <a class="el" href="a06306.html#l00787">NL3D::CQuadTree< T >::selectAll()</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreer3" doxytag="NL3D::CQuadTree::_Selection" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a03290.html">CBaseNode</a> <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::<a class="el" href="a03289.html#NL3D_1_1CQuadTreer3">_Selection</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="a06306.html#l00578">578</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CQuadTreer4" doxytag="NL3D::CQuadTree::_Size" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class T> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> float <a class="el" href="a03289.html">NL3D::CQuadTree</a>< T >::<a class="el" href="a03289.html#NL3D_1_1CQuadTreer4">_Size</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="a06306.html#l00580">580</a> of file <a class="el" href="a06306.html">quad_tree.h</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="a06306.html">quad_tree.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 07:35:44 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> |