diff options
Diffstat (limited to '')
-rw-r--r-- | docs/doxygen/nel/a02334.html | 1283 |
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 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>NLPACS::CChainQuad Class Reference</h1><code>#include <<a class="el" href="a05542.html">chain_quad.h</a>></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 </td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuada0">build</a> (const std::vector< <a class="el" href="a03027.html">COrderedChain</a> > &ochains)</td></tr> + +<tr><td class="mdescLeft"> </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> </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> &o)</td></tr> + +<tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuada2">CChainQuad</a> ()</td></tr> + +<tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuada3">clear</a> ()</td></tr> + +<tr><td class="mdescLeft"> </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> & </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> &o)</td></tr> + +<tr><td class="mdescLeft"> </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> </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> &cst) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a14">sint</a> </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> &bbox, <a class="el" href="a02387.html">CCollisionSurfaceTemp</a> &cst) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </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> &f)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">serial. <a href="#NLPACS_1_1CChainQuada7"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top> </td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuada8">~CChainQuad</a> ()</td></tr> + +<tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadd0">addEdgeToQuadNode</a> (std::list< <a class="el" href="a02447.html">CEdgeChainEntry</a> > &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 </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> &x0, <a class="el" href="a04558.html#a10">sint32</a> &y0, <a class="el" href="a04558.html#a10">sint32</a> &x1, <a class="el" href="a04558.html#a10">sint32</a> &y1, const <a class="el" href="a03128.html">CVector</a> &minP, const <a class="el" href="a03128.html">CVector</a> &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> </td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadr0">_Height</a></td></tr> + +<tr><td class="mdescLeft"> </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< <a class="el" href="a04558.html#a7">uint8</a> * > </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> * </td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadr2">_QuadData</a></td></tr> + +<tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadr3">_QuadDataLen</a></td></tr> + +<tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadr4">_Width</a></td></tr> + +<tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadr5">_X</a></td></tr> + +<tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadr6">_Y</a></td></tr> + +<tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign=bottom><a class="el" href="a02334.html#NLPACS_1_1CChainQuadv0">_QuadElementSize</a> = 4</td></tr> + +</table> +<hr><h2>Constructor & 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">( </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> +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">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a02334.html">CChainQuad</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>o</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> +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">( </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> +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">( </td> + <td class="md" nowrap valign="top">std::list< <a class="el" href="a02447.html">CEdgeChainEntry</a> > & </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> </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> </td> + <td class="mdname" nowrap> <em>edgeId</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [private]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="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<CEdgeChainEntry></a>::iterator it; +00266 <span class="keywordflow">for</span>(it= quadNode.begin(); it!=quadNode.end();it++) +00267 { +00268 <span class="keywordflow">if</span>(it->OChainId==ochainId) +00269 { +00270 <span class="comment">// selection is faster if we only manages a single start/end block.</span> +00271 it->EdgeStart= <a class="code" href="a04061.html#a0">min</a>(it->EdgeStart, (<a class="code" href="a04558.html#a9">uint16</a>)edgeId); +00272 it->EdgeEnd= max(it->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">( </td> + <td class="md" nowrap valign="top">const std::vector< <a class="el" href="a03027.html">COrderedChain</a> > & </td> + <td class="mdname1" valign="top" nowrap> <em>ochains</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> +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< list<CEdgeChainEntry> > 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<(<a class="code" href="a04558.html#a14">sint</a>)ochains.size();i++) +00140 { +00141 <span class="keyword">const</span> std::vector<CVector2s> &vertices= ochains[i].getVertices(); +00142 +00143 <span class="comment">// run all vertices.</span> +00144 <span class="keywordflow">for</span>(j= 0; j<(<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<(<a class="code" href="a04558.html#a14">sint</a>)ochains.size();i++) +00168 { +00169 <span class="keyword">const</span> std::vector<CVector2s> &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<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><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><x1; <a class="code" href="a04223.html#a572">x</a>++) +00196 { +00197 <a class="code" href="a03889.html">list<CEdgeChainEntry></a> &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<(<a class="code" href="a04558.html#a14">sint</a>)tempQuad.size();i++) +00211 { +00212 <a class="code" href="a03889.html">list<CEdgeChainEntry></a> &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<(<a class="code" href="a04558.html#a14">sint</a>)tempQuad.size();i++) +00232 { +00233 <a class="code" href="a03889.html">list<CEdgeChainEntry></a> &srcQuadNode= tempQuad[i]; +00234 <a class="code" href="a03889.html">list<CEdgeChainEntry></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<<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">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a10">sint32</a> & </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> & </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> & </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> & </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> & </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> & </td> + <td class="mdname" nowrap> <em>maxP</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </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> + + </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> & NLPACS::CChainQuad::operator= </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a02334.html">CChainQuad</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>o</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> +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>>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<(<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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a03128.html">CVector</a> </td> + <td class="mdname" nowrap> <em>start</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a03128.html">CVector</a> </td> + <td class="mdname" nowrap> <em>end</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a02387.html">CCollisionSurfaceTemp</a> & </td> + <td class="mdname" nowrap> <em>cst</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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> </td><td>the starting point of the selection segment. </td></tr> + <tr><td valign=top><em>end</em> </td><td>the ending point of the selection segment. </td></tr> + <tr><td valign=top><em>cst</em> </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 < 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 > maxx || end.x < minx || start.y > maxy || end.y < miny) +00374 <span class="keywordflow">return</span> nRes; +00375 +00376 <span class="keywordflow">if</span> (start.x < 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 < 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 > 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 > 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><x1; ++<a class="code" href="a04223.html#a572">x</a>) +00409 { +00410 fxa = (fx < start.x) ? start.x : fx; +00411 fxb = (fx+_QuadElementSize > 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 > 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><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<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 &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<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">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a02156.html">NLMISC::CAABBox</a> & </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> & </td> + <td class="mdname" nowrap> <em>cst</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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> </td><td>the area of interest. </td></tr> + <tr><td valign=top><em>cst</em> </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><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><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<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 &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<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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02270.html">NLMISC::IStream</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>f</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> +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>>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<<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<uint32> 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 -> ptrs.</span> +00516 <span class="keywordflow">for</span>(i=0; i<<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<<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> + + </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<<a class="el" href="a04558.html#a7">uint8</a>*> <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> + + </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> + + </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> + + </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> + + </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> + + </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> + + </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> + + </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> |