aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a02334.html
diff options
context:
space:
mode:
authorneodarz <neodarz@neodarz.net>2018-08-11 20:21:34 +0200
committerneodarz <neodarz@neodarz.net>2018-08-11 20:21:34 +0200
commit0ea5fc66924303d1bf73ba283a383e2aadee02f2 (patch)
tree2568e71a7ccc44ec23b8bb3f0ff97fb6bf2ed709 /docs/doxygen/nel/a02334.html
downloadnevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.tar.xz
nevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.zip
Initial commit
Diffstat (limited to 'docs/doxygen/nel/a02334.html')
-rw-r--r--docs/doxygen/nel/a02334.html1283
1 files changed, 1283 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a02334.html b/docs/doxygen/nel/a02334.html
new file mode 100644
index 00000000..8289791c
--- /dev/null
+++ b/docs/doxygen/nel/a02334.html
@@ -0,0 +1,1283 @@
+<!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: NLPACS::CChainQuad class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.6 -->
+<div class="qindex"> <form class="search" action="search.php" method="get">
+<a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a> | <span class="search"><u>S</u>earch&nbsp;for&nbsp;<input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
+<h1>NLPACS::CChainQuad Class Reference</h1><code>#include &lt;<a class="el" href="a05542.html">chain_quad.h</a>&gt;</code>
+<p>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+a quadgrid of list of edge chain. <dl compact><dt><b>Author:</b></dt><dd>Lionel Berenguier <p>
+Nevrax France </dd></dl>
+<dl compact><dt><b>Date:</b></dt><dd>2001 </dd></dl>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05542.html#l00059">59</a> of file <a class="el" href="a05542.html">chain_quad.h</a>.<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuada0">build</a> (const std::vector&lt; <a class="el" href="a03027.html">COrderedChain</a> &gt; &amp;ochains)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">build a chain quad, with a list of OrderedChains. <a href="#NLPACS_1_1CChainQuada0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuada1">CChainQuad</a> (const <a class="el" href="a02334.html">CChainQuad</a> &amp;o)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy Constructor. <a href="#NLPACS_1_1CChainQuada1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuada2">CChainQuad</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. <a href="#NLPACS_1_1CChainQuada2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuada3">clear</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">clear <a href="#NLPACS_1_1CChainQuada3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02334.html">CChainQuad</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuada4">operator=</a> (const <a class="el" href="a02334.html">CChainQuad</a> &amp;o)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">operator=. <a href="#NLPACS_1_1CChainQuada4"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuada5">selectEdges</a> (<a class="el" href="a03128.html">CVector</a> start, <a class="el" href="a03128.html">CVector</a> end, <a class="el" href="a02387.html">CCollisionSurfaceTemp</a> &amp;cst) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuada6">selectEdges</a> (const <a class="el" href="a02156.html">NLMISC::CAABBox</a> &amp;bbox, <a class="el" href="a02387.html">CCollisionSurfaceTemp</a> &amp;cst) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuada7">serial</a> (<a class="el" href="a02270.html">NLMISC::IStream</a> &amp;f)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">serial. <a href="#NLPACS_1_1CChainQuada7"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuada8">~CChainQuad</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#NLPACS_1_1CChainQuada8"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Private Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadd0">addEdgeToQuadNode</a> (std::list&lt; <a class="el" href="a02447.html">CEdgeChainEntry</a> &gt; &amp;quadNode, <a class="el" href="a04558.html#a14">sint</a> ochainId, <a class="el" href="a04558.html#a14">sint</a> edgeId)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadd1">getGridBounds</a> (<a class="el" href="a04558.html#a10">sint32</a> &amp;x0, <a class="el" href="a04558.html#a10">sint32</a> &amp;y0, <a class="el" href="a04558.html#a10">sint32</a> &amp;x1, <a class="el" href="a04558.html#a10">sint32</a> &amp;y1, const <a class="el" href="a03128.html">CVector</a> &amp;minP, const <a class="el" href="a03128.html">CVector</a> &amp;maxP) const </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="a04558.html#a11">uint32</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadr0">_Height</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Height of the quadgrid. <a href="#NLPACS_1_1CChainQuadr0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a04558.html#a7">uint8</a> * &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadr1">_Quad</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a7">uint8</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Single memory block of <a class="el" href="a02447.html">CEdgeChainEntry</a> chains. <a href="#NLPACS_1_1CChainQuadr2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadr3">_QuadDataLen</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">size (in byte) of _QuadData. <a href="#NLPACS_1_1CChainQuadr3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadr4">_Width</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Width of the quadgrid. <a href="#NLPACS_1_1CChainQuadr4"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a10">sint32</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadr5">_X</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Postion of the chainquad. <a href="#NLPACS_1_1CChainQuadr5"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a10">sint32</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadr6">_Y</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Postion of the chainquad. <a href="#NLPACS_1_1CChainQuadr6"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadv0">_QuadElementSize</a> = 4</td></tr>
+
+</table>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="NLPACS_1_1CChainQuada2" doxytag="NLPACS::CChainQuad::CChainQuad" ></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"> NLPACS::CChainQuad::CChainQuad </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Constructor.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05541.html#l00043">43</a> of file <a class="el" href="a05541.html">chain_quad.cpp</a>.
+<p>
+References <a class="el" href="a05542.html#l00126">_QuadData</a>, and <a class="el" href="a05542.html#l00128">_QuadDataLen</a>.
+<p>
+<div class="fragment"><pre>00044 {
+00045 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>= NULL;
+00046 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr3">_QuadDataLen</a>= 0;
+00047 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuada1" doxytag="NLPACS::CChainQuad::CChainQuad" ></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"> NLPACS::CChainQuad::CChainQuad </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02334.html">CChainQuad</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>o</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Copy Constructor.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05541.html#l00056">56</a> of file <a class="el" href="a05541.html">chain_quad.cpp</a>.
+<p>
+References <a class="el" href="a05542.html#l00126">_QuadData</a>, and <a class="el" href="a05542.html#l00128">_QuadDataLen</a>.
+<p>
+<div class="fragment"><pre>00057 {
+00058 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>= NULL;
+00059 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr3">_QuadDataLen</a>= 0;
+00060 *<span class="keyword">this</span>= o;
+00061 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuada8" doxytag="NLPACS::CChainQuad::~CChainQuad" ></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"> NLPACS::CChainQuad::~<a class="el" href="a02334.html">CChainQuad</a> </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Destructor.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05541.html#l00049">49</a> of file <a class="el" href="a05541.html">chain_quad.cpp</a>.
+<p>
+References <a class="el" href="a05542.html#l00126">_QuadData</a>, and <a class="el" href="a05542.html#l00128">_QuadDataLen</a>.
+<p>
+<div class="fragment"><pre>00050 {
+00051 <span class="keyword">delete</span> [] <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>;
+00052 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>= NULL;
+00053 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr3">_QuadDataLen</a>= 0;
+00054 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="NLPACS_1_1CChainQuadd0" doxytag="NLPACS::CChainQuad::addEdgeToQuadNode" ></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 NLPACS::CChainQuad::addEdgeToQuadNode </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">std::list&lt; <a class="el" href="a02447.html">CEdgeChainEntry</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>quadNode</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>ochainId</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>edgeId</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05541.html#l00261">261</a> of file <a class="el" href="a05541.html">chain_quad.cpp</a>.
+<p>
+References <a class="el" href="a05583.html#l00128">NLPACS::CEdgeChainEntry::EdgeEnd</a>, <a class="el" href="a05583.html#l00126">NLPACS::CEdgeChainEntry::EdgeStart</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a05583.html#l00124">NLPACS::CEdgeChainEntry::OChainId</a>, <a class="el" href="a05981.html#l00104">sint</a>, and <a class="el" href="a05981.html#l00098">uint16</a>.
+<p>
+Referenced by <a class="el" href="a05541.html#l00122">build()</a>.
+<p>
+<div class="fragment"><pre>00262 {
+00263 <span class="comment">// 0. try to find, insert an edge in an existing CEdgeChainEntry.</span>
+00264 <span class="comment">//=========================================</span>
+00265 <a class="code" href="a03889.html">list&lt;CEdgeChainEntry&gt;</a>::iterator it;
+00266 <span class="keywordflow">for</span>(it= quadNode.begin(); it!=quadNode.end();it++)
+00267 {
+00268 <span class="keywordflow">if</span>(it-&gt;OChainId==ochainId)
+00269 {
+00270 <span class="comment">// selection is faster if we only manages a single start/end block.</span>
+00271 it-&gt;EdgeStart= <a class="code" href="a04061.html#a0">min</a>(it-&gt;EdgeStart, (<a class="code" href="a04558.html#a9">uint16</a>)edgeId);
+00272 it-&gt;EdgeEnd= max(it-&gt;EdgeEnd, (<a class="code" href="a04558.html#a9">uint16</a>)(edgeId+1));
+00273 <span class="keywordflow">return</span>;
+00274 }
+00275 }
+00276
+00277
+00278 <span class="comment">// 1. else, create new one.</span>
+00279 <span class="comment">//=========================================</span>
+00280 CEdgeChainEntry entry;
+00281 entry.OChainId= ochainId;
+00282 entry.EdgeStart= edgeId;
+00283 entry.EdgeEnd= edgeId+1;
+00284 quadNode.push_back(entry);
+00285 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuada0" doxytag="NLPACS::CChainQuad::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 NLPACS::CChainQuad::build </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const std::vector&lt; <a class="el" href="a03027.html">COrderedChain</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>ochains</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+build a chain quad, with a list of OrderedChains.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05541.html#l00122">122</a> of file <a class="el" href="a05541.html">chain_quad.cpp</a>.
+<p>
+References <a class="el" href="a05542.html#l00126">_QuadData</a>, <a class="el" href="a05542.html#l00128">_QuadDataLen</a>, <a class="el" href="a05541.html#l00039">_QuadElementSize</a>, <a class="el" href="a05541.html#l00261">addEdgeToQuadNode()</a>, <a class="el" href="a05384.html#l00215">NLMISC::CAABBox::extend()</a>, <a class="el" href="a05541.html#l00102">getGridBounds()</a>, <a class="el" href="a05385.html#l00087">NLMISC::CAABBox::getMax()</a>, <a class="el" href="a05385.html#l00086">NLMISC::CAABBox::getMin()</a>, <a class="el" href="a05646.html#l00235">len</a>, <a class="el" href="a06682.html#l00192">NLMISC::CVector::maxof()</a>, <a class="el" href="a06682.html#l00186">NLMISC::CVector::minof()</a>, <a class="el" href="a05385.html#l00066">NLMISC::CAABBox::setCenter()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a05981.html#l00098">uint16</a>, <a class="el" href="a05981.html#l00096">uint8</a>, <a class="el" href="a05646.html#l00236">x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a05646.html#l00236">y</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>.
+<p>
+Referenced by <a class="el" href="a05929.html#l01800">NLPACS::CLocalRetriever::computeCollisionChainQuad()</a>.
+<p>
+<div class="fragment"><pre>00123 {
+00124 vector&lt; list&lt;CEdgeChainEntry&gt; &gt; tempQuad;
+00125 <a class="code" href="a04558.html#a14">sint</a> i,j;
+00126
+00127 <span class="comment">// first, clear any pr-build.</span>
+00128 <a class="code" href="a05378.html#a381">contReset</a>(_Quad);
+00129 <span class="keyword">delete</span> [] <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>;
+00130 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>= NULL;
+00131 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr3">_QuadDataLen</a>= 0;
+00132
+00133
+00134 <span class="comment">// 0. Find BBox of the grid. Allocate grid.</span>
+00135 <span class="comment">//=========================================</span>
+00136 <span class="keywordtype">bool</span> first=<span class="keyword">true</span>;
+00137 <a class="code" href="a02156.html">CAABBox</a> chainquadBBox;
+00138 <span class="comment">// run all chains.</span>
+00139 <span class="keywordflow">for</span>(i=0;i&lt;(<a class="code" href="a04558.html#a14">sint</a>)ochains.size();i++)
+00140 {
+00141 <span class="keyword">const</span> std::vector&lt;CVector2s&gt; &amp;vertices= ochains[i].getVertices();
+00142
+00143 <span class="comment">// run all vertices.</span>
+00144 <span class="keywordflow">for</span>(j= 0; j&lt;(<a class="code" href="a04558.html#a14">sint</a>)vertices.size();j++)
+00145 {
+00146 <span class="comment">// enlarge bbox.</span>
+00147 <span class="keywordflow">if</span>(first)
+00148 first= <span class="keyword">false</span>, chainquadBBox.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1902_1">setCenter</a>(vertices[j].unpack3f());
+00149 <span class="keywordflow">else</span>
+00150 chainquadBBox.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxExtz1902_0">extend</a>(vertices[j].unpack3f());
+00151 }
+00152 }
+00153
+00154 <span class="comment">// compute X,Y,Width, Height.</span>
+00155 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr5">_X</a>= (<a class="code" href="a04558.html#a10">sint32</a>)floor(chainquadBBox.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_5">getMin</a>().x / <a class="code" href="a02334.html#NLPACS_1_1CChainQuadv0">_QuadElementSize</a>);
+00156 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr6">_Y</a>= (<a class="code" href="a04558.html#a10">sint32</a>)floor(chainquadBBox.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_5">getMin</a>().y / <a class="code" href="a02334.html#NLPACS_1_1CChainQuadv0">_QuadElementSize</a>);
+00157 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr4">_Width</a>= (<a class="code" href="a04558.html#a10">sint32</a>)ceil(chainquadBBox.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_3">getMax</a>().x / <a class="code" href="a02334.html#NLPACS_1_1CChainQuadv0">_QuadElementSize</a>) - <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr5">_X</a>;
+00158 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr0">_Height</a>= (<a class="code" href="a04558.html#a10">sint32</a>)ceil(chainquadBBox.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_3">getMax</a>().y / <a class="code" href="a02334.html#NLPACS_1_1CChainQuadv0">_QuadElementSize</a>) - <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr6">_Y</a>;
+00159
+00160 tempQuad.resize(_Width*_Height);
+00161 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr1">_Quad</a>.resize(_Width*_Height, NULL);
+00162
+00163
+00164 <span class="comment">// 1. For each edge, add them to the quadgrid.</span>
+00165 <span class="comment">//=========================================</span>
+00166 <span class="comment">// run all chains.</span>
+00167 <span class="keywordflow">for</span>(i=0;i&lt;(<a class="code" href="a04558.html#a14">sint</a>)ochains.size();i++)
+00168 {
+00169 <span class="keyword">const</span> std::vector&lt;CVector2s&gt; &amp;vertices= ochains[i].getVertices();
+00170
+00171 <a class="code" href="a04558.html#a14">sint</a> numEdges= (<a class="code" href="a04558.html#a14">sint</a>)vertices.size()-1;
+00172
+00173 <span class="comment">// run all edges.</span>
+00174 <span class="keywordflow">for</span>(j= 0; j&lt;numEdges; j++)
+00175 {
+00176 <span class="keyword">const</span> CVector p0= vertices[j].unpack3f();
+00177 <span class="keyword">const</span> CVector p1= vertices[j+1].unpack3f();
+00178 CVector minP,maxP;
+00179 minP.minof(p0, p1);
+00180 maxP.maxof(p0, p1);
+00181 <span class="comment">// PrecisionPb: extend a little this edge. This is important for special case like borders on zones.</span>
+00182 <span class="keywordflow">if</span>(minP.x-maxP.x==0)
+00183 minP.x-=0.001f, maxP.x+=0.001f;
+00184 <span class="keywordflow">if</span>(minP.y-maxP.y==0)
+00185 minP.y-=0.001f, maxP.y+=0.001f;
+00186
+00187
+00188 <span class="comment">// get bounding coordinate of this edge in the quadgrid.</span>
+00189 <a class="code" href="a04558.html#a10">sint32</a> x0, y0, x1, y1;
+00190 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadd1">getGridBounds</a>(x0, y0, x1, y1, minP, maxP);
+00191
+00192 <span class="comment">// add this edge to all the quadnode it touch.</span>
+00193 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> <a class="code" href="a04223.html#a573">y</a>= y0; <a class="code" href="a04223.html#a573">y</a>&lt;y1; <a class="code" href="a04223.html#a573">y</a>++)
+00194 {
+00195 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> <a class="code" href="a04223.html#a572">x</a>= x0; <a class="code" href="a04223.html#a572">x</a>&lt;x1; <a class="code" href="a04223.html#a572">x</a>++)
+00196 {
+00197 <a class="code" href="a03889.html">list&lt;CEdgeChainEntry&gt;</a> &amp;quadNode= tempQuad[<a class="code" href="a04223.html#a573">y</a>*<a class="code" href="a02334.html#NLPACS_1_1CChainQuadr4">_Width</a>+<a class="code" href="a04223.html#a572">x</a>];
+00198
+00199 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadd0">addEdgeToQuadNode</a>(quadNode, i, j);
+00200 }
+00201 }
+00202 }
+00203 }
+00204
+00205
+00206 <span class="comment">// 2. Mem optimisation: Use only 1 block for ALL quads of the grid.</span>
+00207 <span class="comment">//=========================================</span>
+00208 <a class="code" href="a04558.html#a14">sint</a> memSize= 0;
+00209 <span class="comment">// run all quads.</span>
+00210 <span class="keywordflow">for</span>(i=0;i&lt;(<a class="code" href="a04558.html#a14">sint</a>)tempQuad.size();i++)
+00211 {
+00212 <a class="code" href="a03889.html">list&lt;CEdgeChainEntry&gt;</a> &amp;quadNode= tempQuad[i];
+00213
+00214 <span class="keywordflow">if</span>(!quadNode.empty())
+00215 {
+00216 <span class="comment">// add an entry for Len.</span>
+00217 memSize+= <span class="keyword">sizeof</span>(<a class="code" href="a04558.html#a9">uint16</a>);
+00218 <span class="comment">// add N entry of CEdgeChainEntry.</span>
+00219 memSize+= quadNode.size()*<span class="keyword">sizeof</span>(CEdgeChainEntry);
+00220 }
+00221 }
+00222
+00223 <span class="comment">// allocate.</span>
+00224 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>= (<a class="code" href="a04558.html#a7">uint8</a>*)<span class="keyword">new</span> <a class="code" href="a04558.html#a7">uint8</a>[memSize];
+00225 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr3">_QuadDataLen</a>= memSize;
+00226
+00227
+00228 <span class="comment">// 3. Fill _QuadData with lists.</span>
+00229 <span class="comment">//=========================================</span>
+00230 <a class="code" href="a04558.html#a7">uint8</a> *ptr= <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>;
+00231 <span class="keywordflow">for</span>(i=0;i&lt;(<a class="code" href="a04558.html#a14">sint</a>)tempQuad.size();i++)
+00232 {
+00233 <a class="code" href="a03889.html">list&lt;CEdgeChainEntry&gt;</a> &amp;srcQuadNode= tempQuad[i];
+00234 <a class="code" href="a03889.html">list&lt;CEdgeChainEntry&gt;</a>::iterator it;
+00235
+00236 <span class="keywordflow">if</span>(!srcQuadNode.empty())
+00237 {
+00238 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr1">_Quad</a>[i]= ptr;
+00239
+00240 <span class="comment">// write len.</span>
+00241 <a class="code" href="a04558.html#a9">uint16</a> <a class="code" href="a04223.html#a571">len</a>= srcQuadNode.size();
+00242 *((<a class="code" href="a04558.html#a9">uint16</a>*)ptr)= <a class="code" href="a04223.html#a571">len</a>;
+00243 ptr+= <span class="keyword">sizeof</span>(<a class="code" href="a04558.html#a9">uint16</a>);
+00244
+00245 <span class="comment">// add entries.</span>
+00246 it= srcQuadNode.begin();
+00247 <span class="keywordflow">for</span>(j=0; j&lt;<a class="code" href="a04223.html#a571">len</a>; j++, it++)
+00248 {
+00249 *((CEdgeChainEntry*)ptr)= *it;
+00250 ptr+= <span class="keyword">sizeof</span>(CEdgeChainEntry);
+00251 }
+00252 }
+00253 }
+00254
+00255
+00256 <span class="comment">// End.</span>
+00257 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuada3" doxytag="NLPACS::CChainQuad::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" nowrap valign="top"> void NLPACS::CChainQuad::clear </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+clear
+<p>
+
+<p>
+Definition at line <a class="el" href="a05542.html#l00099">99</a> of file <a class="el" href="a05542.html">chain_quad.h</a>.
+<p>
+References <a class="el" href="a05542.html#l00126">_QuadData</a>, <a class="el" href="a05542.html#l00128">_QuadDataLen</a>, and <a class="el" href="a05587.html#l00141">NLMISC::contReset()</a>.
+<p>
+Referenced by <a class="el" href="a05929.html#l00064">NLPACS::CLocalRetriever::clear()</a>.
+<p>
+<div class="fragment"><pre>00100 {
+00101 <a class="code" href="a05378.html#a381">NLMISC::contReset</a>(_Quad);
+00102 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr4">_Width</a> = 0;
+00103 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr0">_Height</a> = 0;
+00104 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr5">_X</a> = 0;
+00105 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr6">_Y</a> = 0;
+00106 <span class="keyword">delete</span> [] <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>;
+00107 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a> = NULL;
+00108 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr3">_QuadDataLen</a> = 0;
+00109 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuadd1" doxytag="NLPACS::CChainQuad::getGridBounds" ></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 NLPACS::CChainQuad::getGridBounds </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a10">sint32</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>x0</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a10">sint32</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>y0</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a10">sint32</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>x1</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a10">sint32</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>y1</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>minP</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>maxP</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"> const<code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05541.html#l00102">102</a> of file <a class="el" href="a05541.html">chain_quad.cpp</a>.
+<p>
+References <a class="el" href="a05541.html#l00039">_QuadElementSize</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>.
+<p>
+Referenced by <a class="el" href="a05541.html#l00122">build()</a>, and <a class="el" href="a05541.html#l00289">selectEdges()</a>.
+<p>
+<div class="fragment"><pre>00103 {
+00104 x0= (<a class="code" href="a04558.html#a10">sint32</a>)floor(minP.x / _QuadElementSize) - <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr5">_X</a>;
+00105 y0= (<a class="code" href="a04558.html#a10">sint32</a>)floor(minP.y / _QuadElementSize) - <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr6">_Y</a>;
+00106 x1= (<a class="code" href="a04558.html#a10">sint32</a>) ceil(maxP.x / _QuadElementSize) - <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr5">_X</a>;
+00107 y1= (<a class="code" href="a04558.html#a10">sint32</a>) ceil(maxP.y / _QuadElementSize) - <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr6">_Y</a>;
+00108 <span class="comment">// Manage selection of a point exactly on a quad bound</span>
+00109 <span class="keywordflow">if</span>(x1-x0==0)
+00110 x0--, x1++;
+00111 <span class="keywordflow">if</span>(y1-y0==0)
+00112 y0--, y1++;
+00113 <span class="comment">// clamp</span>
+00114 x0= max(x0, (<a class="code" href="a04558.html#a10">sint32</a>)0);
+00115 y0= max(y0, (<a class="code" href="a04558.html#a10">sint32</a>)0);
+00116 x1= <a class="code" href="a04061.html#a0">min</a>(x1, (<a class="code" href="a04558.html#a10">sint32</a>)_Width);
+00117 y1= <a class="code" href="a04061.html#a0">min</a>(y1, (<a class="code" href="a04558.html#a10">sint32</a>)_Height);
+00118 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuada4" doxytag="NLPACS::CChainQuad::operator=" ></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="a02334.html">CChainQuad</a> &amp; NLPACS::CChainQuad::operator= </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02334.html">CChainQuad</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>o</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+operator=.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05541.html#l00063">63</a> of file <a class="el" href="a05541.html">chain_quad.cpp</a>.
+<p>
+References <a class="el" href="a05542.html#l00122">_Height</a>, <a class="el" href="a05542.html#l00118">_Quad</a>, <a class="el" href="a05542.html#l00126">_QuadData</a>, <a class="el" href="a05542.html#l00128">_QuadDataLen</a>, <a class="el" href="a05542.html#l00120">_Width</a>, <a class="el" href="a05542.html#l00124">_X</a>, <a class="el" href="a05542.html#l00124">_Y</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00100">uint32</a>, and <a class="el" href="a05981.html#l00096">uint8</a>.
+<p>
+<div class="fragment"><pre>00064 {
+00065 <span class="comment">// Alloc good quaddata.</span>
+00066 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr3">_QuadDataLen</a>= o._QuadDataLen;
+00067 <span class="keyword">delete</span> [] <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>;
+00068 <span class="keywordflow">if</span>(<a class="code" href="a02334.html#NLPACS_1_1CChainQuadr3">_QuadDataLen</a>&gt;0)
+00069 {
+00070 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>= (<a class="code" href="a04558.html#a7">uint8</a>*)<span class="keyword">new</span> <a class="code" href="a04558.html#a7">uint8</a>[<a class="code" href="a02334.html#NLPACS_1_1CChainQuadr3">_QuadDataLen</a>];
+00071 <span class="comment">// copy contents.</span>
+00072 memcpy(_QuadData, o._QuadData, _QuadDataLen);
+00073 }
+00074 <span class="keywordflow">else</span>
+00075 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>= NULL;
+00076
+00077 <span class="comment">// copy infos.</span>
+00078 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr4">_Width</a>= o._Width;
+00079 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr0">_Height</a>= o._Height;
+00080 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr5">_X</a>= o._X;
+00081 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr6">_Y</a>= o._Y;
+00082
+00083 <span class="comment">// copy good pointers.</span>
+00084 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr1">_Quad</a>.clear();
+00085 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr1">_Quad</a>.resize(o._Quad.size(), NULL);
+00086 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> i=0; i&lt;(<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02334.html#NLPACS_1_1CChainQuadr1">_Quad</a>.size(); i++)
+00087 {
+00088 <span class="keywordflow">if</span>(o._Quad[i])
+00089 {
+00090 <a class="code" href="a04558.html#a11">uint32</a> off= (<a class="code" href="a04558.html#a11">uint32</a>)(o._Quad[i]-o._QuadData);
+00091 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr1">_Quad</a>[i]= <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>+off;
+00092 }
+00093 }
+00094
+00095
+00096 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+00097 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuada5" doxytag="NLPACS::CChainQuad::selectEdges" ></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#a14">sint</a> NLPACS::CChainQuad::selectEdges </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03128.html">CVector</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>start</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03128.html">CVector</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>end</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02387.html">CCollisionSurfaceTemp</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>cst</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+look in the quad to select a list of chain from a bbox. NB: The outpout do not contains any redundant edge. A OChain appears only one time in the result. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>start</em>&nbsp;</td><td>the starting point of the selection segment. </td></tr>
+ <tr><td valign=top><em>end</em>&nbsp;</td><td>the ending point of the selection segment. </td></tr>
+ <tr><td valign=top><em>cst</em>&nbsp;</td><td>the array of <a class="el" href="a02447.html">CEdgeChainEntry</a> to fill. contain also OChainLUT, an array for internal use. In: must be filled with 0xFFFF. Out: still filled with 0xFFFF. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>number of edgechain found. stored in cst.EdgeChainEntries (array cleared first).</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05541.html#l00356">356</a> of file <a class="el" href="a05541.html">chain_quad.cpp</a>.
+<p>
+References <a class="el" href="a05541.html#l00039">_QuadElementSize</a>, <a class="el" href="a05583.html#l00287">NLPACS::CCollisionSurfaceTemp::EdgeChainEntries</a>, <a class="el" href="a05583.html#l00128">NLPACS::CEdgeChainEntry::EdgeEnd</a>, <a class="el" href="a05583.html#l00126">NLPACS::CEdgeChainEntry::EdgeStart</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a05583.html#l00124">NLPACS::CEdgeChainEntry::OChainId</a>, <a class="el" href="a05583.html#l00286">NLPACS::CCollisionSurfaceTemp::OChainLUT</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a05981.html#l00098">uint16</a>, <a class="el" href="a05981.html#l00096">uint8</a>, <a class="el" href="a05646.html#l00236">x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a05646.html#l00236">y</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>.
+<p>
+<div class="fragment"><pre>00357 {
+00358 <a class="code" href="a04558.html#a14">sint</a> nRes=0;
+00359 <a class="code" href="a04558.html#a14">sint</a> i;
+00360 <a class="code" href="a04558.html#a9">uint16</a> *ochainLUT= cst.OChainLUT;
+00361
+00362 <span class="comment">// start: no edge found.</span>
+00363 cst.EdgeChainEntries.clear();
+00364
+00365 <span class="keywordflow">if</span> (end.x &lt; start.x)
+00366 swap(start, end);
+00367
+00368 <span class="keywordtype">float</span> minx = <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr5">_X</a>*<a class="code" href="a02334.html#NLPACS_1_1CChainQuadv0">_QuadElementSize</a>,
+00369 miny = <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr6">_Y</a>*_QuadElementSize,
+00370 maxx = minx + <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr4">_Width</a>*_QuadElementSize,
+00371 maxy = miny + <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr0">_Height</a>*_QuadElementSize;
+00372
+00373 <span class="keywordflow">if</span> (start.x &gt; maxx || end.x &lt; minx || start.y &gt; maxy || end.y &lt; miny)
+00374 <span class="keywordflow">return</span> nRes;
+00375
+00376 <span class="keywordflow">if</span> (start.x &lt; minx)
+00377 {
+00378 start.y = start.y+(end.y-start.y)*(minx-start.x)/(end.x-start.x);
+00379 start.x = minx;
+00380 }
+00381
+00382 <span class="keywordflow">if</span> (start.y &lt; miny)
+00383 {
+00384 start.x = start.x+(end.x-start.x)*(miny-start.y)/(end.y-start.y);
+00385 start.y = miny;
+00386 }
+00387
+00388 <span class="keywordflow">if</span> (end.x &gt; maxx)
+00389 {
+00390 end.y = start.y+(end.y-start.y)*(minx-start.x)/(end.x-start.x);
+00391 end.x = maxx;
+00392 }
+00393
+00394 <span class="keywordflow">if</span> (end.y &gt; maxy)
+00395 {
+00396 end.x = start.x+(end.x-start.x)*(miny-start.y)/(end.y-start.y);
+00397 end.y = maxy;
+00398 }
+00399
+00400 <a class="code" href="a04558.html#a10">sint32</a> x0, x1, ya, yb;
+00401 <a class="code" href="a04558.html#a14">sint</a> <a class="code" href="a04223.html#a572">x</a>, <a class="code" href="a04223.html#a573">y</a>;
+00402 <span class="keywordtype">float</span> fx, fxa, fxb, fya, fyb;
+00403
+00404 x0 = (<a class="code" href="a04558.html#a10">sint32</a>)floor(start.x / _QuadElementSize) - <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr5">_X</a>;
+00405 x1 = (<a class="code" href="a04558.html#a10">sint32</a>)ceil(end.x / _QuadElementSize) - <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr5">_X</a>;
+00406 fx = (x0+<a class="code" href="a02334.html#NLPACS_1_1CChainQuadr5">_X</a>)*_QuadElementSize;
+00407
+00408 <span class="keywordflow">for</span> (<a class="code" href="a04223.html#a572">x</a>=x0; <a class="code" href="a04223.html#a572">x</a>&lt;x1; ++<a class="code" href="a04223.html#a572">x</a>)
+00409 {
+00410 fxa = (fx &lt; start.x) ? start.x : fx;
+00411 fxb = (fx+_QuadElementSize &gt; end.x) ? end.x : fx+_QuadElementSize;
+00412
+00413 fya = start.y+(end.y-start.y)*(fxa-start.x)/(end.x-start.x);
+00414 fyb = start.y+(end.y-start.y)*(fxb-start.x)/(end.x-start.x);
+00415
+00416 <span class="keywordflow">if</span> (fya &gt; fyb)
+00417 swap (fya, fyb);
+00418
+00419 ya = (<a class="code" href="a04558.html#a10">sint32</a>)floor(fya / _QuadElementSize) - <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr6">_Y</a>;
+00420 yb = (<a class="code" href="a04558.html#a10">sint32</a>)ceil(fyb / _QuadElementSize) - <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr6">_Y</a>;
+00421
+00422 fx += _QuadElementSize;
+00423
+00424 <span class="keywordflow">for</span> (<a class="code" href="a04223.html#a573">y</a>=ya; <a class="code" href="a04223.html#a573">y</a>&lt;yb; ++<a class="code" href="a04223.html#a573">y</a>)
+00425 {
+00426 <a class="code" href="a04558.html#a7">uint8</a> *quadNode= <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr1">_Quad</a>[<a class="code" href="a04223.html#a573">y</a>*<a class="code" href="a02334.html#NLPACS_1_1CChainQuadr4">_Width</a>+<a class="code" href="a04223.html#a572">x</a>];
+00427
+00428 <span class="comment">// no edgechain entry??</span>
+00429 <span class="keywordflow">if</span>(!quadNode)
+00430 <span class="keywordflow">continue</span>;
+00431
+00432 <span class="comment">// get edgechain entries</span>
+00433 <a class="code" href="a04558.html#a14">sint</a> numEdgeChainEntries= *((<a class="code" href="a04558.html#a9">uint16</a>*)quadNode);
+00434 quadNode+= <span class="keyword">sizeof</span>(<a class="code" href="a04558.html#a9">uint16</a>);
+00435 CEdgeChainEntry *ptrEdgeChainEntry= (CEdgeChainEntry*)quadNode;
+00436
+00437 <span class="comment">// For each one, add it to the result list.</span>
+00438 <span class="keywordflow">for</span>(i=0;i&lt;numEdgeChainEntries;i++)
+00439 {
+00440 <a class="code" href="a04558.html#a9">uint16</a> ochainId= ptrEdgeChainEntry[i].OChainId;
+00441
+00442 <span class="comment">// if ochain not yet inserted.</span>
+00443 <span class="keywordflow">if</span>(ochainLUT[ochainId]==0xFFFF)
+00444 {
+00445 <span class="comment">// inc the list.</span>
+00446 ochainLUT[ochainId]= nRes;
+00447 cst.EdgeChainEntries.push_back(ptrEdgeChainEntry[i]);
+00448 nRes++;
+00449 }
+00450 <span class="keywordflow">else</span>
+00451 {
+00452 <span class="comment">// extend the entry in the list.</span>
+00453 <a class="code" href="a04558.html#a9">uint16</a> <span class="keywordtype">id</span>= ochainLUT[ochainId];
+00454 CEdgeChainEntry &amp;ece= cst.EdgeChainEntries[<span class="keywordtype">id</span>];
+00455 ece.EdgeStart= <a class="code" href="a04061.html#a0">min</a>(ece.EdgeStart, ptrEdgeChainEntry[i].EdgeStart);
+00456 ece.EdgeEnd= max(ece.EdgeEnd, ptrEdgeChainEntry[i].EdgeEnd);
+00457 }
+00458 }
+00459 }
+00460 }
+00461
+00462 <span class="comment">// reset LUT to 0xFFFF for all ochains selected.</span>
+00463 <span class="keywordflow">for</span>(i=0;i&lt;nRes;i++)
+00464 {
+00465 <a class="code" href="a04558.html#a9">uint16</a> ochainId= cst.EdgeChainEntries[i].OChainId;
+00466 ochainLUT[ochainId]= 0xFFFF;
+00467 }
+00468
+00469 <span class="keywordflow">return</span> nRes;
+00470 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuada6" doxytag="NLPACS::CChainQuad::selectEdges" ></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#a14">sint</a> NLPACS::CChainQuad::selectEdges </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02156.html">NLMISC::CAABBox</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>bbox</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02387.html">CCollisionSurfaceTemp</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>cst</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+look in the quad to select a list of chain from a bbox. NB: The outpout do not contains any redundant edge. A OChain appears only one time in the result. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>bbox</em>&nbsp;</td><td>the area of interest. </td></tr>
+ <tr><td valign=top><em>cst</em>&nbsp;</td><td>the array of <a class="el" href="a02447.html">CEdgeChainEntry</a> to fill. contain also OChainLUT, an array for internal use. In: must be filled with 0xFFFF. Out: still filled with 0xFFFF. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>number of edgechain found. stored in cst.EdgeChainEntries (array cleared first).</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05541.html#l00289">289</a> of file <a class="el" href="a05541.html">chain_quad.cpp</a>.
+<p>
+References <a class="el" href="a05583.html#l00287">NLPACS::CCollisionSurfaceTemp::EdgeChainEntries</a>, <a class="el" href="a05583.html#l00128">NLPACS::CEdgeChainEntry::EdgeEnd</a>, <a class="el" href="a05583.html#l00126">NLPACS::CEdgeChainEntry::EdgeStart</a>, <a class="el" href="a05541.html#l00102">getGridBounds()</a>, <a class="el" href="a05385.html#l00087">NLMISC::CAABBox::getMax()</a>, <a class="el" href="a05385.html#l00086">NLMISC::CAABBox::getMin()</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a05583.html#l00124">NLPACS::CEdgeChainEntry::OChainId</a>, <a class="el" href="a05583.html#l00286">NLPACS::CCollisionSurfaceTemp::OChainLUT</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a05981.html#l00098">uint16</a>, <a class="el" href="a05981.html#l00096">uint8</a>, <a class="el" href="a05646.html#l00236">x</a>, and <a class="el" href="a05646.html#l00236">y</a>.
+<p>
+Referenced by <a class="el" href="a05929.html#l01576">NLPACS::CLocalRetriever::findPath()</a>, <a class="el" href="a05761.html#l00275">NLPACS::CGlobalRetriever::getBorders()</a>, <a class="el" href="a05929.html#l01238">NLPACS::CLocalRetriever::retrieveAccuratePosition()</a>, <a class="el" href="a05929.html#l01064">NLPACS::CLocalRetriever::retrievePosition()</a>, and <a class="el" href="a05929.html#l01807">NLPACS::CLocalRetriever::testCollision()</a>.
+<p>
+<div class="fragment"><pre>00290 {
+00291 <a class="code" href="a04558.html#a14">sint</a> nRes=0;
+00292 <a class="code" href="a04558.html#a14">sint</a> i;
+00293 <a class="code" href="a04558.html#a9">uint16</a> *ochainLUT= cst.OChainLUT;
+00294
+00295 <span class="comment">// start: no edge found.</span>
+00296 cst.EdgeChainEntries.clear();
+00297
+00298 <span class="comment">// get bounding coordinate of this bbox in the quadgrid.</span>
+00299 <a class="code" href="a04558.html#a10">sint32</a> x0, y0, x1, y1;
+00300 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadd1">getGridBounds</a>(x0, y0, x1, y1, bbox.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_5">getMin</a>(), bbox.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_3">getMax</a>());
+00301
+00302
+00303 <span class="comment">// run all intersected quads.</span>
+00304 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> <a class="code" href="a04223.html#a573">y</a>= y0; <a class="code" href="a04223.html#a573">y</a>&lt;y1; <a class="code" href="a04223.html#a573">y</a>++)
+00305 {
+00306 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> <a class="code" href="a04223.html#a572">x</a>= x0; <a class="code" href="a04223.html#a572">x</a>&lt;x1; <a class="code" href="a04223.html#a572">x</a>++)
+00307 {
+00308 <a class="code" href="a04558.html#a7">uint8</a> *quadNode= <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr1">_Quad</a>[<a class="code" href="a04223.html#a573">y</a>*<a class="code" href="a02334.html#NLPACS_1_1CChainQuadr4">_Width</a>+<a class="code" href="a04223.html#a572">x</a>];
+00309
+00310 <span class="comment">// no edgechain entry??</span>
+00311 <span class="keywordflow">if</span>(!quadNode)
+00312 <span class="keywordflow">continue</span>;
+00313
+00314 <span class="comment">// get edgechain entries</span>
+00315 <a class="code" href="a04558.html#a14">sint</a> numEdgeChainEntries= *((<a class="code" href="a04558.html#a9">uint16</a>*)quadNode);
+00316 quadNode+= <span class="keyword">sizeof</span>(<a class="code" href="a04558.html#a9">uint16</a>);
+00317 CEdgeChainEntry *ptrEdgeChainEntry= (CEdgeChainEntry*)quadNode;
+00318
+00319 <span class="comment">// For each one, add it to the result list.</span>
+00320 <span class="keywordflow">for</span>(i=0;i&lt;numEdgeChainEntries;i++)
+00321 {
+00322 <a class="code" href="a04558.html#a9">uint16</a> ochainId= ptrEdgeChainEntry[i].OChainId;
+00323
+00324 <span class="comment">// if ochain not yet inserted.</span>
+00325 <span class="keywordflow">if</span>(ochainLUT[ochainId]==0xFFFF)
+00326 {
+00327 <span class="comment">// inc the list.</span>
+00328 ochainLUT[ochainId]= nRes;
+00329 cst.EdgeChainEntries.push_back(ptrEdgeChainEntry[i]);
+00330 nRes++;
+00331 }
+00332 <span class="keywordflow">else</span>
+00333 {
+00334 <span class="comment">// extend the entry in the list.</span>
+00335 <a class="code" href="a04558.html#a9">uint16</a> <span class="keywordtype">id</span>= ochainLUT[ochainId];
+00336 CEdgeChainEntry &amp;ece= cst.EdgeChainEntries[<span class="keywordtype">id</span>];
+00337 ece.EdgeStart= <a class="code" href="a04061.html#a0">min</a>(ece.EdgeStart, ptrEdgeChainEntry[i].EdgeStart);
+00338 ece.EdgeEnd= max(ece.EdgeEnd, ptrEdgeChainEntry[i].EdgeEnd);
+00339 }
+00340 }
+00341 }
+00342 }
+00343
+00344
+00345 <span class="comment">// reset LUT to 0xFFFF for all ochains selected.</span>
+00346 <span class="keywordflow">for</span>(i=0;i&lt;nRes;i++)
+00347 {
+00348 <a class="code" href="a04558.html#a9">uint16</a> ochainId= cst.EdgeChainEntries[i].OChainId;
+00349 ochainLUT[ochainId]= 0xFFFF;
+00350 }
+00351
+00352
+00353 <span class="keywordflow">return</span> nRes;
+00354 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuada7" doxytag="NLPACS::CChainQuad::serial" ></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 NLPACS::CChainQuad::serial </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02270.html">NLMISC::IStream</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>f</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+serial.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05541.html#l00473">473</a> of file <a class="el" href="a05541.html">chain_quad.cpp</a>.
+<p>
+References <a class="el" href="a05542.html#l00126">_QuadData</a>, <a class="el" href="a05542.html#l00128">_QuadDataLen</a>, <a class="el" href="a06463.html#l00064">NLMISC::IStream::isReading()</a>, <a class="el" href="a05646.html#l00235">len</a>, <a class="el" href="a06462.html#l00232">NLMISC::IStream::serial()</a>, <a class="el" href="a06461.html#l00266">NLMISC::IStream::serialVersion()</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00098">uint16</a>, <a class="el" href="a05981.html#l00100">uint32</a>, and <a class="el" href="a05981.html#l00096">uint8</a>.
+<p>
+<div class="fragment"><pre>00474 {
+00475 <span class="comment">/*</span>
+00476 <span class="comment"> Version 0:</span>
+00477 <span class="comment"> - base version.</span>
+00478 <span class="comment"> */</span>
+00479 (<span class="keywordtype">void</span>)f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2035_8">serialVersion</a>(0);
+00480 <a class="code" href="a04558.html#a15">uint</a> i;
+00481
+00482 <span class="comment">// serial basics.</span>
+00483 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(_X, _Y, _Width, _Height, _QuadDataLen);
+00484
+00485
+00486 <span class="comment">// serial _QuadData.</span>
+00487 <span class="keywordflow">if</span>(f.<a class="code" href="a02270.html#NLMISC_1_1IStreama0">isReading</a>())
+00488 {
+00489 <span class="keyword">delete</span> [] <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>;
+00490 <span class="keywordflow">if</span>(<a class="code" href="a02334.html#NLPACS_1_1CChainQuadr3">_QuadDataLen</a>&gt;0)
+00491 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>= (<a class="code" href="a04558.html#a7">uint8</a>*)<span class="keyword">new</span> <a class="code" href="a04558.html#a7">uint8</a>[<a class="code" href="a02334.html#NLPACS_1_1CChainQuadr3">_QuadDataLen</a>];
+00492 <span class="keywordflow">else</span>
+00493 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>= NULL;
+00494 }
+00495 <span class="comment">// Since we have only uint16 (see CEdgeChainEntry), serial them in a single block.</span>
+00496 <a class="code" href="a04558.html#a9">uint16</a> *ptrQData= (<a class="code" href="a04558.html#a9">uint16</a>*)<a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>;
+00497 <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="a02334.html#NLPACS_1_1CChainQuadr3">_QuadDataLen</a>/2; i++, ptrQData++)
+00498 {
+00499 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(*ptrQData);
+00500 }
+00501
+00502
+00503 <span class="comment">// serial _Quad.</span>
+00504 std::vector&lt;uint32&gt; offsets;
+00505 <a class="code" href="a04558.html#a11">uint32</a> <a class="code" href="a04223.html#a571">len</a>;
+00506 <a class="code" href="a04558.html#a11">uint32</a> val;
+00507 <span class="keywordflow">if</span>(f.<a class="code" href="a02270.html#NLMISC_1_1IStreama0">isReading</a>())
+00508 {
+00509 <span class="comment">// len/resize.</span>
+00510 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(len);
+00511 offsets.resize(len);
+00512 <a class="code" href="a05378.html#a381">contReset</a>(_Quad);
+00513 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr1">_Quad</a>.resize(len);
+00514
+00515 <span class="comment">// read offsets -&gt; ptrs.</span>
+00516 <span class="keywordflow">for</span>(i=0; i&lt;<a class="code" href="a04223.html#a571">len</a>; i++)
+00517 {
+00518 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(val);
+00519 <span class="keywordflow">if</span>(val== 0xFFFFFFFF)
+00520 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr1">_Quad</a>[i]= NULL;
+00521 <span class="keywordflow">else</span>
+00522 <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr1">_Quad</a>[i]= <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>+val;
+00523 }
+00524 }
+00525 <span class="keywordflow">else</span>
+00526 {
+00527 <span class="comment">// len/resize.</span>
+00528 <a class="code" href="a04223.html#a571">len</a>= <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr1">_Quad</a>.size();
+00529 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(len);
+00530
+00531 <span class="comment">// write offsets.</span>
+00532 <span class="keywordflow">for</span>(i=0; i&lt;<a class="code" href="a04223.html#a571">len</a>; i++)
+00533 {
+00534 <a class="code" href="a04558.html#a7">uint8</a> *ptr= <a class="code" href="a02334.html#NLPACS_1_1CChainQuadr1">_Quad</a>[i];
+00535 <span class="keywordflow">if</span>(ptr==NULL)
+00536 val= 0xFFFFFFFF;
+00537 <span class="keywordflow">else</span>
+00538 val= (<a class="code" href="a04558.html#a11">uint32</a>)(ptr-<a class="code" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a>);
+00539 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(val);
+00540 }
+00541 }
+00542
+00543 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="NLPACS_1_1CChainQuadr0" doxytag="NLPACS::CChainQuad::_Height" ></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#a11">uint32</a> <a class="el" href="a02334.html#NLPACS_1_1CChainQuadr0">NLPACS::CChainQuad::_Height</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Height of the quadgrid.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05542.html#l00122">122</a> of file <a class="el" href="a05542.html">chain_quad.h</a>.
+<p>
+Referenced by <a class="el" href="a05541.html#l00063">operator=()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuadr1" doxytag="NLPACS::CChainQuad::_Quad" ></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"> std::vector&lt;<a class="el" href="a04558.html#a7">uint8</a>*&gt; <a class="el" href="a02334.html#NLPACS_1_1CChainQuadr1">NLPACS::CChainQuad::_Quad</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+W*H pointers on array of <a class="el" href="a02447.html">CEdgeChainEntry</a>. NULL if no edge in this quad. Each array is 1xuint16(LEN) + LEN*CEdgeChainEntry.
+<p>
+Definition at line <a class="el" href="a05542.html#l00118">118</a> of file <a class="el" href="a05542.html">chain_quad.h</a>.
+<p>
+Referenced by <a class="el" href="a05541.html#l00063">operator=()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuadr2" doxytag="NLPACS::CChainQuad::_QuadData" ></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#a7">uint8</a>* <a class="el" href="a02334.html#NLPACS_1_1CChainQuadr2">NLPACS::CChainQuad::_QuadData</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Single memory block of <a class="el" href="a02447.html">CEdgeChainEntry</a> chains.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05542.html#l00126">126</a> of file <a class="el" href="a05542.html">chain_quad.h</a>.
+<p>
+Referenced by <a class="el" href="a05541.html#l00122">build()</a>, <a class="el" href="a05541.html#l00043">CChainQuad()</a>, <a class="el" href="a05542.html#l00099">clear()</a>, <a class="el" href="a05541.html#l00063">operator=()</a>, <a class="el" href="a05541.html#l00473">serial()</a>, and <a class="el" href="a05541.html#l00049">~CChainQuad()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuadr3" doxytag="NLPACS::CChainQuad::_QuadDataLen" ></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#a11">uint32</a> <a class="el" href="a02334.html#NLPACS_1_1CChainQuadr3">NLPACS::CChainQuad::_QuadDataLen</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+size (in byte) of _QuadData.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05542.html#l00128">128</a> of file <a class="el" href="a05542.html">chain_quad.h</a>.
+<p>
+Referenced by <a class="el" href="a05541.html#l00122">build()</a>, <a class="el" href="a05541.html#l00043">CChainQuad()</a>, <a class="el" href="a05542.html#l00099">clear()</a>, <a class="el" href="a05541.html#l00063">operator=()</a>, <a class="el" href="a05541.html#l00473">serial()</a>, and <a class="el" href="a05541.html#l00049">~CChainQuad()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuadv0" doxytag="NLPACS::CChainQuad::_QuadElementSize" ></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"> const float <a class="el" href="a02334.html#NLPACS_1_1CChainQuadv0">NLPACS::CChainQuad::_QuadElementSize</a> = 4<code> [static, private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05541.html#l00039">39</a> of file <a class="el" href="a05541.html">chain_quad.cpp</a>.
+<p>
+Referenced by <a class="el" href="a05541.html#l00122">build()</a>, <a class="el" href="a05541.html#l00102">getGridBounds()</a>, and <a class="el" href="a05541.html#l00356">selectEdges()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuadr4" doxytag="NLPACS::CChainQuad::_Width" ></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#a11">uint32</a> <a class="el" href="a02334.html#NLPACS_1_1CChainQuadr4">NLPACS::CChainQuad::_Width</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Width of the quadgrid.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05542.html#l00120">120</a> of file <a class="el" href="a05542.html">chain_quad.h</a>.
+<p>
+Referenced by <a class="el" href="a05541.html#l00063">operator=()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuadr5" doxytag="NLPACS::CChainQuad::_X" ></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#a10">sint32</a> <a class="el" href="a02334.html#NLPACS_1_1CChainQuadr5">NLPACS::CChainQuad::_X</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Postion of the chainquad.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05542.html#l00124">124</a> of file <a class="el" href="a05542.html">chain_quad.h</a>.
+<p>
+Referenced by <a class="el" href="a05541.html#l00063">operator=()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLPACS_1_1CChainQuadr6" doxytag="NLPACS::CChainQuad::_Y" ></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#a10">sint32</a> <a class="el" href="a02334.html#NLPACS_1_1CChainQuadr6">NLPACS::CChainQuad::_Y</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Postion of the chainquad.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05542.html#l00124">124</a> of file <a class="el" href="a05542.html">chain_quad.h</a>.
+<p>
+Referenced by <a class="el" href="a05541.html#l00063">operator=()</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="a05542.html">chain_quad.h</a><li><a class="el" href="a05541.html">chain_quad.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 14:09:45 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>