diff options
Diffstat (limited to 'docs/doxygen/nel/a02787.html')
-rw-r--r-- | docs/doxygen/nel/a02787.html | 5467 |
1 files changed, 5467 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a02787.html b/docs/doxygen/nel/a02787.html new file mode 100644 index 00000000..2e798745 --- /dev/null +++ b/docs/doxygen/nel/a02787.html @@ -0,0 +1,5467 @@ +<!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::CLocalRetriever 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::CLocalRetriever Class Reference</h1><code>#include <<a class="el" href="a05930.html">local_retriever.h</a>></code> +<p> +<hr><a name="_details"></a><h2>Detailed Description</h2> +A surface retriever, located by its bounding box. <dl compact><dt><b>Author:</b></dt><dd>Benjamin Legros <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="a05930.html#l00063">63</a> of file <a class="el" href="a05930.html">local_retriever.h</a>.<table border=0 cellpadding=0 cellspacing=0> +<tr><td></td></tr> +<tr><td colspan=2><br><h2>Public Types</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>enum </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverw0">EType</a> { <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverw0NLPACS_1_1CLocalRetrieverw2">Landscape</a> = 0, +<a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverw0NLPACS_1_1CLocalRetrieverw1">Interior</a> + }</td></tr> + +<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>float </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievera0">distanceToBorder</a> (const <a class="el" href="a02793.html">ULocalPosition</a> &pos) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievera1">dumpSurface</a> (<a class="el" href="a04558.html#a15">uint</a> surf, const <a class="el" href="a03128.html">NLMISC::CVector</a> &vect=<a class="el" href="a03128.html#NLMISC_1_1CVectors3">NLMISC::CVector::Null</a>) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievera2">findPath</a> (const <a class="el" href="a02792.html">CLocalPosition</a> &A, const <a class="el" href="a02792.html">CLocalPosition</a> &B, std::vector< <a class="el" href="a03662.html">CVector2s</a> > &path, <a class="el" href="a02387.html">NLPACS::CCollisionSurfaceTemp</a> &cst) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Finds a path in a given surface, from the point A to the point B. <a href="#NLPACS_1_1CLocalRetrievera2"></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="a02787.html#NLPACS_1_1CLocalRetrievera3">forceBorderChainId</a> (<a class="el" href="a04558.html#a11">uint32</a> chainId, <a class="el" href="a04558.html#a11">uint32</a> borderId)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>float </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievera4">getHeight</a> (const <a class="el" href="a02793.html">ULocalPosition</a> &position) const </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="a02787.html#NLPACS_1_1CLocalRetrievera5">getNextChain</a> (<a class="el" href="a04558.html#a11">uint32</a> chain, <a class="el" href="a04558.html#a10">sint32</a> surface) const </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="a02787.html#NLPACS_1_1CLocalRetrievera6">getPreviousChain</a> (<a class="el" href="a04558.html#a11">uint32</a> chain, <a class="el" href="a04558.html#a10">sint32</a> surface) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievera7">getStartVector</a> (<a class="el" href="a04558.html#a11">uint32</a> chain, <a class="el" href="a04558.html#a10">sint32</a> surface) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievera8">getStartVector</a> (<a class="el" href="a04558.html#a11">uint32</a> chain) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievera9">getStopVector</a> (<a class="el" href="a04558.html#a11">uint32</a> chain, <a class="el" href="a04558.html#a10">sint32</a> surface) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievera10">getStopVector</a> (<a class="el" href="a04558.html#a11">uint32</a> chain) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievera11">insurePosition</a> (<a class="el" href="a02793.html">ULocalPosition</a> &local) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Assures a position is really inside a surface (and independent from any accuracy issue) and returns true if the position was moved. <a href="#NLPACS_1_1CLocalRetrievera11"></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="a02787.html#NLPACS_1_1CLocalRetrievera12">replaceChain</a> (<a class="el" href="a04558.html#a11">uint32</a> chainId, const std::vector< <a class="el" href="a02788.html">CChainReplacement</a> > &replacement)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievera13">retrieveAccuratePosition</a> (<a class="el" href="a03662.html">CVector2s</a> estimated, <a class="el" href="a02387.html">CCollisionSurfaceTemp</a> &cst, bool &onBorder) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Retrieves a position inside the retriever (from the local position), returns true if the position is close to a border. <a href="#NLPACS_1_1CLocalRetrievera13"></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="a02787.html#NLPACS_1_1CLocalRetrievera14">retrievePosition</a> (<a class="el" href="a03128.html">NLMISC::CVector</a> estimated, <a class="el" href="a02387.html">CCollisionSurfaceTemp</a> &cst) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Retrieves a position inside the retriever (from the local position), returns true if the position is close to a border. <a href="#NLPACS_1_1CLocalRetrievera14"></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="a02787.html#NLPACS_1_1CLocalRetrievera15">snapToInteriorGround</a> (<a class="el" href="a02793.html">ULocalPosition</a> &position, bool &snapped) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Snaps on the ground. <a href="#NLPACS_1_1CLocalRetrievera15"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievera16">testPosition</a> (<a class="el" href="a02793.html">ULocalPosition</a> &local, <a class="el" href="a02387.html">CCollisionSurfaceTemp</a> &cst) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Retrieves a position inside the retriever (from the local position), returns true if the position is close to a border. <a href="#NLPACS_1_1CLocalRetrievera16"></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="a02787.html#NLPACS_1_1CLocalRetrievera17">unify</a> ()</td></tr> + +<tr><td colspan="2"><div class="groupHeader">Mutators</div></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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_0">addChain</a> (const std::vector< <a class="el" href="a03128.html">NLMISC::CVector</a> > &vertices, <a class="el" href="a04558.html#a10">sint32</a> left, <a class="el" href="a04558.html#a10">sint32</a> right)</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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_1">addSurface</a> (<a class="el" href="a04558.html#a7">uint8</a> normalq, <a class="el" href="a04558.html#a7">uint8</a> orientationq, <a class="el" href="a04558.html#a7">uint8</a> mat, <a class="el" href="a04558.html#a7">uint8</a> charact, <a class="el" href="a04558.html#a7">uint8</a> <a class="el" href="a04223.html#a630">level</a>, bool isUnderWater, float waterHeight, bool clusterHint, const <a class="el" href="a03128.html">NLMISC::CVector</a> &center, const <a class="el" href="a03466.html">CSurfaceQuadTree</a> &quad, <a class="el" href="a04558.html#a6">sint8</a> quantHeight=0)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a surface to the local retriever, using its features. Returns the id of the newly created surface. <a href="#NLPACS_1_1CLocalRetrieverz1259_1"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_2">clear</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Clear. <a href="#NLPACS_1_1CLocalRetrieverz1259_2"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_3">computeLoopsAndTips</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Builds tips. <a href="#NLPACS_1_1CLocalRetrieverz1259_3"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_4">computeTopologies</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Builds topologies tables. <a href="#NLPACS_1_1CLocalRetrieverz1259_4"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_5">findBorderChains</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Found chains on the edges of the retriever and fills _BorderChains tables. <a href="#NLPACS_1_1CLocalRetrieverz1259_5"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_6">flushFullOrderedChains</a> ()</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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_7">getChainQuad</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the chain quad. <a href="#NLPACS_1_1CLocalRetrieverz1259_7"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< <a class="el" href="a02789.html">CInteriorFace</a> > & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1259_8">getInteriorFaces</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the interior faces. <a href="#NLPACS_1_1CLocalRetrieverz1259_8"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< <a class="el" href="a03128.html">NLMISC::CVector</a> > & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1259_9">getInteriorVertices</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the interior vertices. <a href="#NLPACS_1_1CLocalRetrieverz1259_9"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_10">initFaceGrid</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Inits the face grid. <a href="#NLPACS_1_1CLocalRetrieverz1259_10"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_11">serial</a> (<a class="el" href="a02270.html">NLMISC::IStream</a> &f)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Serialises the <a class="el" href="a02787.html">CLocalRetriever</a>. <a href="#NLPACS_1_1CLocalRetrieverz1259_11"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_12">setBBox</a> (const <a class="el" href="a02156.html">NLMISC::CAABBox</a> &bbox)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the bbox of the retriever. <a href="#NLPACS_1_1CLocalRetrieverz1259_12"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_13">setExteriorMesh</a> (const <a class="el" href="a02492.html">CExteriorMesh</a> &em)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the exterior mesh. <a href="#NLPACS_1_1CLocalRetrieverz1259_13"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_14">setFullOrderedChains</a> (const std::vector< <a class="el" href="a03028.html">COrderedChain3f</a> > &foc)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1259_15">setIdentifier</a> (const std::string &<a class="el" href="a04223.html#a564">id</a>)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the identifier of the retriever. <a href="#NLPACS_1_1CLocalRetrieverz1259_15"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_16">setType</a> (<a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverw0">EType</a> <a class="el" href="a04223.html#a581">type</a>)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the type of the retriever (see EType). <a href="#NLPACS_1_1CLocalRetrieverz1259_16"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_17">sortTips</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Sorts chains references inside the tips. NOT IMPLEMENTED YET. <a href="#NLPACS_1_1CLocalRetrieverz1259_17"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_18">translate</a> (const <a class="el" href="a03128.html">NLMISC::CVector</a> &translation)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Translates the local retriever by the translation vector. <a href="#NLPACS_1_1CLocalRetrieverz1259_18"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1259_19">updateChainIds</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Updates surfaces links from the links contained in the chains... <a href="#NLPACS_1_1CLocalRetrieverz1259_19"></a><br><br></td></tr> +<tr><td colspan="2"><div class="groupHeader">Selectors</div></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_0">build3dSurfacePolygons</a> (std::list< std::list< <a class="el" href="a03100.html">NLMISC::CPolygon</a> > > &polygons) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Builds the polygons (loops) of all surfaces in the retriever. <a href="#NLPACS_1_1CLocalRetrieverz1257_0"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_1">build3dSurfacePolygons</a> (<a class="el" href="a04558.html#a11">uint32</a> surface, std::list< <a class="el" href="a03100.html">NLMISC::CPolygon</a> > &polygons) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Builds the polygons (loops) of a given surface. <a href="#NLPACS_1_1CLocalRetrieverz1257_1"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1257_2">buildInteriorSurfaceBBoxes</a> (std::vector< <a class="el" href="a02156.html">NLMISC::CAABBox</a> > &surfaceBBoxes) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">build BBoxes of interior surfaces in surfaceBBoxes (cleared first) <a href="#NLPACS_1_1CLocalRetrieverz1257_2"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1257_3">buildSurfacePolygons</a> (std::list< std::list< <a class="el" href="a03100.html">NLMISC::CPolygon</a> > > &polygons) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Builds the polygons (loops) of all surfaces in the retriever. <a href="#NLPACS_1_1CLocalRetrieverz1257_3"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1257_4">buildSurfacePolygons</a> (<a class="el" href="a04558.html#a11">uint32</a> surface, std::list< <a class="el" href="a03100.html">NLMISC::CPolygon</a> > &polygons) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Builds the polygons (loops) of a given surface. <a href="#NLPACS_1_1CLocalRetrieverz1257_4"></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="a02787.html#NLPACS_1_1CLocalRetrieverz1257_5">forceLoaded</a> (bool state)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Force Loaded State. <a href="#NLPACS_1_1CLocalRetrieverz1257_5"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a02156.html">NLMISC::CAABBox</a> & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_6">getBBox</a> () const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the bbox. <a href="#NLPACS_1_1CLocalRetrieverz1257_6"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a9">uint16</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_7">getBorderChain</a> (<a class="el" href="a04558.html#a15">uint</a> n) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the id of the nth chain on the edges of the retriever. <a href="#NLPACS_1_1CLocalRetrieverz1257_7"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const std::vector< <a class="el" href="a04558.html#a9">uint16</a> > & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_8">getBorderChains</a> () const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the ids of the chains on the edges of the retriever. <a href="#NLPACS_1_1CLocalRetrieverz1257_8"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a02333.html">CChain</a> & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_9">getChain</a> (<a class="el" href="a04558.html#a15">uint</a> n) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">retruns the nth chain. <a href="#NLPACS_1_1CLocalRetrieverz1257_9"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const std::vector< <a class="el" href="a02333.html">CChain</a> > & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_10">getChains</a> () const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the chains. <a href="#NLPACS_1_1CLocalRetrieverz1257_10"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a02492.html">CExteriorMesh</a> & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_11">getExteriorMesh</a> () const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the exterior mesh of the retriever. <a href="#NLPACS_1_1CLocalRetrieverz1257_11"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a03028.html">COrderedChain3f</a> & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_12">getFullOrderedChain</a> (<a class="el" href="a04558.html#a15">uint</a> n) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the nth full ordered chain. <a href="#NLPACS_1_1CLocalRetrieverz1257_12"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const std::vector< <a class="el" href="a03028.html">COrderedChain3f</a> > & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_13">getFullOrderedChains</a> () const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the full ordered chains. <a href="#NLPACS_1_1CLocalRetrieverz1257_13"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const std::string & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_14">getIdentifier</a> () const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the identifier of the retriever. <a href="#NLPACS_1_1CLocalRetrieverz1257_14"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const std::vector< <a class="el" href="a02789.html">CInteriorFace</a> > & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_15">getInteriorFaces</a> () const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the interior faces. <a href="#NLPACS_1_1CLocalRetrieverz1257_15"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const std::vector< <a class="el" href="a03128.html">NLMISC::CVector</a> > & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_16">getInteriorVertices</a> () const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the interior vertices. <a href="#NLPACS_1_1CLocalRetrieverz1257_16"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a03027.html">COrderedChain</a> & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_17">getOrderedChain</a> (<a class="el" href="a04558.html#a15">uint</a> n) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the nth ordered chain. <a href="#NLPACS_1_1CLocalRetrieverz1257_17"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const std::vector< <a class="el" href="a03027.html">COrderedChain</a> > & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_18">getOrderedChains</a> () const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the ordered chains. <a href="#NLPACS_1_1CLocalRetrieverz1257_18"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a03328.html">CRetrievableSurface</a> & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_19">getSurface</a> (<a class="el" href="a04558.html#a15">uint</a> n) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the nth surface. <a href="#NLPACS_1_1CLocalRetrieverz1257_19"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const std::vector< <a class="el" href="a03328.html">CRetrievableSurface</a> > & </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_20">getSurfaces</a> () const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the surfaces. <a href="#NLPACS_1_1CLocalRetrieverz1257_20"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverw0">EType</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_21">getType</a> () const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the type of the retriever. <a href="#NLPACS_1_1CLocalRetrieverz1257_21"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_22">isLoaded</a> () const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Is loaded ? <a href="#NLPACS_1_1CLocalRetrieverz1257_22"></a><br><br></td></tr> +<tr><td colspan="2"><div class="groupHeader">Constructors</div></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top> </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1255_0">CLocalRetriever</a> ()</td></tr> + +<tr><td colspan="2"><div class="groupHeader">Collisions part.</div></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1261_0">computeCollisionChainQuad</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">compute the chain quad, used for collisions. the ChainQuad is serialised in <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1259_11">serial()</a>. _OrderedChains must be OK. <a href="#NLPACS_1_1CLocalRetrieverz1261_0"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1261_1">testCollision</a> (<a class="el" href="a02387.html">CCollisionSurfaceTemp</a> &cst, const <a class="el" href="a02156.html">NLMISC::CAABBox</a> &bboxMove, const <a class="el" href="a03660.html">NLMISC::CVector2f</a> &transBase) const </td></tr> + +<tr><td colspan=2><br><h2>Data Fields</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< <a class="el" href="a04558.html#a15">uint</a> > </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievero0">FreeOChains</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievero1">LoadCheckFlag</a></td></tr> + +<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< <a class="el" href="a02794.html">CTip</a> > </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp0">__Tips</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The tips making links between different chains. <a href="#NLPACS_1_1CLocalRetrieverp0"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02156.html">NLMISC::CAABBox</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp1">_BBox</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The bbox of the local retriever. <a href="#NLPACS_1_1CLocalRetrieverp1"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< <a class="el" href="a04558.html#a9">uint16</a> > </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp2">_BorderChains</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The chains on the edges of the zone. <a href="#NLPACS_1_1CLocalRetrieverp2"></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="a02787.html#NLPACS_1_1CLocalRetrieverp3">_ChainQuad</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">For collisions, the chainquad. <a href="#NLPACS_1_1CLocalRetrieverp3"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< <a class="el" href="a02333.html">CChain</a> > </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The chains insinde the zone. <a href="#NLPACS_1_1CLocalRetrieverp4"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< <a class="el" href="a03028.html">COrderedChain3f</a> > </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp5">_FullOrderedChains</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp6">_Loaded</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells if retriever is loaded. <a href="#NLPACS_1_1CLocalRetrieverp6"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< <a class="el" href="a03027.html">COrderedChain</a> > </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp7">_OrderedChains</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The chains insinde the zone. <a href="#NLPACS_1_1CLocalRetrieverp7"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< <a class="el" href="a03328.html">CRetrievableSurface</a> > </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The surfaces inside the zone. <a href="#NLPACS_1_1CLocalRetrieverp8"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< <a class="el" href="a02796.html">CTopology</a> > </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp9">_Topologies</a> [NumMaxCreatureModels]</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The topologies within the zone. <a href="#NLPACS_1_1CLocalRetrieverp9"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverw0">EType</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp10">_Type</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The type of the retriever. <a href="#NLPACS_1_1CLocalRetrieverp10"></a><br><br></td></tr> +<tr><td colspan="2"><div class="groupHeader">Internior retriever specific</div></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02492.html">CExteriorMesh</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_0">_ExteriorMesh</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The exterior mesh, for collisions. <a href="#NLPACS_1_1CLocalRetrieverz1253_0"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02497.html">CFaceGrid</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_1">_FaceGrid</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The face selection grid. <a href="#NLPACS_1_1CLocalRetrieverz1253_1"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>std::string </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_2">_Id</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">An human readable identifier of the retriever. <a href="#NLPACS_1_1CLocalRetrieverz1253_2"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< <a class="el" href="a02789.html">CInteriorFace</a> > </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_3">_InteriorFaces</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The faces of the collision mesh. <a href="#NLPACS_1_1CLocalRetrieverz1253_3"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< <a class="el" href="a03128.html">NLMISC::CVector</a> > </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_4">_InteriorVertices</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The vertices of the collision mesh. <a href="#NLPACS_1_1CLocalRetrieverz1253_4"></a><br><br></td></tr> +<tr><td colspan=2><br><h2>Static Protected 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="a02787.html#NLPACS_1_1CLocalRetrievert0">_EdgeTipThreshold</a> = 0.1f</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The tip recognition threshold. <a href="#NLPACS_1_1CLocalRetrievert0"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const float </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievert1">_TipThreshold</a> = 0.1f</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">The tip recognition threshold. <a href="#NLPACS_1_1CLocalRetrievert1"></a><br><br></td></tr> +<tr><td colspan=2><br><h2>Friends</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>class </td><td class="memItemRight" valign=bottom><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievern0">CRetrieverInstance</a></td></tr> + +</table> +<hr><h2>Member Enumeration Documentation</h2> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverw0" doxytag="NLPACS::CLocalRetriever::EType" ></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"> enum <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverw0">NLPACS::CLocalRetriever::EType</a> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The different types of retriever (landscape or interior.) <dl compact><dt><b>Author:</b></dt><dd>Benjamin Legros <p> +Nevrax France </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>2001</dd></dl> +<dl compact><dt><b>Enumeration values: </b></dt><dd> +<table border=0 cellspacing=2 cellpadding=0> +<tr><td valign=top><em><a class="anchor" name="NLPACS_1_1CLocalRetrieverw0NLPACS_1_1CLocalRetrieverw2" doxytag="Landscape" ></a>Landscape</em> </td><td> +</td></tr> +<tr><td valign=top><em><a class="anchor" name="NLPACS_1_1CLocalRetrieverw0NLPACS_1_1CLocalRetrieverw1" doxytag="Interior" ></a>Interior</em> </td><td> +</td></tr> +</table> +</dl> + +<p> +Definition at line <a class="el" href="a05930.html#l00160">160</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05930.html#l00404">getType()</a>. +<p> +<div class="fragment"><pre>00161 { +00162 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverw0NLPACS_1_1CLocalRetrieverw2">Landscape</a> = 0, +00163 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverw0NLPACS_1_1CLocalRetrieverw1">Interior</a> +00164 }; +</pre></div> </td> + </tr> +</table> +<hr><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1255_0" doxytag="NLPACS::CLocalRetriever::CLocalRetriever" ></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::CLocalRetriever::CLocalRetriever </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00056">56</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00341">_Loaded</a>, and <a class="el" href="a05930.html#l00345">LoadCheckFlag</a>. +<p> +<div class="fragment"><pre>00057 { +00058 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp10">_Type</a> = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverw0NLPACS_1_1CLocalRetrieverw2">Landscape</a>; +00059 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp6">_Loaded</a> = <span class="keyword">false</span>; +00060 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrievero1">LoadCheckFlag</a> = <span class="keyword">false</span>; +00061 } +</pre></div> </td> + </tr> +</table> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_0" doxytag="NLPACS::CLocalRetriever::addChain" ></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> NLPACS::CLocalRetriever::addChain </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const std::vector< <a class="el" href="a03128.html">NLMISC::CVector</a> > & </td> + <td class="mdname" nowrap> <em>vertices</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>left</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>right</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Adds a chain to the local retriever, using the vertices of the chain, the left and right surfaces id and the edge on which the chain is stuck +<p> +Definition at line <a class="el" href="a05929.html#l00361">361</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a06334.html#l00137">NLPACS::CRetrievableSurface::_Chains</a>, <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a05930.html#l00289">_FullOrderedChains</a>, <a class="el" href="a05930.html#l00288">_OrderedChains</a>, <a class="el" href="a05540.html#l00226">NLPACS::CChain::_StartTip</a>, <a class="el" href="a05540.html#l00227">NLPACS::CChain::_StopTip</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a05539.html#l00199">NLPACS::CChain::make()</a>, <a class="el" href="a05622.html#l00154">nlerror</a>, <a class="el" href="a05622.html#l00135">nlwarning</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#l00105">uint</a>, and <a class="el" href="a05981.html#l00098">uint16</a>. +<p> +Referenced by <a class="el" href="a05522.html#l00365">NLPACS::buildSurfaces()</a>. +<p> +<div class="fragment"><pre>00363 { +00364 vector<CVector> vertices = verts; +00365 <a class="code" href="a04558.html#a15">uint</a> i; +00366 +00367 <span class="keywordflow">if</span> (vertices.size() < 2) +00368 { +00369 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"in NLPACS::CLocalRetriever::addChain()"</span>); +00370 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"The chain has less than 2 vertices"</span>); +00371 <span class="keywordflow">return</span> -1; +00372 } +00373 +00374 <span class="comment">// Remove doubled vertices due to CVector2s snapping</span> +00375 vector<CVector2s> converts; +00376 +00377 <span class="keywordflow">for</span> (i=0; i<vertices.size(); ++i) +00378 converts.push_back(CVector2s(vertices[i])); +00379 +00380 vector<CVector2s>::iterator next2s = converts.begin(), it2s, prev2s; +00381 prev2s = next2s; ++next2s; +00382 it2s = next2s; ++next2s; +00383 +00384 vector<CVector>::iterator it3f = vertices.begin(); +00385 CVector prev3f = *it3f; +00386 ++it3f; +00387 +00388 +00389 <span class="keywordflow">for</span> (; it2s != converts.end() && next2s != converts.end(); ) +00390 { +00391 <span class="comment">// if the next point is equal to the previous</span> +00392 <span class="keywordflow">if</span> (*it2s == *prev2s || *it2s == *next2s) +00393 { +00394 <span class="comment">// then remove the next point</span> +00395 it2s = converts.erase(it2s); +00396 it3f = vertices.erase(it3f); +00397 +00398 prev2s = it2s; +00399 --prev2s; +00400 next2s = it2s; +00401 ++next2s; +00402 } +00403 <span class="keywordflow">else</span> +00404 { +00405 <span class="comment">// else remember the next point, and step to the next...</span> +00406 ++prev2s; +00407 ++it2s; +00408 ++next2s; +00409 ++it3f; +00410 prev3f = *it3f; +00411 } +00412 } +00413 +00414 <span class="keywordflow">if</span> (vertices.size() < 2) +00415 { +00416 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"in NLPACS::CLocalRetriever::addChain()"</span>); +00417 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"The chain was snapped to a single point"</span>); +00418 <span class="keywordflow">return</span> -1; +00419 } +00420 +00421 <a class="code" href="a04558.html#a10">sint32</a> newId = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>.size(); +00422 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>.resize(newId+1); +00423 CChain &chain = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>.back(); +00424 +00425 <span class="keywordflow">if</span> (left>(<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size()) +00426 <a class="code" href="a04199.html#a3">nlerror</a> (<span class="stringliteral">"left surface id MUST be id<%d (id=%d)"</span>, <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size(), left); +00427 <span class="keywordflow">if</span> (right>(<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size()) +00428 <a class="code" href="a04199.html#a3">nlerror</a> (<span class="stringliteral">"right surface id MUST be id<%d (id=%d)"</span>, <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size(), right); +00429 +00430 <span class="comment">// checks if we can build the chain.</span> +00431 <span class="keywordflow">if</span> (newId > 65535) +00432 <a class="code" href="a04199.html#a3">nlerror</a>(<span class="stringliteral">"in NLPACS::CLocalRetriever::addChain(): reached the maximum number of chains"</span>); +00433 +00434 CRetrievableSurface *leftSurface = (left>=0) ? &(<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[left]) : NULL; +00435 CRetrievableSurface *rightSurface = (right>=0) ? &(<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[right]) : NULL; +00436 +00437 <span class="comment">// adds the chain and the link to the surface links vector.</span> +00438 <span class="keywordflow">if</span> (leftSurface != NULL) +00439 leftSurface->_Chains.push_back(CRetrievableSurface::CSurfaceLink(newId, right)); +00440 <span class="keywordflow">if</span> (rightSurface != NULL) +00441 rightSurface->_Chains.push_back(CRetrievableSurface::CSurfaceLink(newId, left)); +00442 +00443 chain._StartTip = 0xffff; +00444 chain._StopTip = 0xffff; +00445 +00446 <span class="comment">// make the chain and its subchains.</span> +00447 vector<uint> empty; +00448 chain.make(vertices, left, right, _OrderedChains, (<a class="code" href="a04558.html#a9">uint16</a>)newId, _FullOrderedChains, empty); +00449 +00450 <span class="keywordflow">return</span> newId; +00451 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_1" doxytag="NLPACS::CLocalRetriever::addSurface" ></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> NLPACS::CLocalRetriever::addSurface </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a7">uint8</a> </td> + <td class="mdname" nowrap> <em>normalq</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> </td> + <td class="mdname" nowrap> <em>orientationq</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> </td> + <td class="mdname" nowrap> <em>mat</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> </td> + <td class="mdname" nowrap> <em>charact</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> </td> + <td class="mdname" nowrap> <em>level</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>bool </td> + <td class="mdname" nowrap> <em>isUnderWater</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float </td> + <td class="mdname" nowrap> <em>waterHeight</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>bool </td> + <td class="mdname" nowrap> <em>clusterHint</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname" nowrap> <em>center</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a03466.html">CSurfaceQuadTree</a> & </td> + <td class="mdname" nowrap> <em>quad</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a04558.html#a6">sint8</a> </td> + <td class="mdname" nowrap> <em>quantHeight</em> = 0</td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Adds a surface to the local retriever, using its features. Returns the id of the newly created surface. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00320">320</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a06334.html#l00149">NLPACS::CRetrievableSurface::_Center</a>, <a class="el" href="a06334.html#l00125">NLPACS::CRetrievableSurface::_Character</a>, <a class="el" href="a06334.html#l00133">NLPACS::CRetrievableSurface::_Flags</a>, <a class="el" href="a06334.html#l00129">NLPACS::CRetrievableSurface::_IsCeiling</a>, <a class="el" href="a06334.html#l00128">NLPACS::CRetrievableSurface::_IsFloor</a>, <a class="el" href="a06334.html#l00126">NLPACS::CRetrievableSurface::_Level</a>, <a class="el" href="a06334.html#l00124">NLPACS::CRetrievableSurface::_Material</a>, <a class="el" href="a06334.html#l00122">NLPACS::CRetrievableSurface::_NormalQuanta</a>, <a class="el" href="a06334.html#l00123">NLPACS::CRetrievableSurface::_OrientationQuanta</a>, <a class="el" href="a06334.html#l00143">NLPACS::CRetrievableSurface::_Quad</a>, <a class="el" href="a06334.html#l00127">NLPACS::CRetrievableSurface::_QuantHeight</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a06334.html#l00134">NLPACS::CRetrievableSurface::_WaterHeight</a>, <a class="el" href="a05646.html#l01013">level</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a05981.html#l00095">sint8</a>, and <a class="el" href="a05981.html#l00096">uint8</a>. +<p> +Referenced by <a class="el" href="a05522.html#l00365">NLPACS::buildSurfaces()</a>. +<p> +<div class="fragment"><pre>00327 { +00328 <span class="comment">// creates a new surface...</span> +00329 <a class="code" href="a04558.html#a10">sint32</a> newId = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size(); +00330 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.resize(newId+1); +00331 CRetrievableSurface &surf = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.back(); +00332 +00333 <span class="comment">// ... and fills it</span> +00334 surf._NormalQuanta = normalq; +00335 surf._OrientationQuanta = orientationq; +00336 surf._Material = mat; +00337 surf._Character = charact; +00338 surf._Level = <a class="code" href="a04223.html#a630">level</a>; +00339 surf._Quad = quad; +00340 surf._Center = center; +00341 surf._QuantHeight = quantHeight; +00342 +00343 <span class="comment">// WARNING!! MODIFY THESE IF QUANTAS VALUES CHANGE !!</span> +00344 surf._IsFloor = (surf._NormalQuanta <= 1); +00345 surf._IsCeiling = (surf._NormalQuanta >= 3); +00346 +00347 surf._Flags = 0; +00348 surf._Flags |= (surf._IsFloor) ? (1<<CRetrievableSurface::IsFloorBit) : 0; +00349 surf._Flags |= (surf._IsCeiling) ? (1<<CRetrievableSurface::IsCeilingBit) : 0; +00350 surf._Flags |= (!surf._IsFloor && !surf._IsCeiling) ? (1<<CRetrievableSurface::IsSlantBit) : 0; +00351 surf._Flags |= clusterHint ? (1<<CRetrievableSurface::ClusterHintBit) : 0; +00352 +00353 surf._Flags |= (isUnderWater) ? (1<<CRetrievableSurface::IsUnderWaterBit) : 0; +00354 surf._WaterHeight = waterHeight; +00355 +00356 surf._Flags |= ((0xffffffff<<(CRetrievableSurface::NormalQuantasStartBit)) & CRetrievableSurface::NormalQuantasBitMask); +00357 +00358 <span class="keywordflow">return</span> newId; +00359 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_0" doxytag="NLPACS::CLocalRetriever::build3dSurfacePolygons" ></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::CLocalRetriever::build3dSurfacePolygons </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">std::list< std::list< <a class="el" href="a03100.html">NLMISC::CPolygon</a> > > & </td> + <td class="mdname1" valign="top" nowrap> <em>polygons</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Builds the polygons (loops) of all surfaces in the retriever. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00448">448</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a05929.html#l00714">build3dSurfacePolygons()</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +<div class="fragment"><pre>00449 { +00450 <a class="code" href="a04558.html#a15">uint</a> i; +00451 <span class="keywordflow">for</span> (i=0; i<<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size(); ++i) +00452 { +00453 polygons.push_back(); +00454 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_1">build3dSurfacePolygons</a>(i, polygons.back()); +00455 } +00456 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_1" doxytag="NLPACS::CLocalRetriever::build3dSurfacePolygons" ></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::CLocalRetriever::build3dSurfacePolygons </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname" nowrap> <em>surface</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>std::list< <a class="el" href="a03100.html">NLMISC::CPolygon</a> > & </td> + <td class="mdname" nowrap> <em>polygons</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> +Builds the polygons (loops) of a given surface. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00714">714</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a06334.html#l00137">NLPACS::CRetrievableSurface::_Chains</a>, <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a05930.html#l00289">_FullOrderedChains</a>, <a class="el" href="a05540.html#l00220">NLPACS::CChain::_Left</a>, <a class="el" href="a06334.html#l00140">NLPACS::CRetrievableSurface::_Loops</a>, <a class="el" href="a05540.html#l00217">NLPACS::CChain::_SubChains</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a05540.html#l00068">NLPACS::COrderedChain3f::getVertices()</a>, <a class="el" href="a05540.html#l00071">NLPACS::COrderedChain3f::isForward()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00100">uint32</a>, and <a class="el" href="a06191.html#l00055">NLMISC::CPolygon::Vertices</a>. +<p> +Referenced by <a class="el" href="a05930.html#l00448">build3dSurfacePolygons()</a>. +<p> +<div class="fragment"><pre>00715 { +00716 <span class="keyword">const</span> CRetrievableSurface &surf = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[surface]; +00717 +00718 <a class="code" href="a04558.html#a15">uint</a> i, j, k, <a class="code" href="a05373.html#a2">l</a>; +00719 +00720 <span class="keywordflow">for</span> (i=0; i<surf._Loops.size(); ++i) +00721 { +00722 polygons.push_back(); +00723 <a class="code" href="a03100.html">CPolygon</a> &poly = polygons.back(); +00724 +00725 <span class="keywordflow">for</span> (j=0; j<surf._Loops[i].size(); ++j) +00726 { +00727 <span class="keyword">const</span> CRetrievableSurface::TLoop &loop = surf._Loops[i]; +00728 <span class="keyword">const</span> CChain &chain = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[surf._Chains[loop[j]].Chain]; +00729 <span class="keywordtype">bool</span> chainforward = ((<a class="code" href="a04558.html#a11">uint32</a>)chain._Left == surface); +00730 +00731 <span class="keywordflow">if</span> (chainforward) +00732 { +00733 <span class="keywordflow">for</span> (k=0; k<chain._SubChains.size(); ++k) +00734 { +00735 <span class="keyword">const</span> COrderedChain3f &ochain = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp5">_FullOrderedChains</a>[chain._SubChains[k]]; +00736 <span class="keywordtype">bool</span> ochainforward = ochain.isForward(); +00737 +00738 <span class="keywordflow">if</span> (ochainforward) +00739 { +00740 <span class="keywordflow">for</span> (<a class="code" href="a05373.html#a2">l</a>=0; <a class="code" href="a05373.html#a2">l</a><ochain.getVertices().size()-1; ++<a class="code" href="a05373.html#a2">l</a>) +00741 poly.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>.push_back(ochain[l]); +00742 } +00743 <span class="keywordflow">else</span> +00744 { +00745 <span class="keywordflow">for</span> (<a class="code" href="a05373.html#a2">l</a>=ochain.getVertices().size()-1; <a class="code" href="a05373.html#a2">l</a>>0; --<a class="code" href="a05373.html#a2">l</a>) +00746 poly.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>.push_back(ochain[l]); +00747 } +00748 } +00749 } +00750 <span class="keywordflow">else</span> +00751 { +00752 <span class="keywordflow">for</span> (k=chain._SubChains.size()-1; (<a class="code" href="a04558.html#a14">sint</a>)k>=0; --k) +00753 { +00754 <span class="keyword">const</span> COrderedChain3f &ochain = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp5">_FullOrderedChains</a>[chain._SubChains[k]]; +00755 <span class="keywordtype">bool</span> ochainforward = ochain.isForward(); +00756 +00757 <span class="keywordflow">if</span> (ochainforward) +00758 { +00759 <span class="keywordflow">for</span> (<a class="code" href="a05373.html#a2">l</a>=ochain.getVertices().size()-1; (<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a05373.html#a2">l</a>>0; --<a class="code" href="a05373.html#a2">l</a>) +00760 poly.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>.push_back(ochain[l]); +00761 } +00762 <span class="keywordflow">else</span> +00763 { +00764 <span class="keywordflow">for</span> (<a class="code" href="a05373.html#a2">l</a>=0; <a class="code" href="a05373.html#a2">l</a><ochain.getVertices().size()-1; ++<a class="code" href="a05373.html#a2">l</a>) +00765 poly.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>.push_back(ochain[l]); +00766 } +00767 } +00768 } +00769 } +00770 } +00771 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_2" doxytag="NLPACS::CLocalRetriever::buildInteriorSurfaceBBoxes" ></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::CLocalRetriever::buildInteriorSurfaceBBoxes </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">std::vector< <a class="el" href="a02156.html">NLMISC::CAABBox</a> > & </td> + <td class="mdname1" valign="top" nowrap> <em>surfaceBBoxes</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +build BBoxes of interior surfaces in surfaceBBoxes (cleared first) +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l01935">1935</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00330">_InteriorFaces</a>, <a class="el" href="a05930.html#l00327">_InteriorVertices</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05930.html#l00177">NLPACS::CLocalRetriever::CInteriorFace::Surface</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05930.html#l00176">NLPACS::CLocalRetriever::CInteriorFace::Verts</a>. +<p> +<div class="fragment"><pre>01936 { +01937 <span class="comment">// resize dest, and init.</span> +01938 vector<bool> firstTriangle; +01939 surfaceBBoxes.clear(); +01940 surfaceBBoxes.resize(<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size()); +01941 firstTriangle.resize(<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size(), <span class="keyword">true</span>); +01942 +01943 <span class="comment">// For all _InteriorFaces.</span> +01944 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> iIntFace=0; iIntFace<<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_3">_InteriorFaces</a>.size(); iIntFace++) +01945 { +01946 <span class="keyword">const</span> CInteriorFace &intFace= <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_3">_InteriorFaces</a>[iIntFace]; +01947 +01948 <span class="comment">// Extend the surface of this face with her 3 points.</span> +01949 +01950 <span class="comment">// check good id.</span> +01951 <span class="keywordflow">if</span>(intFace.Surface==(<a class="code" href="a04558.html#a15">uint</a>)-1) +01952 <span class="keywordflow">continue</span>; +01953 <a class="code" href="a04199.html#a6">nlassert</a>(intFace.Surface<<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size()); +01954 +01955 <span class="comment">// If first time we extend the bbox of this surface</span> +01956 <span class="keywordflow">if</span>(firstTriangle[intFace.Surface]) +01957 { +01958 surfaceBBoxes[intFace.Surface].setCenter(_InteriorVertices[intFace.Verts[0]] ); +01959 firstTriangle[intFace.Surface]= <span class="keyword">false</span>; +01960 } +01961 <span class="keywordflow">else</span> +01962 surfaceBBoxes[intFace.Surface].extend(_InteriorVertices[intFace.Verts[0]] ); +01963 +01964 <span class="comment">// extend with other 2 points</span> +01965 surfaceBBoxes[intFace.Surface].extend(_InteriorVertices[intFace.Verts[1]] ); +01966 surfaceBBoxes[intFace.Surface].extend(_InteriorVertices[intFace.Verts[2]] ); +01967 } +01968 +01969 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_3" doxytag="NLPACS::CLocalRetriever::buildSurfacePolygons" ></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::CLocalRetriever::buildSurfacePolygons </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">std::list< std::list< <a class="el" href="a03100.html">NLMISC::CPolygon</a> > > & </td> + <td class="mdname1" valign="top" nowrap> <em>polygons</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Builds the polygons (loops) of all surfaces in the retriever. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00434">434</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a05929.html#l00655">buildSurfacePolygons()</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +<div class="fragment"><pre>00435 { +00436 <a class="code" href="a04558.html#a15">uint</a> i; +00437 <span class="keywordflow">for</span> (i=0; i<<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size(); ++i) +00438 { +00439 polygons.push_back(); +00440 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_4">buildSurfacePolygons</a>(i, polygons.back()); +00441 } +00442 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_4" doxytag="NLPACS::CLocalRetriever::buildSurfacePolygons" ></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::CLocalRetriever::buildSurfacePolygons </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname" nowrap> <em>surface</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>std::list< <a class="el" href="a03100.html">NLMISC::CPolygon</a> > & </td> + <td class="mdname" nowrap> <em>polygons</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> +Builds the polygons (loops) of a given surface. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00655">655</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a05540.html#l00220">NLPACS::CChain::_Left</a>, <a class="el" href="a06334.html#l00140">NLPACS::CRetrievableSurface::_Loops</a>, <a class="el" href="a05930.html#l00288">_OrderedChains</a>, <a class="el" href="a05540.html#l00217">NLPACS::CChain::_SubChains</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a05540.html#l00133">NLPACS::COrderedChain::getVertices()</a>, <a class="el" href="a05540.html#l00136">NLPACS::COrderedChain::isForward()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00100">uint32</a>, and <a class="el" href="a06191.html#l00055">NLMISC::CPolygon::Vertices</a>. +<p> +Referenced by <a class="el" href="a05930.html#l00434">buildSurfacePolygons()</a>. +<p> +<div class="fragment"><pre>00656 { +00657 <span class="keyword">const</span> CRetrievableSurface &surf = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[surface]; +00658 +00659 <a class="code" href="a04558.html#a15">uint</a> i, j, k, <a class="code" href="a05373.html#a2">l</a>; +00660 +00661 <span class="keywordflow">for</span> (i=0; i<surf._Loops.size(); ++i) +00662 { +00663 polygons.push_back(); +00664 <a class="code" href="a03100.html">CPolygon</a> &poly = polygons.back(); +00665 +00666 <span class="keywordflow">for</span> (j=0; j<surf._Loops[i].size(); ++j) +00667 { +00668 <span class="keyword">const</span> CChain &chain = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[surf._Loops[i][j]]; +00669 <span class="keywordtype">bool</span> chainforward = ((<a class="code" href="a04558.html#a11">uint32</a>)chain._Left == surface); +00670 +00671 <span class="keywordflow">if</span> (chainforward) +00672 { +00673 <span class="keywordflow">for</span> (k=0; k<chain._SubChains.size(); ++k) +00674 { +00675 <span class="keyword">const</span> COrderedChain &ochain = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp7">_OrderedChains</a>[chain._SubChains[k]]; +00676 <span class="keywordtype">bool</span> ochainforward = ochain.isForward(); +00677 +00678 <span class="keywordflow">if</span> (ochainforward) +00679 { +00680 <span class="keywordflow">for</span> (<a class="code" href="a05373.html#a2">l</a>=0; <a class="code" href="a05373.html#a2">l</a><ochain.getVertices().size()-1; ++<a class="code" href="a05373.html#a2">l</a>) +00681 poly.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>.push_back(ochain[l].unpack3f()); +00682 } +00683 <span class="keywordflow">else</span> +00684 { +00685 <span class="keywordflow">for</span> (<a class="code" href="a05373.html#a2">l</a>=ochain.getVertices().size()-1; <a class="code" href="a05373.html#a2">l</a>>0; --<a class="code" href="a05373.html#a2">l</a>) +00686 poly.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>.push_back(ochain[l].unpack3f()); +00687 } +00688 } +00689 } +00690 <span class="keywordflow">else</span> +00691 { +00692 <span class="keywordflow">for</span> (k=chain._SubChains.size(); (<a class="code" href="a04558.html#a14">sint</a>)k>0; --k) +00693 { +00694 <span class="keyword">const</span> COrderedChain &ochain = _OrderedChains[chain._SubChains[k]]; +00695 <span class="keywordtype">bool</span> ochainforward = ochain.isForward(); +00696 +00697 <span class="keywordflow">if</span> (ochainforward) +00698 { +00699 <span class="keywordflow">for</span> (<a class="code" href="a05373.html#a2">l</a>=ochain.getVertices().size()-1; (<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a05373.html#a2">l</a>>0; --<a class="code" href="a05373.html#a2">l</a>) +00700 poly.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>.push_back(ochain[l].unpack3f()); +00701 } +00702 <span class="keywordflow">else</span> +00703 { +00704 <span class="keywordflow">for</span> (<a class="code" href="a05373.html#a2">l</a>=0; <a class="code" href="a05373.html#a2">l</a><ochain.getVertices().size()-1; ++<a class="code" href="a05373.html#a2">l</a>) +00705 poly.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>.push_back(ochain[l].unpack3f()); +00706 } +00707 } +00708 } +00709 } +00710 } +00711 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_2" doxytag="NLPACS::CLocalRetriever::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::CLocalRetriever::clear </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Clear. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00064">64</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00301">__Tips</a>, <a class="el" href="a05930.html#l00304">_BorderChains</a>, <a class="el" href="a05930.html#l00316">_ChainQuad</a>, <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a05930.html#l00324">_ExteriorMesh</a>, <a class="el" href="a05930.html#l00333">_FaceGrid</a>, <a class="el" href="a05930.html#l00289">_FullOrderedChains</a>, <a class="el" href="a05930.html#l00330">_InteriorFaces</a>, <a class="el" href="a05930.html#l00327">_InteriorVertices</a>, <a class="el" href="a05930.html#l00341">_Loaded</a>, <a class="el" href="a05930.html#l00288">_OrderedChains</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a05930.html#l00307">_Topologies</a>, <a class="el" href="a05694.html#l00120">NLPACS::CFaceGrid::clear()</a>, <a class="el" href="a05693.html#l00106">NLPACS::CExteriorMesh::clear()</a>, <a class="el" href="a05542.html#l00099">NLPACS::CChainQuad::clear()</a>, <a class="el" href="a05930.html#l00345">LoadCheckFlag</a>, <a class="el" href="a05380.html#a31a8">NLPACS::NumMaxCreatureModels</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +<div class="fragment"><pre>00065 { +00066 <a class="code" href="a05378.html#a381">contReset</a>(_OrderedChains); +00067 <a class="code" href="a05378.html#a381">contReset</a>(_FullOrderedChains); +00068 <a class="code" href="a05378.html#a381">contReset</a>(_Chains); +00069 <a class="code" href="a05378.html#a381">contReset</a>(_Surfaces); +00070 <a class="code" href="a05378.html#a381">contReset</a>(__Tips); +00071 <a class="code" href="a05378.html#a381">contReset</a>(_BorderChains); +00072 <a class="code" href="a04558.html#a15">uint</a> i; +00073 <span class="keywordflow">for</span> (i=0; i<<a class="code" href="a05380.html#a31a8">NumMaxCreatureModels</a>; ++i) +00074 <a class="code" href="a05378.html#a381">contReset</a>(_Topologies[i]); +00075 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp3">_ChainQuad</a>.clear(); +00076 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_0">_ExteriorMesh</a>.clear(); +00077 <a class="code" href="a05378.html#a381">contReset</a>(_InteriorVertices); +00078 <a class="code" href="a05378.html#a381">contReset</a>(_InteriorFaces); +00079 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_1">_FaceGrid</a>.clear(); +00080 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_2">_Id</a>.resize(0); +00081 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp6">_Loaded</a> = <span class="keyword">false</span>; +00082 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrievero1">LoadCheckFlag</a> = <span class="keyword">false</span>; +00083 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1261_0" doxytag="NLPACS::CLocalRetriever::computeCollisionChainQuad" ></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::CLocalRetriever::computeCollisionChainQuad </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> +compute the chain quad, used for collisions. the ChainQuad is serialised in <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1259_11">serial()</a>. _OrderedChains must be OK. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l01800">1800</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00316">_ChainQuad</a>, <a class="el" href="a05930.html#l00288">_OrderedChains</a>, and <a class="el" href="a05541.html#l00122">NLPACS::CChainQuad::build()</a>. +<p> +Referenced by <a class="el" href="a05522.html#l00627">NLPACS::computeRetriever()</a>. +<p> +<div class="fragment"><pre>01801 { +01802 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp3">_ChainQuad</a>.build(_OrderedChains); +01803 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_3" doxytag="NLPACS::CLocalRetriever::computeLoopsAndTips" ></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::CLocalRetriever::computeLoopsAndTips </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> +Builds tips. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00456">456</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a06334.html#l00137">NLPACS::CRetrievableSurface::_Chains</a>, <a class="el" href="a06334.html#l00140">NLPACS::CRetrievableSurface::_Loops</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a05929.html#l00248">dumpSurface()</a>, <a class="el" href="a05929.html#l00086">getStartVector()</a>, <a class="el" href="a05929.html#l00092">getStopVector()</a>, <a class="el" href="a05622.html#l00154">nlerror</a>, <a class="el" href="a05622.html#l00111">nlinfo</a>, <a class="el" href="a05622.html#l00135">nlwarning</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00100">uint32</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>. +<p> +Referenced by <a class="el" href="a05522.html#l00627">NLPACS::computeRetriever()</a>. +<p> +<div class="fragment"><pre>00457 { +00458 <span class="comment">// for each surface,</span> +00459 <span class="comment">// examine each chain tip to match another tip inside the surface tips</span> +00460 <span class="comment">// if there is no matching tip, then creates a new one</span> +00461 +00462 <a class="code" href="a04558.html#a15">uint</a> i, j; +00463 +00464 <span class="keywordflow">for</span> (i=0; i<<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size(); ++i) +00465 { +00466 CRetrievableSurface &surface = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[i]; +00467 +00468 vector<bool> chainFlags; +00469 chainFlags.resize(surface._Chains.size()); +00470 <span class="keywordflow">for</span> (j=0; j<chainFlags.size(); ++j) +00471 chainFlags[j] = <span class="keyword">false</span>; +00472 +00473 <a class="code" href="a04558.html#a15">uint</a> totalAdded = 0; +00474 +00475 <span class="keywordflow">while</span> (<span class="keyword">true</span>) +00476 { +00477 <span class="keywordflow">for</span> (j=0; j<chainFlags.size() && chainFlags[j]; ++j) +00478 ; +00479 +00480 <span class="keywordflow">if</span> (j == chainFlags.size()) +00481 <span class="keywordflow">break</span>; +00482 +00483 <a class="code" href="a04558.html#a11">uint32</a> loopId = surface._Loops.size(); +00484 surface._Loops.push_back(CRetrievableSurface::TLoop()); +00485 CRetrievableSurface::TLoop &loop = surface._Loops.back(); +00486 +00487 CVector loopStart = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrievera8">getStartVector</a>(surface._Chains[j].Chain, i); +00488 CVector currentEnd = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrievera10">getStopVector</a>(surface._Chains[j].Chain, i); +00489 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[surface._Chains[j].Chain].setLoopIndexes(i, loopId, loop.size()); +00490 loop.push_back(j); +00491 chainFlags[j] = <span class="keyword">true</span>; +00492 +00493 <span class="keywordtype">float</span> loopCloseDistance; +00494 +00495 <span class="keywordflow">while</span> (<span class="keyword">true</span>) +00496 { +00497 <span class="comment">// loopCloseDistance = hybrid2dNorm(loopStart-currentEnd);</span> +00498 loopCloseDistance = (loopStart-currentEnd).norm(); +00499 +00500 <span class="comment">// choose the best matching start vector</span> +00501 <a class="code" href="a04558.html#a14">sint</a> bestChain = -1; +00502 <span class="keywordtype">float</span> best = 1.0e10f; +00503 CVector thisStart; +00504 <span class="keywordflow">for</span> (j=0; j<chainFlags.size(); ++j) +00505 { +00506 <span class="keywordflow">if</span> (chainFlags[j]) +00507 <span class="keywordflow">continue</span>; +00508 thisStart = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrievera8">getStartVector</a>(surface._Chains[j].Chain, i); +00509 <span class="comment">// float d = hybrid2dNorm(thisStart-currentEnd);</span> +00510 <span class="keywordtype">float</span> d = (thisStart-currentEnd).norm(); +00511 <span class="keywordflow">if</span> (d < best) +00512 { +00513 best = d; +00514 bestChain = j; +00515 } +00516 } +00517 +00518 <span class="keywordflow">if</span> ((bestChain == -1 || best > 3.0e-2f)&& loopCloseDistance > 3.0e-2f) +00519 { +00520 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"in NLPACS::CLocalRetriever::computeTips()"</span>); +00521 +00522 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrievera1">dumpSurface</a>(i); +00523 +00524 <span class="keywordflow">for</span> (j=0; j<surface._Chains.size(); ++j) +00525 { +00526 CVector start = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrievera8">getStartVector</a>(surface._Chains[j].Chain, i); +00527 CVector end = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrievera10">getStopVector</a>(surface._Chains[j].Chain, i); +00528 <a class="code" href="a04199.html#a1">nlinfo</a>(<span class="stringliteral">"surf=%d chain=%d"</span>, i, surface._Chains[j].Chain); +00529 <a class="code" href="a04199.html#a1">nlinfo</a>(<span class="stringliteral">"start=(%f,%f,%f)"</span>, start.x, start.y, start.z); +00530 <a class="code" href="a04199.html#a1">nlinfo</a>(<span class="stringliteral">"end=(%f,%f,%f)"</span>, end.x, end.y, end.z); +00531 } +00532 +00533 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"bestChain=%d best=%f"</span>, bestChain, best); +00534 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"loopCloseDistance=%f"</span>, loopCloseDistance); +00535 <a class="code" href="a04199.html#a3">nlerror</a>(<span class="stringliteral">"Couldn't close loop on surface=%d"</span>, i); +00536 } +00537 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (best > 1.0e0f && loopCloseDistance < 3.0e-2f || +00538 loopCloseDistance < 1.0e-3f) +00539 { +00540 <span class="keywordflow">break</span>; +00541 } +00542 +00543 currentEnd = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrievera10">getStopVector</a>(surface._Chains[bestChain].Chain, i); +00544 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[surface._Chains[bestChain].Chain].setLoopIndexes(i, loopId, loop.size()); +00545 loop.push_back(bestChain); +00546 chainFlags[bestChain] = <span class="keyword">true</span>; +00547 ++totalAdded; +00548 } +00549 } +00550 } +00551 <span class="comment">/*</span> +00552 <span class="comment"> dumpSurface(9);</span> +00553 <span class="comment"> dumpSurface(10);</span> +00554 <span class="comment"></span> +00555 <span class="comment"> for (i=0; i<_Chains.size(); ++i)</span> +00556 <span class="comment"> {</span> +00557 <span class="comment"> if (i == 127)</span> +00558 <span class="comment"> nlinfo("");</span> +00559 <span class="comment"></span> +00560 <span class="comment"> uint whichTip;</span> +00561 <span class="comment"> // for both tips (start and stop)</span> +00562 <span class="comment"> for (whichTip=0; whichTip<=1; ++whichTip)</span> +00563 <span class="comment"> {</span> +00564 <span class="comment"> // get the tip id</span> +00565 <span class="comment"> uint thisTip = (whichTip) ? _Chains[i].getStopTip() : _Chains[i].getStartTip();</span> +00566 <span class="comment"></span> +00567 <span class="comment"> if (thisTip != 0xffff && thisTip >= _Tips.size())</span> +00568 <span class="comment"> {</span> +00569 <span class="comment"> nlwarning("in NLPACS::CLocalRetriever::computeLoopsAndTips()");</span> +00570 <span class="comment"> nlerror("checked a tip that doesn't exist on chain %d (tipId=%d)", i, thisTip);</span> +00571 <span class="comment"> }</span> +00572 <span class="comment"></span> +00573 <span class="comment"> // if it is unaffected yet creates an new tip and affect it to the common chains</span> +00574 <span class="comment"> if (thisTip == 0xffff)</span> +00575 <span class="comment"> {</span> +00576 <span class="comment"> uint turn;</span> +00577 <span class="comment"> uint tipId = _Tips.size();</span> +00578 <span class="comment"></span> +00579 <span class="comment"> if (tipId == 62)</span> +00580 <span class="comment"> nlinfo("");</span> +00581 <span class="comment"></span> +00582 <span class="comment"> _Tips.resize(tipId+1);</span> +00583 <span class="comment"> CTip &tip = _Tips[tipId];</span> +00584 <span class="comment"> tip.Point = (whichTip) ? getStopVector(i) : getStartVector(i);</span> +00585 <span class="comment"></span> +00586 <span class="comment"> for (turn=0; turn<=1; ++turn)</span> +00587 <span class="comment"> {</span> +00588 <span class="comment"> uint chain = i;</span> +00589 <span class="comment"></span> +00590 <span class="comment"> //</span> +00591 <span class="comment"> if (whichTip)</span> +00592 <span class="comment"> _Chains[chain]._StopTip = tipId;</span> +00593 <span class="comment"> else</span> +00594 <span class="comment"> _Chains[chain]._StartTip = tipId;</span> +00595 <span class="comment"></span> +00596 <span class="comment"> sint32 surf = (!turn && !whichTip || turn && whichTip) ? _Chains[chain].getLeft() : _Chains[chain].getRight();</span> +00597 <span class="comment"></span> +00598 <span class="comment"> while (surf >= 0)</span> +00599 <span class="comment"> {</span> +00600 <span class="comment"></span> +00601 <span class="comment"> CChain &nextChain = (turn) ? _Chains[chain = getNextChain(chain, surf)] : _Chains[chain = getPreviousChain(chain, surf)];</span> +00602 <span class="comment"> bool isForward = (nextChain.getLeft() == surf); // tells if the left surf is the current surf</span> +00603 <span class="comment"> bool selectTip = isForward && !turn || !isForward && turn;</span> +00604 <span class="comment"> uint16 &tipRef = selectTip ? nextChain._StopTip : nextChain._StartTip;</span> +00605 <span class="comment"> surf = (isForward) ? nextChain.getRight() : nextChain.getLeft();</span> +00606 <span class="comment"></span> +00607 <span class="comment"> if (tipRef != 0xffff && tipRef != tipId)</span> +00608 <span class="comment"> {</span> +00609 <span class="comment"> nlwarning("in NLPACS::CLocalRetriever::computeLoopsAndTips()");</span> +00610 <span class="comment"> nlerror("Trying to setup a already created tip (tipId=%d, previous=%d)", tipId, tipRef);</span> +00611 <span class="comment"> }</span> +00612 <span class="comment"> else if (tipRef != 0xffff)</span> +00613 <span class="comment"> {</span> +00614 <span class="comment"> break;</span> +00615 <span class="comment"> }</span> +00616 <span class="comment"></span> +00617 <span class="comment"> tipRef = tipId;</span> +00618 <span class="comment"> }</span> +00619 <span class="comment"> }</span> +00620 <span class="comment"> }</span> +00621 <span class="comment"> }</span> +00622 <span class="comment"> }</span> +00623 <span class="comment"></span> +00624 <span class="comment"> for (i=0; i<_Chains.size(); ++i)</span> +00625 <span class="comment"> {</span> +00626 <span class="comment"> uint startTip = _Chains[i].getStartTip(),</span> +00627 <span class="comment"> stopTip = _Chains[i].getStopTip();</span> +00628 <span class="comment"></span> +00629 <span class="comment"></span> +00630 <span class="comment">// if (_Chains[i].getEdge() >= 0 && startTip == stopTip)</span> +00631 <span class="comment">// {</span> +00632 <span class="comment">// nlwarning("NLPACS::CLocalRetriever::computeLoopsAndTips(): chain %d on edge %d has same StartTip and StopTip", i, _Chains[i].getEdge(), startTip, stopTip);</span> +00633 <span class="comment">// }</span> +00634 <span class="comment"></span> +00635 <span class="comment"></span> +00636 <span class="comment"> _Tips[startTip].Chains.push_back(CTip::CChainTip(i, true));</span> +00637 <span class="comment"> _Tips[stopTip].Chains.push_back(CTip::CChainTip(i, false));</span> +00638 <span class="comment"> }</span> +00639 <span class="comment">*/</span> +00640 <span class="keywordflow">for</span> (i=0; i<_Surfaces.size(); ++i) +00641 { +00642 <span class="keywordflow">for</span> (j=0; j<_Surfaces[i]._Loops.size(); ++j) +00643 { +00644 _Surfaces[i]._Loops[j].Length = 0.0f; +00645 <a class="code" href="a04558.html#a15">uint</a> k; +00646 +00647 <span class="keywordflow">for</span> (k=0; k<_Surfaces[i]._Loops[j].size(); ++k) +00648 _Surfaces[i]._Loops[j].Length += <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[_Surfaces[i]._Chains[_Surfaces[i]._Loops[j][k]].Chain].getLength(); +00649 } +00650 } +00651 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_4" doxytag="NLPACS::CLocalRetriever::computeTopologies" ></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::CLocalRetriever::computeTopologies </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> +Builds topologies tables. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00822">822</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a06334.html#l00137">NLPACS::CRetrievableSurface::_Chains</a>, <a class="el" href="a06334.html#l00125">NLPACS::CRetrievableSurface::_Character</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a05930.html#l00307">_Topologies</a>, <a class="el" href="a06334.html#l00146">NLPACS::CRetrievableSurface::_Topologies</a>, <a class="el" href="a05540.html#l00269">NLPACS::CChain::getLeft()</a>, <a class="el" href="a05540.html#l00274">NLPACS::CChain::getRight()</a>, <a class="el" href="a05380.html#a31a9">NLPACS::NumCreatureModels</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00099">sint32</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +Referenced by <a class="el" href="a05522.html#l00627">NLPACS::computeRetriever()</a>. +<p> +<div class="fragment"><pre>00823 { +00824 <span class="comment">//nlinfo("compute topologies");</span> +00825 +00826 <span class="comment">// Find topologies out...</span> +00827 <a class="code" href="a04558.html#a15">uint</a> character; +00828 <span class="keywordflow">for</span> (character=0; character<<a class="code" href="a05380.html#a31a9">NumCreatureModels</a>; ++character) +00829 { +00830 <span class="comment">// for each type of creature, flood fill surfaces...</span> +00831 <a class="code" href="a04558.html#a10">sint32</a> surface; +00832 <a class="code" href="a04558.html#a15">uint</a> topology = 0; +00833 +00834 <span class="keywordflow">for</span> (surface=0; surface<(<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size(); ++surface) +00835 { +00836 <span class="keywordflow">if</span> (<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[surface]._Topologies[character] == -1 && +00837 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[surface]._Character == character) +00838 { +00839 vector<sint32> surfacesStack; +00840 surfacesStack.push_back(surface); +00841 +00842 <span class="keywordflow">while</span> (!surfacesStack.empty()) +00843 { +00844 CRetrievableSurface &current = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[surfacesStack.back()]; +00845 surfacesStack.pop_back(); +00846 current._Topologies[character] = topology; +00847 +00848 <a class="code" href="a04558.html#a15">uint</a> i; +00849 <span class="keywordflow">for</span> (i=0; i<current._Chains.size(); ++i) +00850 { +00851 CChain &chain = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[current._Chains[i].Chain]; +00852 <a class="code" href="a04558.html#a10">sint32</a> link = (chain.getLeft() == surface) ? chain.getRight() : chain.getLeft(); +00853 <span class="keywordflow">if</span> (link>=0 && link<(<a class="code" href="a04558.html#a14">sint</a>)_Surfaces.size() && +00854 _Surfaces[link]._Topologies[character] == -1 && +00855 _Surfaces[link]._Character >= character) +00856 { +00857 surfacesStack.push_back(link); +00858 _Surfaces[link]._Topologies[character] = topology; +00859 } +00860 } +00861 } +00862 +00863 ++topology; +00864 } +00865 } +00866 +00867 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp9">_Topologies</a>[character].resize(topology); +00868 <span class="comment">//nlinfo("generated %d topologies for character %d", topology, character);</span> +00869 } +00870 +00871 <a class="code" href="a04558.html#a15">uint</a> surface; +00872 <span class="keywordflow">for</span> (surface=0; surface<<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size(); ++surface) +00873 { +00874 CRetrievableSurface &current = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[surface]; +00875 +00876 <span class="keywordflow">for</span> (character=0; character<<a class="code" href="a05380.html#a31a9">NumCreatureModels</a>; ++character) +00877 <span class="keywordflow">if</span> (current._Topologies[character] >= 0) +00878 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp9">_Topologies</a>[character][current._Topologies[character]].push_back(surface); +00879 } +00880 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera0" doxytag="NLPACS::CLocalRetriever::distanceToBorder" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> float NLPACS::CLocalRetriever::distanceToBorder </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a02793.html">ULocalPosition</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>pos</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const</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="a05929.html#l00291">291</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a06334.html#l00137">NLPACS::CRetrievableSurface::_Chains</a>, <a class="el" href="a05930.html#l00288">_OrderedChains</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a06605.html#l00051">NLPACS::ULocalPosition::Estimation</a>, <a class="el" href="a05540.html#l00266">NLPACS::CChain::getSubChain()</a>, <a class="el" href="a05540.html#l00263">NLPACS::CChain::getSubChains()</a>, <a class="el" href="a05930.html#l00422">isLoaded()</a>, <a class="el" href="a06605.html#l00048">NLPACS::ULocalPosition::Surface</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +Referenced by <a class="el" href="a05761.html#l00252">NLPACS::CGlobalRetriever::distanceToBorder()</a>. +<p> +<div class="fragment"><pre>00292 { +00293 <span class="keywordflow">if</span> (!<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_22">isLoaded</a>()) +00294 <span class="keywordflow">return</span> 0.0f; +00295 +00296 <span class="keyword">const</span> CRetrievableSurface &surf = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[pos.Surface]; +00297 <a class="code" href="a04558.html#a15">uint</a> i, j; +00298 <span class="keywordtype">float</span> minDist = 1.0e10f, dist; +00299 +00300 <span class="keywordflow">for</span> (i=0; i<surf._Chains.size(); ++i) +00301 { +00302 <span class="keyword">const</span> CChain &chain = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[surf._Chains[i].Chain]; +00303 <span class="keywordflow">for</span> (j=0; j<chain.getSubChains().size(); ++j) +00304 { +00305 dist = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp7">_OrderedChains</a>[chain.getSubChain(j)].distance(pos.Estimation); +00306 <span class="keywordflow">if</span> (dist < minDist) +00307 { +00308 minDist = dist; +00309 } +00310 } +00311 } +00312 +00313 <span class="keywordflow">return</span> minDist; +00314 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera1" doxytag="NLPACS::CLocalRetriever::dumpSurface" ></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::CLocalRetriever::dumpSurface </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a> </td> + <td class="mdname" nowrap> <em>surf</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname" nowrap> <em>vect</em> = <a class="el" href="a03128.html#NLMISC_1_1CVectors3">NLMISC::CVector::Null</a></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> + +<p> +Definition at line <a class="el" href="a05929.html#l00248">248</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a06334.html#l00137">NLPACS::CRetrievableSurface::_Chains</a>, <a class="el" href="a05930.html#l00289">_FullOrderedChains</a>, <a class="el" href="a06334.html#l00140">NLPACS::CRetrievableSurface::_Loops</a>, <a class="el" href="a05930.html#l00288">_OrderedChains</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a05646.html#l00649">buffer</a>, <a class="el" href="a05540.html#l00077">NLPACS::COrderedChain3f::getIndexInParent()</a>, <a class="el" href="a05540.html#l00269">NLPACS::CChain::getLeft()</a>, <a class="el" href="a05540.html#l00074">NLPACS::COrderedChain3f::getParentId()</a>, <a class="el" href="a05540.html#l00274">NLPACS::CChain::getRight()</a>, <a class="el" href="a05540.html#l00300">NLPACS::CChain::getStartTip()</a>, <a class="el" href="a05540.html#l00303">NLPACS::CChain::getStopTip()</a>, <a class="el" href="a05540.html#l00266">NLPACS::CChain::getSubChain()</a>, <a class="el" href="a05540.html#l00263">NLPACS::CChain::getSubChains()</a>, <a class="el" href="a05540.html#l00133">NLPACS::COrderedChain::getVertices()</a>, <a class="el" href="a05540.html#l00068">NLPACS::COrderedChain3f::getVertices()</a>, <a class="el" href="a05540.html#l00071">NLPACS::COrderedChain3f::isForward()</a>, <a class="el" href="a06334.html#l00113">NLPACS::CRetrievableSurface::TLoop::Length</a>, <a class="el" href="a05622.html#l00111">nlinfo</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00456">computeLoopsAndTips()</a>. +<p> +<div class="fragment"><pre>00249 { +00250 <span class="keyword">const</span> CRetrievableSurface &surface = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[surf]; +00251 +00252 <a class="code" href="a04199.html#a1">nlinfo</a>(<span class="stringliteral">"dump surf %d"</span>, surf); +00253 <a class="code" href="a04199.html#a1">nlinfo</a>(<span class="stringliteral">"%d chains, %d loops"</span>, surface._Chains.size(), surface._Loops.size()); +00254 +00255 <a class="code" href="a04558.html#a15">uint</a> i, j, k; +00256 +00257 <span class="keywordflow">for</span> (i=0; i<surface._Chains.size(); ++i) +00258 { +00259 <a class="code" href="a04558.html#a15">uint</a> chainId = surface._Chains[i].Chain; +00260 <span class="keyword">const</span> CChain &chain = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chainId]; +00261 <a class="code" href="a04199.html#a1">nlinfo</a>(<span class="stringliteral">"-- chain %d[%d]: %d sub left=%d right=%d start=%d stop=%d"</span>, i, chainId, chain.getSubChains().size(), chain.getLeft(), chain.getRight(), chain.getStartTip(), chain.getStopTip()); +00262 +00263 <span class="keywordflow">for</span> (j=0; j<chain.getSubChains().size(); ++j) +00264 { +00265 <span class="keyword">const</span> COrderedChain3f &ochain = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp5">_FullOrderedChains</a>[chain.getSubChain(j)]; +00266 <span class="keyword">const</span> COrderedChain &ochains = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp7">_OrderedChains</a>[chain.getSubChain(j)]; +00267 <a class="code" href="a04199.html#a1">nlinfo</a>(<span class="stringliteral">" subchain %d[%d]: fwd=%d parent=%d idx=%d"</span>, j, chain.getSubChain(j), ochain.isForward(), ochain.getParentId(), ochain.getIndexInParent()); +00268 <span class="keywordflow">for</span> (k=0; k<ochain.getVertices().size(); ++k) +00269 <a class="code" href="a04199.html#a1">nlinfo</a>(<span class="stringliteral">" v[%d]=(%.3f,%.3f,%.3f) (%d,%d)"</span>, k, ochain.getVertices()[k].x+vect.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>, ochain.getVertices()[k].y+vect.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a>, ochain.getVertices()[k].z+vect.<a class="code" href="a03128.html#NLMISC_1_1CVectoro2">z</a>, ochains.getVertices()[k].x, ochains.getVertices()[k].y); +00270 } +00271 +00272 } +00273 +00274 <span class="keywordflow">for</span> (i=0; i<surface._Loops.size(); ++i) +00275 { +00276 <span class="keyword">const</span> CRetrievableSurface::TLoop &loop = surface._Loops[i]; +00277 <a class="code" href="a04199.html#a1">nlinfo</a>(<span class="stringliteral">"-- loop %d: %d chains length=%.2f"</span>, i, loop.size(), loop.Length); +00278 <span class="keyword">static</span> <span class="keywordtype">char</span> wbuffer[256]; +00279 <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="a04223.html#a589">buffer</a>[10240]; +00280 sprintf(buffer, <span class="stringliteral">" chains:"</span>); +00281 <span class="keywordflow">for</span> (j=0; j<loop.size(); ++j) +00282 { +00283 sprintf(wbuffer, <span class="stringliteral">" %d[%d]"</span>, loop[j], surface._Chains[loop[j]].Chain); +00284 strcat(buffer, wbuffer); +00285 } +00286 <a class="code" href="a04199.html#a1">nlinfo</a>(<span class="stringliteral">"%s"</span>, buffer); +00287 } +00288 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_5" doxytag="NLPACS::CLocalRetriever::findBorderChains" ></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::CLocalRetriever::findBorderChains </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> +Found chains on the edges of the retriever and fills _BorderChains tables. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00782">782</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00304">_BorderChains</a>, <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a05646.html#l00225">index</a>, <a class="el" href="a05981.html#l00099">sint32</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +Referenced by <a class="el" href="a05522.html#l00627">NLPACS::computeRetriever()</a>. +<p> +<div class="fragment"><pre>00783 { +00784 <a class="code" href="a04558.html#a15">uint</a> chain; +00785 +00786 <span class="comment">// for each chain, if it belongs to an edge of the</span> +00787 <span class="comment">// local retriever, then adds it to the _BorderChains.</span> +00788 <span class="keywordflow">for</span> (chain=0; chain<<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>.size(); ++chain) +00789 <span class="keywordflow">if</span> (<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain].isBorderChain()) +00790 { +00791 <a class="code" href="a04558.html#a10">sint32</a> <a class="code" href="a04223.html#a566">index</a> = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp2">_BorderChains</a>.size(); +00792 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp2">_BorderChains</a>.push_back(chain); +00793 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain].setBorderChainIndex(index); +00794 } +00795 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera2" doxytag="NLPACS::CLocalRetriever::findPath" ></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::CLocalRetriever::findPath </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a02792.html">CLocalPosition</a> & </td> + <td class="mdname" nowrap> <em>A</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a02792.html">CLocalPosition</a> & </td> + <td class="mdname" nowrap> <em>B</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>std::vector< <a class="el" href="a03662.html">CVector2s</a> > & </td> + <td class="mdname" nowrap> <em>path</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a02387.html">NLPACS::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> +Finds a path in a given surface, from the point A to the point B. +<p> + +<p> +<dl compact><dt><b><a class="el" href="todo.html#_todo000011">Todo:</a></b></dt><dd>Ben use smart allocations here</dd></dl> + +<p> +Definition at line <a class="el" href="a05929.html#l01576">1576</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00316">_ChainQuad</a>, <a class="el" href="a06334.html#l00137">NLPACS::CRetrievableSurface::_Chains</a>, <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a06334.html#l00140">NLPACS::CRetrievableSurface::_Loops</a>, <a class="el" href="a05930.html#l00288">_OrderedChains</a>, <a class="el" href="a05540.html#l00217">NLPACS::CChain::_SubChains</a>, <a class="el" href="a05930.html#l00295">_Surfaces</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="a06605.html#l00051">NLPACS::ULocalPosition::Estimation</a>, <a class="el" href="a06756.html#l00873">from</a>, <a class="el" href="a05540.html#l00269">NLPACS::CChain::getLeft()</a>, <a class="el" href="a05540.html#l00270">NLPACS::CChain::getLeftLoop()</a>, <a class="el" href="a05540.html#l00271">NLPACS::CChain::getLeftLoopIndex()</a>, <a class="el" href="a05540.html#l00279">NLPACS::CChain::getLength()</a>, <a class="el" href="a05540.html#l00139">NLPACS::COrderedChain::getParentId()</a>, <a class="el" href="a05540.html#l00275">NLPACS::CChain::getRightLoop()</a>, <a class="el" href="a05540.html#l00276">NLPACS::CChain::getRightLoopIndex()</a>, <a class="el" href="a06334.html#l00113">NLPACS::CRetrievableSurface::TLoop::Length</a>, <a class="el" href="a05622.html#l00154">nlerror</a>, <a class="el" href="a05622.html#l00135">nlwarning</a>, <a class="el" href="a05583.html#l00124">NLPACS::CEdgeChainEntry::OChainId</a>, <a class="el" href="a05541.html#l00289">NLPACS::CChainQuad::selectEdges()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a06605.html#l00048">NLPACS::ULocalPosition::Surface</a>, <a class="el" href="a05981.html#l00105">uint</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="a05761.html#l01062">NLPACS::CGlobalRetriever::findPath()</a>. +<p> +<div class="fragment"><pre>01580 { +01581 <span class="keywordflow">if</span> (A.Surface != B.Surface) +01582 { +01583 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"in NLPACS::CLocalRetriever::findPath()"</span>); +01584 <a class="code" href="a04199.html#a3">nlerror</a>(<span class="stringliteral">"Try to find a path between 2 points that are not in the same surface (A=%d, B=%d)"</span>, A.Surface, B.Surface); +01585 } +01586 +01587 CVector a = A.Estimation, +01588 b = B.Estimation, +01589 n = CVector(a.y-b.y, b.x-a.x, 0.0f); +01590 +01591 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp3">_ChainQuad</a>.selectEdges(a, b, cst); +01592 +01594 vector<CIntersectionMarker> intersections; +01595 +01596 <a class="code" href="a04558.html#a15">uint</a> i, j; +01597 <a class="code" href="a04558.html#a10">sint32</a> surfaceId = A.Surface; +01598 <span class="keyword">const</span> CRetrievableSurface &surface = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[surfaceId]; +01599 +01600 <span class="keywordflow">for</span> (i=0; i<cst.<a class="code" href="a02387.html#NLPACS_1_1CCollisionSurfaceTempo3">EdgeChainEntries</a>.size(); ++i) +01601 { +01602 CEdgeChainEntry &entry = cst.<a class="code" href="a02387.html#NLPACS_1_1CCollisionSurfaceTempo3">EdgeChainEntries</a>[i]; +01603 <span class="keyword">const</span> COrderedChain &chain = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp7">_OrderedChains</a>[entry.OChainId]; +01604 +01605 <span class="keywordflow">if</span> (<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain.getParentId()].getLeft() != surfaceId && +01606 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain.getParentId()].getRight() != surfaceId) +01607 <span class="keywordflow">continue</span>; +01608 +01609 <span class="keywordflow">for</span> (j=entry.EdgeStart; j<entry.EdgeEnd; ++j) +01610 { +01611 <span class="comment">// here the edge collision test</span> +01612 +01613 CVector p0 = chain[j].unpack3f(), +01614 p1 = chain[j+1].unpack3f(); +01615 +01616 <span class="keywordtype">float</span> vp0 = (p0-a)*n, +01617 vp1 = (p1-a)*n; +01618 +01619 <span class="keywordflow">if</span> (vp0*vp1 <= 0.0f) +01620 { +01621 CVector np = CVector(p0.y-p1.y, p1.x-p0.x, 0.0f); +01622 +01623 <span class="keywordtype">float</span> va = (a-p0)*np, +01624 vb = (b-p0)*np; +01625 +01626 <span class="comment">// here we have an intersection</span> +01627 <span class="keywordflow">if</span> (va*vb <= 0.0f) +01628 { +01629 <span class="keyword">const</span> CChain &parent = _Chains[chain.getParentId()]; +01630 <span class="keywordtype">bool</span> isIn = (va-vb < 0.0f) ^ (parent.getLeft() == surfaceId) ^ chain.isForward(); +01631 +01632 intersections.push_back(CIntersectionMarker(va/(va-vb), entry.OChainId, j, isIn)); +01633 } +01634 } +01635 } +01636 } +01637 +01638 sort(intersections.begin(), intersections.end()); +01639 +01640 <a class="code" href="a04558.html#a15">uint</a> intersStart = 0; +01641 <a class="code" href="a04558.html#a15">uint</a> intersEnd = intersections.size(); +01642 +01643 <span class="keywordflow">if</span> (intersEnd > 0) +01644 { +01645 <span class="keywordflow">while</span> (intersStart < intersections.size() && +01646 intersections[intersStart].In && intersections[intersStart].Position < 1.0e-4f) +01647 ++intersStart; +01648 +01649 <span class="keywordflow">while</span> (intersStart < intersEnd && +01650 !intersections[intersEnd-1].In && intersections[intersEnd-1].Position > 1.0f-1.0e-4f) +01651 --intersEnd; +01652 +01653 <span class="comment">// Check intersections have a valid order</span> +01654 <span class="keywordflow">if</span> ((intersEnd-intersStart) & 1) +01655 { +01656 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"in NLPACS::CLocalRetriever::findPath()"</span>); +01657 <a class="code" href="a04199.html#a3">nlerror</a>(<span class="stringliteral">"Found an odd (%d) number of intersections"</span>, intersections.size()); +01658 } +01659 +01660 <span class="keywordflow">for</span> (i=intersStart; i<intersEnd; ) +01661 { +01662 <a class="code" href="a04558.html#a15">uint</a> exitLoop, enterLoop; +01663 +01664 <span class="keyword">const</span> CChain &exitChain = _Chains[_OrderedChains[intersections[i].OChain].getParentId()]; +01665 exitLoop = (exitChain.getLeft() == surfaceId) ? exitChain.getLeftLoop() : exitChain.getRightLoop(); +01666 +01667 <span class="keywordflow">if</span> (intersections[i++].In) +01668 { +01669 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"in NLPACS::CLocalRetriever::findPath()"</span>); +01670 <a class="code" href="a04199.html#a3">nlerror</a>(<span class="stringliteral">"Entered the surface before exited"</span>, intersections.size()); +01671 } +01672 +01673 <span class="keyword">const</span> CChain &enterChain = _Chains[_OrderedChains[intersections[i].OChain].getParentId()]; +01674 enterLoop = (enterChain.getLeft() == surfaceId) ? enterChain.getLeftLoop() : enterChain.getRightLoop(); +01675 +01676 <span class="keywordflow">if</span> (!intersections[i++].In) +01677 { +01678 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"in NLPACS::CLocalRetriever::findPath()"</span>); +01679 <a class="code" href="a04199.html#a3">nlerror</a>(<span class="stringliteral">"Exited twice the surface"</span>, intersections.size()); +01680 } +01681 +01682 <span class="keywordflow">if</span> (exitLoop != enterLoop) +01683 { +01684 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"in NLPACS::CLocalRetriever::findPath()"</span>); +01685 <a class="code" href="a04199.html#a3">nlerror</a>(<span class="stringliteral">"Exited and rentered by a different loop"</span>); +01686 } +01687 } +01688 } +01689 +01690 <span class="comment">// dumpSurface(surfaceId);</span> +01691 +01692 path.push_back(CVector2s(A.Estimation)); +01693 +01694 <span class="keywordflow">for</span> (i=intersStart; i<intersEnd; ) +01695 { +01696 <a class="code" href="a04558.html#a15">uint</a> exitChainId = _OrderedChains[intersections[i].OChain].getParentId(), +01697 enterChainId = _OrderedChains[intersections[i+1].OChain].getParentId(); +01698 <span class="keyword">const</span> CChain &exitChain = _Chains[exitChainId], +01699 &enterChain = _Chains[enterChainId]; +01700 <a class="code" href="a04558.html#a15">uint</a> loopId, exitLoopIndex, enterLoopIndex; +01701 +01702 <span class="keywordflow">if</span> (exitChain.getLeft() == surfaceId) +01703 { +01704 loopId = exitChain.getLeftLoop(); +01705 exitLoopIndex = exitChain.getLeftLoopIndex(); +01706 } +01707 <span class="keywordflow">else</span> +01708 { +01709 loopId = exitChain.getRightLoop(); +01710 exitLoopIndex = exitChain.getRightLoopIndex(); +01711 } +01712 +01713 <span class="keyword">const</span> CRetrievableSurface::TLoop &loop = surface._Loops[loopId]; +01714 +01715 <span class="keywordflow">if</span> (enterChain.getLeft() == surfaceId) +01716 enterLoopIndex = enterChain.getLeftLoopIndex(); +01717 <span class="keywordflow">else</span> +01718 enterLoopIndex = enterChain.getRightLoopIndex(); +01719 +01720 <span class="keywordtype">float</span> forwardLength = (exitChain.getLength()+enterChain.getLength())*0.5f; +01721 +01722 <a class="code" href="a04558.html#a14">sint</a> loopIndex = exitLoopIndex; +01723 <a class="code" href="a04558.html#a15">uint</a> thisChainId = exitChainId; +01724 <span class="keywordtype">bool</span> thisChainForward = (enterChain.getLeft() == surfaceId); +01725 <a class="code" href="a04558.html#a15">uint</a> thisOChainId = intersections[i].OChain; +01726 <a class="code" href="a04558.html#a14">sint</a> thisOChainIndex = _OrderedChains[thisOChainId].getIndexInParent(); +01727 <span class="keywordtype">bool</span> forward; +01728 +01729 <span class="keywordflow">if</span> (exitChainId != enterChainId) +01730 { +01731 <span class="keywordflow">for</span> (j=(exitLoopIndex+1)%loop.size(); j!=enterLoopIndex; j=(j+1)%loop.size()) +01732 forwardLength += _Chains[surface._Chains[loop[j]].Chain].getLength(); +01733 forward = (forwardLength <= loop.Length-forwardLength); +01734 } +01735 <span class="keywordflow">else</span> +01736 { +01737 forward = !thisChainForward ^ (_OrderedChains[intersections[i].OChain].getIndexInParent() < _OrderedChains[intersections[i+1].OChain].getIndexInParent()); +01738 } +01739 +01740 path.push_back(CVector2s(A.Estimation+intersections[i].Position*(B.Estimation-A.Estimation))); +01741 +01742 <span class="keywordflow">while</span> (<span class="keyword">true</span>) +01743 { +01744 <a class="code" href="a04558.html#a14">sint</a> <a class="code" href="a05333.html#a132">from</a> = (thisOChainId == intersections[i].OChain) ? intersections[i].Edge : -1, +01745 to = (thisOChainId == intersections[i+1].OChain) ? intersections[i+1].Edge : -1; +01746 <span class="keywordtype">bool</span> oforward = thisChainForward ^ forward ^ _OrderedChains[thisOChainId].isForward(); +01747 +01748 <span class="keywordflow">if</span> (<a class="code" href="a05333.html#a132">from</a> != -1 && to != -1) +01749 oforward = (intersections[i].Edge < intersections[i+1].Edge); +01750 +01751 _OrderedChains[thisOChainId].traverse(from, to, oforward, path); +01752 +01753 <span class="keywordflow">if</span> (thisOChainId == intersections[i+1].OChain) +01754 <span class="keywordflow">break</span>; +01755 +01756 thisOChainIndex = (thisChainForward ^ forward) ? thisOChainIndex-1 : thisOChainIndex+1; +01757 +01758 <span class="keywordflow">if</span> (thisOChainIndex < 0 || thisOChainIndex >= (<a class="code" href="a04558.html#a14">sint</a>)_Chains[thisChainId]._SubChains.size()) +01759 { +01760 <span class="keywordflow">if</span> (forward) +01761 { +01762 loopIndex++; +01763 <span class="keywordflow">if</span> (loopIndex == (<a class="code" href="a04558.html#a14">sint</a>)loop.size()) +01764 loopIndex = 0; +01765 } +01766 <span class="keywordflow">else</span> +01767 { +01768 loopIndex--; +01769 <span class="keywordflow">if</span> (loopIndex < 0) +01770 loopIndex = loop.size()-1; +01771 } +01772 +01773 thisChainId = surface._Chains[loop[loopIndex]].Chain; +01774 thisChainForward = (_Chains[thisChainId].getLeft() == surfaceId); +01775 thisOChainIndex = (thisChainForward && forward || !thisChainForward && !forward) ? +01776 0 : _Chains[thisChainId]._SubChains.size()-1; +01777 } +01778 +01779 thisOChainId = _Chains[thisChainId]._SubChains[thisOChainIndex]; +01780 } +01781 +01782 path.push_back(CVector2s(A.Estimation+intersections[i+1].Position*(B.Estimation-A.Estimation))); +01783 i += 2; +01784 } +01785 +01786 path.push_back(CVector2s(B.Estimation)); +01787 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_6" doxytag="NLPACS::CLocalRetriever::flushFullOrderedChains" ></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::CLocalRetriever::flushFullOrderedChains </td> + <td class="md" valign="top">( </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> +Adds a chain to the local retriever, using the vertices of the chain, the left and right surfaces id and the edge on which the chain is stuck +<p> +Definition at line <a class="el" href="a05930.html#l00529">529</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00289">_FullOrderedChains</a>. +<p> +<div class="fragment"><pre>00529 { <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp5">_FullOrderedChains</a>.clear(); } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera3" doxytag="NLPACS::CLocalRetriever::forceBorderChainId" ></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::CLocalRetriever::forceBorderChainId </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname" nowrap> <em>chainId</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname" nowrap> <em>borderId</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [inline]</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="a05930.html#l00602">602</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a05622.html#l00135">nlwarning</a>, and <a class="el" href="a05981.html#l00100">uint32</a>. +<p> +<div class="fragment"><pre>00603 { +00604 <span class="keywordflow">if</span> (chainId >= <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>.size()) +00605 { +00606 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"forceBorderChainId(): couldn't force border id %d for chain %d, doesn't exist"</span>, borderId, chainId); +00607 <span class="keywordflow">return</span>; +00608 } +00609 +00610 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chainId].setBorderChainIndex(borderId); +00611 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_5" doxytag="NLPACS::CLocalRetriever::forceLoaded" ></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::CLocalRetriever::forceLoaded </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">bool </td> + <td class="mdname1" valign="top" nowrap> <em>state</em> </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> +Force Loaded State. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00425">425</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00341">_Loaded</a>. +<p> +<div class="fragment"><pre>00425 { <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp6">_Loaded</a>= state; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_6" doxytag="NLPACS::CLocalRetriever::getBBox" ></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 <a class="el" href="a02156.html">NLMISC::CAABBox</a>& NLPACS::CLocalRetriever::getBBox </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Returns the bbox. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00407">407</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a06337.html#l00109">NLPACS::CRetrieverInstance::make()</a>. +<p> +<div class="fragment"><pre>00407 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp1">_BBox</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_7" doxytag="NLPACS::CLocalRetriever::getBorderChain" ></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#a9">uint16</a> NLPACS::CLocalRetriever::getBorderChain </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a> </td> + <td class="mdname1" valign="top" nowrap> <em>n</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Returns the id of the nth chain on the edges of the retriever. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00396">396</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00304">_BorderChains</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00098">uint16</a>. +<p> +<div class="fragment"><pre>00396 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp2">_BorderChains</a>[n]; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_8" doxytag="NLPACS::CLocalRetriever::getBorderChains" ></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 std::vector<<a class="el" href="a04558.html#a9">uint16</a>>& NLPACS::CLocalRetriever::getBorderChains </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Returns the ids of the chains on the edges of the retriever. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00394">394</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00304">_BorderChains</a>. +<p> +Referenced by <a class="el" href="a05761.html#l00153">NLPACS::CGlobalRetriever::check()</a>, <a class="el" href="a06337.html#l00089">NLPACS::CRetrieverInstance::init()</a>, <a class="el" href="a06337.html#l00194">NLPACS::CRetrieverInstance::link()</a>, and <a class="el" href="a05522.html#l00524">NLPACS::linkExteriorToInterior()</a>. +<p> +<div class="fragment"><pre>00394 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp2">_BorderChains</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_9" doxytag="NLPACS::CLocalRetriever::getChain" ></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 <a class="el" href="a02333.html">CChain</a>& NLPACS::CLocalRetriever::getChain </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a> </td> + <td class="mdname1" valign="top" nowrap> <em>n</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +retruns the nth chain. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00391">391</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00292">_Chains</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +Referenced by <a class="el" href="a05761.html#l00153">NLPACS::CGlobalRetriever::check()</a>, <a class="el" href="a05930.html#l00265">NLPACS::CLocalRetriever::CIterator::end()</a>, <a class="el" href="a05761.html#l00855">NLPACS::CGlobalRetriever::findAStarPath()</a>, <a class="el" href="a05761.html#l01177">NLPACS::CGlobalRetriever::findCollisionChains()</a>, <a class="el" href="a05761.html#l01062">NLPACS::CGlobalRetriever::findPath()</a>, <a class="el" href="a05930.html#l00257">NLPACS::CLocalRetriever::CIterator::get3d()</a>, <a class="el" href="a05761.html#l00275">NLPACS::CGlobalRetriever::getBorders()</a>, <a class="el" href="a05930.html#l00250">NLPACS::CLocalRetriever::CIterator::operator *()</a>, <a class="el" href="a05930.html#l00223">NLPACS::CLocalRetriever::CIterator::operator++()</a>, and <a class="el" href="a05930.html#l00272">NLPACS::CLocalRetriever::CIterator::setupIndex()</a>. +<p> +<div class="fragment"><pre>00391 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[n]; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_7" doxytag="NLPACS::CLocalRetriever::getChainQuad" ></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::CLocalRetriever::getChainQuad </td> + <td class="md" valign="top">( </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> +Returns the chain quad. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00500">500</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00316">_ChainQuad</a>. +<p> +Referenced by <a class="el" href="a05761.html#l00275">NLPACS::CGlobalRetriever::getBorders()</a>. +<p> +<div class="fragment"><pre>00500 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp3">_ChainQuad</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_10" doxytag="NLPACS::CLocalRetriever::getChains" ></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 std::vector<<a class="el" href="a02333.html">CChain</a>>& NLPACS::CLocalRetriever::getChains </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Returns the chains. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00389">389</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00292">_Chains</a>. +<p> +Referenced by <a class="el" href="a05761.html#l00153">NLPACS::CGlobalRetriever::check()</a>, <a class="el" href="a06337.html#l00194">NLPACS::CRetrieverInstance::link()</a>, <a class="el" href="a05522.html#l00524">NLPACS::linkExteriorToInterior()</a>, and <a class="el" href="a05929.html#l01807">testCollision()</a>. +<p> +<div class="fragment"><pre>00389 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_11" doxytag="NLPACS::CLocalRetriever::getExteriorMesh" ></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 <a class="el" href="a02492.html">CExteriorMesh</a>& NLPACS::CLocalRetriever::getExteriorMesh </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Returns the exterior mesh of the retriever. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00410">410</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00324">_ExteriorMesh</a>. +<p> +Referenced by <a class="el" href="a06337.html#l00139">NLPACS::CRetrieverInstance::initEdgeQuad()</a>, <a class="el" href="a06337.html#l00152">NLPACS::CRetrieverInstance::linkEdgeQuad()</a>, and <a class="el" href="a05522.html#l00524">NLPACS::linkExteriorToInterior()</a>. +<p> +<div class="fragment"><pre>00410 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_0">_ExteriorMesh</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_12" doxytag="NLPACS::CLocalRetriever::getFullOrderedChain" ></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 <a class="el" href="a03028.html">COrderedChain3f</a>& NLPACS::CLocalRetriever::getFullOrderedChain </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a> </td> + <td class="mdname1" valign="top" nowrap> <em>n</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Returns the nth full ordered chain. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00386">386</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00289">_FullOrderedChains</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +Referenced by <a class="el" href="a05930.html#l00257">NLPACS::CLocalRetriever::CIterator::get3d()</a>, and <a class="el" href="a05761.html#l00275">NLPACS::CGlobalRetriever::getBorders()</a>. +<p> +<div class="fragment"><pre>00386 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp5">_FullOrderedChains</a>[n]; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_13" doxytag="NLPACS::CLocalRetriever::getFullOrderedChains" ></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 std::vector<<a class="el" href="a03028.html">COrderedChain3f</a>>& NLPACS::CLocalRetriever::getFullOrderedChains </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Returns the full ordered chains. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00384">384</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00289">_FullOrderedChains</a>. +<p> +Referenced by <a class="el" href="a05761.html#l00275">NLPACS::CGlobalRetriever::getBorders()</a>, and <a class="el" href="a05522.html#l00524">NLPACS::linkExteriorToInterior()</a>. +<p> +<div class="fragment"><pre>00384 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp5">_FullOrderedChains</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera4" doxytag="NLPACS::CLocalRetriever::getHeight" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> float NLPACS::CLocalRetriever::getHeight </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a02793.html">ULocalPosition</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>position</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const</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="a05929.html#l01479">1479</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00333">_FaceGrid</a>, <a class="el" href="a05930.html#l00330">_InteriorFaces</a>, <a class="el" href="a05930.html#l00327">_InteriorVertices</a>, <a class="el" href="a05930.html#l00341">_Loaded</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a06605.html#l00051">NLPACS::ULocalPosition::Estimation</a>, <a class="el" href="a06478.html#l00054">NLPACS::IQuadNode::getMaxHeight()</a>, <a class="el" href="a06478.html#l00053">NLPACS::IQuadNode::getMinHeight()</a>, <a class="el" href="a06172.html#l00051">NLMISC::CPlane::intersect()</a>, <a class="el" href="a06170.html#l00036">NLMISC::CPlane::make()</a>, <a class="el" href="a05694.html#l00151">NLPACS::CFaceGrid::select()</a>, <a class="el" href="a05981.html#l00095">sint8</a>, <a class="el" href="a06605.html#l00048">NLPACS::ULocalPosition::Surface</a>, <a class="el" href="a05930.html#l00177">NLPACS::CLocalRetriever::CInteriorFace::Surface</a>, <a class="el" href="a05981.html#l00100">uint32</a>, <a class="el" href="a05646.html#l00237">v</a>, <a class="el" href="a05930.html#l00176">NLPACS::CLocalRetriever::CInteriorFace::Verts</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>. +<p> +Referenced by <a class="el" href="a05761.html#l02421">NLPACS::CGlobalRetriever::getMeanHeight()</a>, and <a class="el" href="a06337.html#l00507">NLPACS::CRetrieverInstance::snap()</a>. +<p> +<div class="fragment"><pre>01480 { +01481 <span class="keywordflow">if</span> (!<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp6">_Loaded</a>) +01482 <span class="keywordflow">return</span> 0.0f; +01483 +01484 <span class="keywordflow">if</span> (<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp10">_Type</a> == <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverw0NLPACS_1_1CLocalRetrieverw1">Interior</a>) +01485 { +01486 <span class="comment">// first preselect faces around the (x, y) position (CQuadGrid ?)</span> +01487 vector<uint32> selection; +01488 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_1">_FaceGrid</a>.select(position.Estimation, selection); +01489 +01490 <span class="comment">// from the preselect faces, look for the only face that belongs to the surface</span> +01491 <span class="comment">// and that contains the position</span> +01492 CVector pos = position.Estimation; +01493 CVector posh = pos+CVector(0.0f, 0.0f, 1.0f); +01494 <span class="keywordtype">float</span> bestDist = 1.0e10f; +01495 CVector best; +01496 vector<uint32>::iterator it; +01497 <span class="keywordflow">for</span> (it=selection.begin(); it!=selection.end(); ++it) +01498 { +01499 <span class="keyword">const</span> CInteriorFace &f = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_3">_InteriorFaces</a>[*it]; +01500 <span class="keywordflow">if</span> (f.Surface == (<a class="code" href="a04558.html#a11">uint32</a>)position.Surface) +01501 { +01502 CVector <a class="code" href="a04223.html#a576">v</a>[3]; +01503 <a class="code" href="a04223.html#a576">v</a>[0] = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_4">_InteriorVertices</a>[f.Verts[0]]; +01504 <a class="code" href="a04223.html#a576">v</a>[1] = _InteriorVertices[f.Verts[1]]; +01505 <a class="code" href="a04223.html#a576">v</a>[2] = _InteriorVertices[f.Verts[2]]; +01506 +01507 <span class="keywordtype">float</span> a,b,c; <span class="comment">// 2D cartesian coefficients of line in plane X/Y.</span> +01508 <span class="comment">// Line p0-p1.</span> +01509 a = -(<a class="code" href="a04223.html#a576">v</a>[1].y-<a class="code" href="a04223.html#a576">v</a>[0].y); +01510 b = (<a class="code" href="a04223.html#a576">v</a>[1].x-<a class="code" href="a04223.html#a576">v</a>[0].x); +01511 c = -(<a class="code" href="a04223.html#a576">v</a>[0].x*a + <a class="code" href="a04223.html#a576">v</a>[0].y*b); +01512 <span class="keywordflow">if</span> (a*pos.x + b*pos.y + c < 0) <span class="keywordflow">continue</span>; +01513 <span class="comment">// Line p1-p2.</span> +01514 a = -(<a class="code" href="a04223.html#a576">v</a>[2].y-<a class="code" href="a04223.html#a576">v</a>[1].y); +01515 b = (<a class="code" href="a04223.html#a576">v</a>[2].x-<a class="code" href="a04223.html#a576">v</a>[1].x); +01516 c = -(<a class="code" href="a04223.html#a576">v</a>[1].x*a + <a class="code" href="a04223.html#a576">v</a>[1].y*b); +01517 <span class="keywordflow">if</span> (a*pos.x + b*pos.y + c < 0) <span class="keywordflow">continue</span>; +01518 <span class="comment">// Line p2-p0.</span> +01519 a = -(<a class="code" href="a04223.html#a576">v</a>[0].y-<a class="code" href="a04223.html#a576">v</a>[2].y); +01520 b = (<a class="code" href="a04223.html#a576">v</a>[0].x-<a class="code" href="a04223.html#a576">v</a>[2].x); +01521 c = -(<a class="code" href="a04223.html#a576">v</a>[2].x*a + <a class="code" href="a04223.html#a576">v</a>[2].y*b); +01522 <span class="keywordflow">if</span> (a*pos.x + b*pos.y + c < 0) <span class="keywordflow">continue</span>; +01523 +01524 <a class="code" href="a03082.html">CPlane</a> p; +01525 p.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a>(v[0], v[1], v[2]); +01526 +01527 CVector i = p.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1992_5">intersect</a>(pos, posh); +01528 +01529 <span class="keywordtype">float</span> d = (<span class="keywordtype">float</span>)fabs(pos.z-i.z); +01530 +01531 <span class="keywordflow">if</span> (d < bestDist) +01532 { +01533 bestDist = d; +01534 best = i; +01535 } +01536 } +01537 } +01538 +01539 <span class="comment">// and computes the real position on this face</span> +01540 <span class="keywordflow">return</span> (bestDist < 200.0f) ? best.z : position.Estimation.z; +01541 } +01542 <span class="keywordflow">else</span> +01543 { +01544 <span class="keywordflow">if</span> (<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[position.Surface].getQuadTree().getRoot() != NULL) +01545 { +01546 <span class="comment">// find quad leaf.</span> +01547 <span class="keyword">const</span> CQuadLeaf *leaf = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[position.Surface].getQuadTree().getLeaf(position.Estimation); +01548 +01549 <span class="comment">// if there is no acceptable leaf, just give up</span> +01550 <span class="keywordflow">if</span> (leaf == NULL) +01551 { +01552 <span class="comment">//nlinfo("COL: quadtree: don't find the quadLeaf!");</span> +01553 <span class="keywordflow">return</span> position.Estimation.z; +01554 } +01555 <span class="keywordflow">else</span> +01556 { +01557 <span class="comment">// else return mean height.</span> +01558 <span class="keywordtype">float</span> meanHeight = (leaf->getMinHeight()+leaf->getMaxHeight())*0.5f; +01559 <span class="keywordflow">return</span> meanHeight; +01560 } +01561 } +01562 <span class="keywordflow">else</span> +01563 { +01564 <a class="code" href="a04558.html#a6">sint8</a> qh = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[position.Surface].getQuantHeight(); +01565 <span class="keywordflow">return</span> qh*2.0f + 1.0f; +01566 } +01567 } +01568 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_14" doxytag="NLPACS::CLocalRetriever::getIdentifier" ></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 std::string& NLPACS::CLocalRetriever::getIdentifier </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Returns the identifier of the retriever. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00419">419</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05761.html#l00736">NLPACS::CGlobalRetriever::getIdentifier()</a>, and <a class="el" href="a05761.html#l00493">NLPACS::CGlobalRetriever::retrievePosition()</a>. +<p> +<div class="fragment"><pre>00419 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_2">_Id</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_8" doxytag="NLPACS::CLocalRetriever::getInteriorFaces" ></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="a02789.html">CInteriorFace</a>>& NLPACS::CLocalRetriever::getInteriorFaces </td> + <td class="md" valign="top">( </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> +Returns the interior faces. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00493">493</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00330">_InteriorFaces</a>. +<p> +<div class="fragment"><pre>00493 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_3">_InteriorFaces</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_15" doxytag="NLPACS::CLocalRetriever::getInteriorFaces" ></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 std::vector<<a class="el" href="a02789.html">CInteriorFace</a>>& NLPACS::CLocalRetriever::getInteriorFaces </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Returns the interior faces. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00416">416</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00330">_InteriorFaces</a>. +<p> +Referenced by <a class="el" href="a05522.html#l00405">NLPACS::buildSnapping()</a>. +<p> +<div class="fragment"><pre>00416 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_3">_InteriorFaces</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_9" doxytag="NLPACS::CLocalRetriever::getInteriorVertices" ></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="a03128.html">NLMISC::CVector</a>>& NLPACS::CLocalRetriever::getInteriorVertices </td> + <td class="md" valign="top">( </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> +Returns the interior vertices. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00490">490</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00327">_InteriorVertices</a>. +<p> +<div class="fragment"><pre>00490 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_4">_InteriorVertices</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_16" doxytag="NLPACS::CLocalRetriever::getInteriorVertices" ></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 std::vector<<a class="el" href="a03128.html">NLMISC::CVector</a>>& NLPACS::CLocalRetriever::getInteriorVertices </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Returns the interior vertices. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00413">413</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00327">_InteriorVertices</a>. +<p> +Referenced by <a class="el" href="a05522.html#l00405">NLPACS::buildSnapping()</a>. +<p> +<div class="fragment"><pre>00413 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_4">_InteriorVertices</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera5" doxytag="NLPACS::CLocalRetriever::getNextChain" ></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> NLPACS::CLocalRetriever::getNextChain </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname" nowrap> <em>chain</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>surface</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> + +<p> +Definition at line <a class="el" href="a05929.html#l00182">182</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a06334.html#l00137">NLPACS::CRetrievableSurface::_Chains</a>, <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a06334.html#l00140">NLPACS::CRetrievableSurface::_Loops</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00100">uint32</a>. +<p> +<div class="fragment"><pre>00183 { +00184 <a class="code" href="a04558.html#a15">uint</a> loop; +00185 <a class="code" href="a04558.html#a15">uint</a> loopIndex; +00186 +00187 <span class="keywordflow">if</span> (<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain].getLeft() == surface) +00188 { +00189 loop = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain]._LeftLoop; +00190 loopIndex = _Chains[chain]._LeftLoopIndex; +00191 } +00192 <span class="keywordflow">else</span> +00193 { +00194 loop = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain]._RightLoop; +00195 loopIndex = _Chains[chain]._RightLoopIndex; +00196 } +00197 +00198 <span class="keyword">const</span> CRetrievableSurface &surf = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[surface]; +00199 <span class="keyword">const</span> CRetrievableSurface::TLoop &sLoop = surf._Loops[loop]; +00200 <span class="keywordflow">return</span> surf._Chains[sLoop[(loopIndex+1)%sLoop.size()]].Chain; +00201 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_17" doxytag="NLPACS::CLocalRetriever::getOrderedChain" ></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 <a class="el" href="a03027.html">COrderedChain</a>& NLPACS::CLocalRetriever::getOrderedChain </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a> </td> + <td class="mdname1" valign="top" nowrap> <em>n</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Returns the nth ordered chain. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00381">381</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00288">_OrderedChains</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +Referenced by <a class="el" href="a05761.html#l00153">NLPACS::CGlobalRetriever::check()</a>, <a class="el" href="a05522.html#l00627">NLPACS::computeRetriever()</a>, <a class="el" href="a05761.html#l01062">NLPACS::CGlobalRetriever::findPath()</a>, <a class="el" href="a05761.html#l00275">NLPACS::CGlobalRetriever::getBorders()</a>, <a class="el" href="a05930.html#l00250">NLPACS::CLocalRetriever::CIterator::operator *()</a>, and <a class="el" href="a05930.html#l00272">NLPACS::CLocalRetriever::CIterator::setupIndex()</a>. +<p> +<div class="fragment"><pre>00381 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp7">_OrderedChains</a>[n]; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_18" doxytag="NLPACS::CLocalRetriever::getOrderedChains" ></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 std::vector<<a class="el" href="a03027.html">COrderedChain</a>>& NLPACS::CLocalRetriever::getOrderedChains </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Returns the ordered chains. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00379">379</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00288">_OrderedChains</a>. +<p> +Referenced by <a class="el" href="a05761.html#l00153">NLPACS::CGlobalRetriever::check()</a>, <a class="el" href="a05522.html#l00627">NLPACS::computeRetriever()</a>, and <a class="el" href="a05929.html#l01807">testCollision()</a>. +<p> +<div class="fragment"><pre>00379 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp7">_OrderedChains</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera6" doxytag="NLPACS::CLocalRetriever::getPreviousChain" ></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> NLPACS::CLocalRetriever::getPreviousChain </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname" nowrap> <em>chain</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>surface</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> + +<p> +Definition at line <a class="el" href="a05929.html#l00161">161</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a06334.html#l00137">NLPACS::CRetrievableSurface::_Chains</a>, <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a06334.html#l00140">NLPACS::CRetrievableSurface::_Loops</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00100">uint32</a>. +<p> +<div class="fragment"><pre>00162 { +00163 <a class="code" href="a04558.html#a15">uint</a> loop; +00164 <a class="code" href="a04558.html#a15">uint</a> loopIndex; +00165 +00166 <span class="keywordflow">if</span> (<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain].getLeft() == surface) +00167 { +00168 loop = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain]._LeftLoop; +00169 loopIndex = _Chains[chain]._LeftLoopIndex; +00170 } +00171 <span class="keywordflow">else</span> +00172 { +00173 loop = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain]._RightLoop; +00174 loopIndex = _Chains[chain]._RightLoopIndex; +00175 } +00176 +00177 <span class="keyword">const</span> CRetrievableSurface &surf = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[surface]; +00178 <span class="keyword">const</span> CRetrievableSurface::TLoop &sLoop = surf._Loops[loop]; +00179 <span class="keywordflow">return</span> surf._Chains[sLoop[(loopIndex+sLoop.size()-1)%sLoop.size()]].Chain; +00180 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera7" doxytag="NLPACS::CLocalRetriever::getStartVector" ></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 <a class="el" href="a03128.html">CVector</a> & NLPACS::CLocalRetriever::getStartVector </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname" nowrap> <em>chain</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>surface</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> + +<p> +Definition at line <a class="el" href="a05929.html#l00101">101</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a05930.html#l00289">_FullOrderedChains</a>, <a class="el" href="a05540.html#l00068">NLPACS::COrderedChain3f::getVertices()</a>, <a class="el" href="a05540.html#l00071">NLPACS::COrderedChain3f::isForward()</a>, <a class="el" href="a05981.html#l00099">sint32</a>, and <a class="el" href="a05981.html#l00100">uint32</a>. +<p> +<div class="fragment"><pre>00102 { +00103 <span class="keywordtype">bool</span> onLeft = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain].getLeft() == surface; +00104 <span class="keyword">const</span> COrderedChain3f &ochain = onLeft ? <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp5">_FullOrderedChains</a>[_Chains[chain].getSubChains().front()] : +00105 _FullOrderedChains[_Chains[chain].getSubChains().back()]; +00106 +00107 <span class="keywordflow">if</span> (ochain.isForward() && onLeft || !ochain.isForward() && !onLeft) +00108 <span class="keywordflow">return</span> ochain.getVertices().front(); +00109 <span class="keywordflow">else</span> +00110 <span class="keywordflow">return</span> ochain.getVertices().back(); +00111 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera8" doxytag="NLPACS::CLocalRetriever::getStartVector" ></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 <a class="el" href="a03128.html">CVector</a> & NLPACS::CLocalRetriever::getStartVector </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname1" valign="top" nowrap> <em>chain</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const</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="a05929.html#l00086">86</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a05930.html#l00289">_FullOrderedChains</a>, <a class="el" href="a05540.html#l00068">NLPACS::COrderedChain3f::getVertices()</a>, <a class="el" href="a05540.html#l00071">NLPACS::COrderedChain3f::isForward()</a>, and <a class="el" href="a05981.html#l00100">uint32</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00456">computeLoopsAndTips()</a>, <a class="el" href="a06337.html#l00194">NLPACS::CRetrieverInstance::link()</a>, and <a class="el" href="a05522.html#l00524">NLPACS::linkExteriorToInterior()</a>. +<p> +<div class="fragment"><pre>00087 { +00088 <span class="keyword">const</span> COrderedChain3f &ochain = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp5">_FullOrderedChains</a>[<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain].getSubChains().front()]; +00089 <span class="keywordflow">return</span> (ochain.isForward()) ? ochain.getVertices().front() : ochain.getVertices().back(); +00090 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera9" doxytag="NLPACS::CLocalRetriever::getStopVector" ></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 <a class="el" href="a03128.html">CVector</a> & NLPACS::CLocalRetriever::getStopVector </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname" nowrap> <em>chain</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>surface</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> + +<p> +Definition at line <a class="el" href="a05929.html#l00113">113</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a05930.html#l00289">_FullOrderedChains</a>, <a class="el" href="a05540.html#l00068">NLPACS::COrderedChain3f::getVertices()</a>, <a class="el" href="a05540.html#l00071">NLPACS::COrderedChain3f::isForward()</a>, <a class="el" href="a05981.html#l00099">sint32</a>, and <a class="el" href="a05981.html#l00100">uint32</a>. +<p> +<div class="fragment"><pre>00114 { +00115 <span class="keywordtype">bool</span> onLeft = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain].getLeft() == surface; +00116 <span class="keyword">const</span> COrderedChain3f &ochain = onLeft ? <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp5">_FullOrderedChains</a>[_Chains[chain].getSubChains().back()] : +00117 _FullOrderedChains[_Chains[chain].getSubChains().front()]; +00118 +00119 <span class="keywordflow">if</span> (ochain.isForward() && onLeft || !ochain.isForward() && !onLeft) +00120 <span class="keywordflow">return</span> ochain.getVertices().back(); +00121 <span class="keywordflow">else</span> +00122 <span class="keywordflow">return</span> ochain.getVertices().front(); +00123 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera10" doxytag="NLPACS::CLocalRetriever::getStopVector" ></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 <a class="el" href="a03128.html">CVector</a> & NLPACS::CLocalRetriever::getStopVector </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname1" valign="top" nowrap> <em>chain</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const</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="a05929.html#l00092">92</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a05930.html#l00289">_FullOrderedChains</a>, <a class="el" href="a05540.html#l00068">NLPACS::COrderedChain3f::getVertices()</a>, <a class="el" href="a05540.html#l00071">NLPACS::COrderedChain3f::isForward()</a>, and <a class="el" href="a05981.html#l00100">uint32</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00456">computeLoopsAndTips()</a>, <a class="el" href="a06337.html#l00194">NLPACS::CRetrieverInstance::link()</a>, and <a class="el" href="a05522.html#l00524">NLPACS::linkExteriorToInterior()</a>. +<p> +<div class="fragment"><pre>00093 { +00094 <span class="keyword">const</span> COrderedChain3f &ochain = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp5">_FullOrderedChains</a>[<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain].getSubChains().back()]; +00095 <span class="keywordflow">return</span> (ochain.isForward()) ? ochain.getVertices().back() : ochain.getVertices().front(); +00096 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_19" doxytag="NLPACS::CLocalRetriever::getSurface" ></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 <a class="el" href="a03328.html">CRetrievableSurface</a>& NLPACS::CLocalRetriever::getSurface </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a> </td> + <td class="mdname1" valign="top" nowrap> <em>n</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Returns the nth surface. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00401">401</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00295">_Surfaces</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +Referenced by <a class="el" href="a05761.html#l00855">NLPACS::CGlobalRetriever::findAStarPath()</a>, <a class="el" href="a05761.html#l00275">NLPACS::CGlobalRetriever::getBorders()</a>, <a class="el" href="a05762.html#l00224">NLPACS::CGlobalRetriever::getMaterial()</a>, <a class="el" href="a05761.html#l01159">NLPACS::CGlobalRetriever::getSurfaceById()</a>, <a class="el" href="a05762.html#l00248">NLPACS::CGlobalRetriever::isWaterPosition()</a>, <a class="el" href="a06337.html#l00387">NLPACS::CRetrieverInstance::retrievePosition()</a>, <a class="el" href="a05761.html#l01392">NLPACS::CGlobalRetriever::testCollisionWithCollisionChains()</a>, and <a class="el" href="a05761.html#l01649">NLPACS::CGlobalRetriever::testMovementWithCollisionChains()</a>. +<p> +<div class="fragment"><pre>00401 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[n]; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_20" doxytag="NLPACS::CLocalRetriever::getSurfaces" ></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 std::vector<<a class="el" href="a03328.html">CRetrievableSurface</a>>& NLPACS::CLocalRetriever::getSurfaces </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Returns the surfaces. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00399">399</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00295">_Surfaces</a>. +<p> +Referenced by <a class="el" href="a05761.html#l00153">NLPACS::CGlobalRetriever::check()</a>, <a class="el" href="a05762.html#l00224">NLPACS::CGlobalRetriever::getMaterial()</a>, <a class="el" href="a05761.html#l01159">NLPACS::CGlobalRetriever::getSurfaceById()</a>, <a class="el" href="a05761.html#l00088">NLPACS::CGlobalRetriever::initRetrieveTable()</a>, <a class="el" href="a05761.html#l00430">NLPACS::CGlobalRetriever::makeInstance()</a>, and <a class="el" href="a05761.html#l01392">NLPACS::CGlobalRetriever::testCollisionWithCollisionChains()</a>. +<p> +<div class="fragment"><pre>00399 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_21" doxytag="NLPACS::CLocalRetriever::getType" ></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="a02787.html#NLPACS_1_1CLocalRetrieverw0">EType</a> NLPACS::CLocalRetriever::getType </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> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Returns the type of the retriever. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00404">404</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00160">EType</a>. +<p> +Referenced by <a class="el" href="a06337.html#l00089">NLPACS::CRetrieverInstance::init()</a>, <a class="el" href="a06337.html#l00139">NLPACS::CRetrieverInstance::initEdgeQuad()</a>, <a class="el" href="a05761.html#l00430">NLPACS::CGlobalRetriever::makeInstance()</a>, <a class="el" href="a05761.html#l00367">NLPACS::CGlobalRetriever::makeLinks()</a>, and <a class="el" href="a05761.html#l00493">NLPACS::CGlobalRetriever::retrievePosition()</a>. +<p> +<div class="fragment"><pre>00404 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp10">_Type</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_10" doxytag="NLPACS::CLocalRetriever::initFaceGrid" ></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::CLocalRetriever::initFaceGrid </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> +Inits the face grid. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l01393">1393</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00333">_FaceGrid</a>, <a class="el" href="a05930.html#l00330">_InteriorFaces</a>, <a class="el" href="a05930.html#l00327">_InteriorVertices</a>, <a class="el" href="a05694.html#l00129">NLPACS::CFaceGrid::create()</a>, <a class="el" href="a05384.html#l00215">NLMISC::CAABBox::extend()</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="a05694.html#l00187">NLPACS::CFaceGrid::CFaceGridBuild::init()</a>, <a class="el" href="a05694.html#l00196">NLPACS::CFaceGrid::CFaceGridBuild::insert()</a>, <a class="el" href="a05385.html#l00066">NLMISC::CAABBox::setCenter()</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05930.html#l00176">NLPACS::CLocalRetriever::CInteriorFace::Verts</a>. +<p> +Referenced by <a class="el" href="a05522.html#l00405">NLPACS::buildSnapping()</a>. +<p> +<div class="fragment"><pre>01394 { +01395 CFaceGrid::CFaceGridBuild fgb; +01396 fgb.init(64, 4.0f); +01397 +01398 <a class="code" href="a04558.html#a15">uint</a> i; +01399 <span class="keywordflow">for</span> (i=0; i<<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_3">_InteriorFaces</a>.size(); ++i) +01400 { +01401 <a class="code" href="a02156.html">CAABBox</a> box; +01402 CInteriorFace &f = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_3">_InteriorFaces</a>[i]; +01403 box.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1902_1">setCenter</a>(_InteriorVertices[f.Verts[0]]); +01404 box.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxExtz1902_0">extend</a>(_InteriorVertices[f.Verts[1]]); +01405 box.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxExtz1902_0">extend</a>(_InteriorVertices[f.Verts[2]]); +01406 +01407 fgb.insert(box.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_5">getMin</a>(), box.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_3">getMax</a>(), i); +01408 } +01409 +01410 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_1">_FaceGrid</a>.create(fgb); +01411 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera11" doxytag="NLPACS::CLocalRetriever::insurePosition" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool NLPACS::CLocalRetriever::insurePosition </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02793.html">ULocalPosition</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>local</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Assures a position is really inside a surface (and independent from any accuracy issue) and returns true if the position was moved. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00960">960</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a05930.html#l00341">_Loaded</a>, <a class="el" href="a05930.html#l00288">_OrderedChains</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a06605.html#l00051">NLPACS::ULocalPosition::Estimation</a>, <a class="el" href="a06334.html#l00180">NLPACS::CRetrievableSurface::getChain()</a>, <a class="el" href="a06334.html#l00178">NLPACS::CRetrievableSurface::getChains()</a>, <a class="el" href="a05540.html#l00269">NLPACS::CChain::getLeft()</a>, <a class="el" href="a05540.html#l00266">NLPACS::CChain::getSubChain()</a>, <a class="el" href="a05540.html#l00263">NLPACS::CChain::getSubChains()</a>, <a class="el" href="a05540.html#l00133">NLPACS::COrderedChain::getVertices()</a>, <a class="el" href="a05929.html#l00045">InsurePositionThreshold</a>, <a class="el" href="a05540.html#l00136">NLPACS::COrderedChain::isForward()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05622.html#l00135">nlwarning</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a06338.html#l00292">NLPACS::CRetrieverInstance::snapVector()</a>, <a class="el" href="a06677.html#l00091">NLMISC::CVector2f::sqrnorm()</a>, <a class="el" href="a06605.html#l00048">NLPACS::ULocalPosition::Surface</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a06677.html#l00052">NLMISC::CVector2f::x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>, and <a class="el" href="a06677.html#l00052">NLMISC::CVector2f::y</a>. +<p> +Referenced by <a class="el" href="a05762.html#l00295">NLPACS::CGlobalRetriever::insurePosition()</a>, and <a class="el" href="a05761.html#l00493">NLPACS::CGlobalRetriever::retrievePosition()</a>. +<p> +<div class="fragment"><pre>00961 { +00962 <span class="keywordflow">if</span> (!<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp6">_Loaded</a>) +00963 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00964 +00965 <span class="keywordflow">if</span> (local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono1">Surface</a> < 0 || local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono1">Surface</a> >= (<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size()) +00966 { +00967 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"PACS: can't insure position to inexistant surface %d"</span>, local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono1">Surface</a>); +00968 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00969 } +00970 +00971 <span class="comment">// the surface</span> +00972 <span class="keyword">const</span> <a class="code" href="a03328.html">NLPACS::CRetrievableSurface</a> &surface = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono1">Surface</a>]; +00973 +00974 <a class="code" href="a04558.html#a15">uint</a> i, j, k; +00975 CVector2f M = CVector2f(local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono0">Estimation</a>); +00976 <span class="keywordtype">bool</span> moved = <span class="keyword">false</span>; +00977 +00978 <span class="comment">// for each chain and each subchain of the surface,</span> +00979 <span class="comment">// check if point is located on the good side of the border (and far enough to avoid accuracy issues)</span> +00980 <span class="keywordflow">for</span> (i=0; i<surface.<a class="code" href="a03328.html#NLPACS_1_1CRetrievableSurfacea4">getChains</a>().size(); ++i) +00981 { +00982 <a class="code" href="a04558.html#a15">uint</a> ichain = surface.<a class="code" href="a03328.html#NLPACS_1_1CRetrievableSurfacea3">getChain</a>(i).Chain; +00983 <span class="keyword">const</span> <a class="code" href="a02333.html">NLPACS::CChain</a> &chain = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[ichain]; +00984 +00985 <span class="keywordflow">for</span> (j=0; j<chain.<a class="code" href="a02333.html#NLPACS_1_1CChaina12">getSubChains</a>().size(); ++j) +00986 { +00987 <a class="code" href="a04558.html#a15">uint</a> iochain = chain.<a class="code" href="a02333.html#NLPACS_1_1CChaina11">getSubChain</a>(j); +00988 <span class="keyword">const</span> <a class="code" href="a03027.html">NLPACS::COrderedChain</a> &ochain = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp7">_OrderedChains</a>[iochain]; +00989 +00990 <a class="code" href="a04558.html#a15">uint</a> isAtLeft = ((chain.<a class="code" href="a02333.html#NLPACS_1_1CChaina2">getLeft</a>() == local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono1">Surface</a>) ? 1 : 0); +00991 <a class="code" href="a04558.html#a15">uint</a> isForward = (ochain.<a class="code" href="a03027.html#NLPACS_1_1COrderedChaina8">isForward</a>() ? 1 : 0); +00992 <span class="keywordtype">bool</span> shouldBeUpper = !((isAtLeft ^ isForward) != 0); <span class="comment">// shouldBeAtLeft for vertical segment</span> +00993 +00994 <span class="keywordflow">for</span> (k=0; (<a class="code" href="a04558.html#a14">sint</a>)k<(<a class="code" href="a04558.html#a14">sint</a>)(ochain.<a class="code" href="a03027.html#NLPACS_1_1COrderedChaina7">getVertices</a>().size()-1); ++k) +00995 { +00996 CVector2f A = ochain[k].unpack(); +00997 CVector2f B = ochain[k+1].unpack(); +00998 CVector2f AB = B-A; +00999 +01000 <span class="keywordtype">float</span> lambda = ((M-A)*AB)/AB.sqrnorm(); +01001 +01002 <span class="keywordflow">if</span> (lambda<0.0f || lambda>1.0f) +01003 <span class="keywordflow">continue</span>; +01004 +01005 CVector2f n = (shouldBeUpper ? CVector2f(-AB.y, AB.x) : CVector2f(AB.<a class="code" href="a04223.html#a573">y</a>, -AB.<a class="code" href="a04223.html#a572">x</a>)).normed(); +01006 <span class="keywordtype">float</span> d = (M-A)*n; +01007 +01008 <span class="comment">// if point is too close of the border or on the wrong side</span> +01009 <span class="comment">// move it far enough</span> +01010 <span class="keywordflow">if</span> (d < InsurePositionThreshold && d > -<a class="code" href="a04506.html#a0">InsurePositionThreshold</a>) +01011 { +01012 M += (<a class="code" href="a04506.html#a0">InsurePositionThreshold</a>*1.1f-d)*n; +01013 moved = <span class="keyword">true</span>; +01014 } +01015 } +01016 } +01017 } +01018 +01019 <a class="code" href="a03333.html#NLPACS_1_1CRetrieverInstancez1282_1">NLPACS::CRetrieverInstance::snapVector</a>(M); +01020 +01021 local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono0">Estimation</a>.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a> = M.x; +01022 local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono0">Estimation</a>.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a> = M.y; +01023 +01024 { +01025 <span class="keywordtype">float</span> fx1024 = local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono0">Estimation</a>.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a> * 1024.0f; +01026 <span class="keywordtype">float</span> fy1024 = local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono0">Estimation</a>.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a> * 1024.0f; +01027 <a class="code" href="a04558.html#a10">sint32</a> ix1024 = (<a class="code" href="a04558.html#a10">sint32</a>)floor(fx1024); +01028 <a class="code" href="a04558.html#a10">sint32</a> iy1024 = (<a class="code" href="a04558.html#a10">sint32</a>)floor(fy1024); +01029 +01030 <a class="code" href="a04199.html#a6">nlassert</a> ((<span class="keywordtype">float</span>)ix1024 == fx1024); +01031 <a class="code" href="a04199.html#a6">nlassert</a> ((<span class="keywordtype">float</span>)iy1024 == fy1024); +01032 } +01033 +01034 <span class="keywordflow">return</span> moved; +01035 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1257_22" doxytag="NLPACS::CLocalRetriever::isLoaded" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool NLPACS::CLocalRetriever::isLoaded </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Is loaded ? +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00422">422</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00341">_Loaded</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00291">distanceToBorder()</a>, <a class="el" href="a05761.html#l01177">NLPACS::CGlobalRetriever::findCollisionChains()</a>, <a class="el" href="a05761.html#l00275">NLPACS::CGlobalRetriever::getBorders()</a>, <a class="el" href="a05762.html#l00224">NLPACS::CGlobalRetriever::getMaterial()</a>, <a class="el" href="a05761.html#l02421">NLPACS::CGlobalRetriever::getMeanHeight()</a>, <a class="el" href="a05761.html#l01159">NLPACS::CGlobalRetriever::getSurfaceById()</a>, <a class="el" href="a06337.html#l00089">NLPACS::CRetrieverInstance::init()</a>, <a class="el" href="a05762.html#l00248">NLPACS::CGlobalRetriever::isWaterPosition()</a>, <a class="el" href="a05761.html#l00493">NLPACS::CGlobalRetriever::retrievePosition()</a>, <a class="el" href="a05761.html#l01392">NLPACS::CGlobalRetriever::testCollisionWithCollisionChains()</a>, and <a class="el" href="a05761.html#l01649">NLPACS::CGlobalRetriever::testMovementWithCollisionChains()</a>. +<p> +<div class="fragment"><pre>00422 { <span class="keywordflow">return</span> <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp6">_Loaded</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera12" doxytag="NLPACS::CLocalRetriever::replaceChain" ></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::CLocalRetriever::replaceChain </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname" nowrap> <em>chainId</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const std::vector< <a class="el" href="a02788.html">CChainReplacement</a> > & </td> + <td class="mdname" nowrap> <em>replacement</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l01973">1973</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00304">_BorderChains</a>, <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a05930.html#l00289">_FullOrderedChains</a>, <a class="el" href="a05930.html#l00288">_OrderedChains</a>, <a class="el" href="a05540.html#l00226">NLPACS::CChain::_StartTip</a>, <a class="el" href="a05540.html#l00227">NLPACS::CChain::_StopTip</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a05646.html#l01013">border</a>, <a class="el" href="a06334.html#l00081">NLPACS::CRetrievableSurface::CSurfaceLink::Chain</a>, <a class="el" href="a05930.html#l00598">FreeOChains</a>, <a class="el" href="a05539.html#l00199">NLPACS::CChain::make()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05622.html#l00154">nlerror</a>, <a class="el" href="a05622.html#l00135">nlwarning</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a06334.html#l00084">NLPACS::CRetrievableSurface::CSurfaceLink::Surface</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00098">uint16</a>, and <a class="el" href="a05981.html#l00100">uint32</a>. +<p> +<div class="fragment"><pre>01974 { +01975 <span class="comment">// free subchains</span> +01976 <a class="code" href="a04558.html#a15">uint</a> i, j; +01977 <span class="keywordflow">for</span> (i=0; i<<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chainId]._SubChains.size(); ++i) +01978 { +01979 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrievero0">FreeOChains</a>.push_back(_Chains[chainId]._SubChains[i]); +01980 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp7">_OrderedChains</a>[_Chains[chainId]._SubChains[i]] = COrderedChain(); +01981 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp5">_FullOrderedChains</a>[_Chains[chainId]._SubChains[i]] = COrderedChain3f(); +01982 } +01983 +01984 <span class="comment">// create new chains in replacement of this chain</span> +01985 +01986 <span class="keywordflow">for</span> (i=0; i<replacement.size(); ++i) +01987 { +01988 vector<CVector> vertices = replacement[i].Vertices; +01989 <a class="code" href="a04558.html#a14">sint</a> left = replacement[i].Left; +01990 <a class="code" href="a04558.html#a14">sint</a> right = replacement[i].Right; +01991 +01992 <span class="keywordflow">if</span> (CChain::isBorderChainId(right)) +01993 { +01994 <span class="comment">// check border already exists for this particular chain</span> +01995 <a class="code" href="a04558.html#a10">sint32</a> <a class="code" href="a04223.html#a635">border</a> = CChain::convertBorderChainId(right); +01996 +01997 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a635">border</a> < (<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp2">_BorderChains</a>.size() && (chainId != <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp2">_BorderChains</a>[<a class="code" href="a04223.html#a635">border</a>] || chainId != replacement[i].Chain)) +01998 { +01999 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"replaceChain(): replacement of a border is forced whereas this border is already used and not replaced!"</span>); +02000 } +02001 +02002 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a635">border</a> >= (<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp2">_BorderChains</a>.size()) +02003 { +02004 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a635">border</a> > (<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp2">_BorderChains</a>.size()) +02005 { +02006 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"replaceChain(): _BorderChains size increased of more than 1 step, holes may result!"</span>); +02007 } +02008 +02009 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp2">_BorderChains</a>.resize(border+1, 0xffff); +02010 } +02011 +02012 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp2">_BorderChains</a>[<a class="code" href="a04223.html#a635">border</a>] = replacement[i].Chain; +02013 } +02014 +02015 <a class="code" href="a04199.html#a6">nlassert</a>(vertices.size() >= 2); +02016 +02017 <span class="comment">// Remove doubled vertices due to CVector2s snapping</span> +02018 vector<CVector2s> converts; +02019 +02020 <span class="keywordflow">for</span> (j=0; j<vertices.size(); ++j) +02021 converts.push_back(CVector2s(vertices[j])); +02022 +02023 vector<CVector2s>::iterator next2s = converts.begin(), it2s, prev2s; +02024 prev2s = next2s; ++next2s; +02025 it2s = next2s; ++next2s; +02026 +02027 vector<CVector>::iterator it3f = vertices.begin(); +02028 CVector prev3f = *it3f; +02029 ++it3f; +02030 +02031 +02032 <span class="keywordflow">for</span> (; it2s != converts.end() && next2s != converts.end(); ) +02033 { +02034 <span class="comment">// if the next point is equal to the previous</span> +02035 <span class="keywordflow">if</span> (*it2s == *prev2s || *it2s == *next2s) +02036 { +02037 <span class="comment">// then remove the next point</span> +02038 it2s = converts.erase(it2s); +02039 it3f = vertices.erase(it3f); +02040 +02041 prev2s = it2s; +02042 --prev2s; +02043 next2s = it2s; +02044 ++next2s; +02045 } +02046 <span class="keywordflow">else</span> +02047 { +02048 <span class="comment">// else remember the next point, and step to the next...</span> +02049 ++prev2s; +02050 ++it2s; +02051 ++next2s; +02052 ++it3f; +02053 prev3f = *it3f; +02054 } +02055 } +02056 +02057 <a class="code" href="a04199.html#a6">nlassert</a>(vertices.size() >= 2); +02058 +02059 <a class="code" href="a04558.html#a10">sint32</a> newId = replacement[i].Chain; +02060 <span class="keywordflow">if</span> (newId >= (<a class="code" href="a04558.html#a14">sint</a>)_Chains.size()) +02061 _Chains.resize(newId+1); +02062 +02063 <span class="comment">//CChain &nchain = _Chains[newId];</span> +02064 +02065 <span class="keywordflow">if</span> (left>(<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size()) +02066 <a class="code" href="a04199.html#a3">nlerror</a> (<span class="stringliteral">"left surface id MUST be id<%d (id=%d)"</span>, <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size(), left); +02067 <span class="keywordflow">if</span> (right>(<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size()) +02068 <a class="code" href="a04199.html#a3">nlerror</a> (<span class="stringliteral">"right surface id MUST be id<%d (id=%d)"</span>, <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size(), right); +02069 +02070 <span class="comment">// checks if we can build the chain.</span> +02071 <span class="keywordflow">if</span> (newId > 65535) +02072 <a class="code" href="a04199.html#a3">nlerror</a>(<span class="stringliteral">"in NLPACS::CLocalRetriever::addChain(): reached the maximum number of chains"</span>); +02073 +02074 <span class="comment">//CRetrievableSurface *leftSurface = (left>=0) ? &(_Surfaces[left]) : NULL;</span> +02075 <span class="comment">//CRetrievableSurface *rightSurface = (right>=0) ? &(_Surfaces[right]) : NULL;</span> +02076 +02077 CChain &chain = _Chains[newId]; +02078 +02079 chain._StartTip = 0xffff; +02080 chain._StopTip = 0xffff; +02081 +02082 <span class="comment">// make the chain and its subchains.</span> +02083 chain.make(vertices, left, right, _OrderedChains, (<a class="code" href="a04558.html#a9">uint16</a>)newId, _FullOrderedChains, FreeOChains); +02084 } +02085 +02086 <span class="keywordflow">for</span> (i=0; i<<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size(); ++i) +02087 { +02088 <span class="comment">// remove old chain and replace by new chains in surface links</span> +02089 <span class="keywordflow">for</span> (j=0; j<<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[i]._Chains.size(); ++j) +02090 { +02091 <span class="keywordflow">if</span> (_Surfaces[i]._Chains[j].Chain == (<a class="code" href="a04558.html#a14">sint</a>)chainId) +02092 { +02093 _Surfaces[i]._Chains.erase(_Surfaces[i]._Chains.begin()+j); +02094 +02095 <a class="code" href="a04558.html#a15">uint</a> k; +02096 <span class="keywordflow">for</span> (k=0; k<replacement.size(); ++k) +02097 { +02098 CRetrievableSurface::CSurfaceLink link; +02099 +02100 link.Chain = replacement[k].Chain; +02101 link.Surface = (replacement[k].Left == (<a class="code" href="a04558.html#a14">sint</a>)i ? replacement[k].Right : replacement[k].Left); +02102 _Surfaces[i]._Chains.push_back(link); +02103 } +02104 +02105 <span class="keywordflow">break</span>; +02106 } +02107 } +02108 +02109 <span class="comment">// remove old chain and replace by new chains in surface loops</span> +02110 <span class="keywordflow">for</span> (j=0; j<_Surfaces[i]._Loops.size(); ++j) +02111 { +02112 <a class="code" href="a04558.html#a15">uint</a> k; +02113 +02114 <span class="keywordflow">for</span> (k=0; k<_Surfaces[i]._Loops[j].size(); ++k) +02115 { +02116 <span class="keywordflow">if</span> (_Surfaces[i]._Loops[j][k] == chainId) +02117 { +02118 _Surfaces[i]._Loops[j].erase(_Surfaces[i]._Loops[j].begin()+k); +02119 <a class="code" href="a04558.html#a15">uint</a> m; +02120 +02121 <span class="keywordflow">for</span> (m=0; m<replacement.size(); ++m) +02122 _Surfaces[i]._Loops[j].insert(_Surfaces[i]._Loops[j].begin()+k+m, replacement[m].Chain); +02123 +02124 <span class="keywordflow">break</span>; +02125 } +02126 } +02127 } +02128 } +02129 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera13" doxytag="NLPACS::CLocalRetriever::retrieveAccuratePosition" ></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::CLocalRetriever::retrieveAccuratePosition </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a03662.html">CVector2s</a> </td> + <td class="mdname" nowrap> <em>estimated</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 class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>bool & </td> + <td class="mdname" nowrap> <em>onBorder</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> +Retrieves a position inside the retriever (from the local position), returns true if the position is close to a border. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l01238">1238</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00316">_ChainQuad</a>, <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a05930.html#l00341">_Loaded</a>, <a class="el" href="a05930.html#l00288">_OrderedChains</a>, <a class="el" href="a05583.html#l00354">NLPACS::CCollisionSurfaceTemp::decSurface()</a>, <a class="el" href="a05583.html#l00287">NLPACS::CCollisionSurfaceTemp::EdgeChainEntries</a>, <a class="el" href="a05540.html#l00154">NLPACS::COrderedChain::getMax()</a>, <a class="el" href="a05385.html#l00087">NLMISC::CAABBox::getMax()</a>, <a class="el" href="a05540.html#l00151">NLPACS::COrderedChain::getMin()</a>, <a class="el" href="a05385.html#l00086">NLMISC::CAABBox::getMin()</a>, <a class="el" href="a05540.html#l00139">NLPACS::COrderedChain::getParentId()</a>, <a class="el" href="a05540.html#l00133">NLPACS::COrderedChain::getVertices()</a>, <a class="el" href="a05583.html#l00338">NLPACS::CCollisionSurfaceTemp::incSurface()</a>, <a class="el" href="a05540.html#l00136">NLPACS::COrderedChain::isForward()</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a05583.html#l00294">NLPACS::CCollisionSurfaceTemp::PossibleSurfaces</a>, <a class="el" href="a05541.html#l00289">NLPACS::CChainQuad::selectEdges()</a>, <a class="el" href="a05385.html#l00071">NLMISC::CAABBox::setMinMax()</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a06679.html#l00177">NLPACS::CVector2s::unpack3f()</a>, <a class="el" href="a06679.html#l00099">NLPACS::CVector2s::x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a06679.html#l00099">NLPACS::CVector2s::y</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>. +<p> +<div class="fragment"><pre>01239 { +01240 <span class="keywordflow">if</span> (!<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp6">_Loaded</a>) +01241 <span class="keywordflow">return</span>; +01242 +01243 <a class="code" href="a02156.html">CAABBox</a> box; +01244 CVector estimated = estim.unpack3f(); +01245 <span class="keyword">const</span> <span class="keywordtype">double</span> BorderThreshold = 2.0e-2f; +01246 box.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1902_3">setMinMax</a>(CVector(estimated.x-(<span class="keywordtype">float</span>)BorderThreshold, <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp1">_BBox</a>.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_5">getMin</a>().y, 0.0f), +01247 CVector(estimated.x+(<span class="keywordtype">float</span>)BorderThreshold, <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp1">_BBox</a>.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_3">getMax</a>().y, 0.0f)); +01248 <a class="code" href="a04558.html#a15">uint</a> numEdges = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp3">_ChainQuad</a>.selectEdges(box, cst); +01249 +01250 <a class="code" href="a04558.html#a15">uint</a> ochain, i; +01251 +01252 onBorder = <span class="keyword">false</span>; +01253 +01254 cst.PossibleSurfaces.clear(); +01255 +01256 <span class="comment">// WARNING!!</span> +01257 <span class="comment">// cst.SurfaceLUT is assumed to be 0 filled !!</span> +01258 +01259 <span class="comment">//nldebug("estim=(%d,%d)", estim.x, estim.y);</span> +01260 +01261 <span class="comment">// for each ordered chain, checks if the estimated position is between the min and max.</span> +01262 <span class="keywordflow">for</span> (i=0; i<numEdges; ++i) +01263 { +01264 ochain = cst.EdgeChainEntries[i].OChainId; +01265 +01266 <span class="keyword">const</span> COrderedChain &sub = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp7">_OrderedChains</a>[ochain]; +01267 <span class="keyword">const</span> CVector2s &<a class="code" href="a04061.html#a0">min</a> = sub.getMin(), +01268 &max = sub.getMax(); +01269 +01270 <span class="comment">// checks the position against the min and max of the chain</span> +01271 <span class="keywordflow">if</span> (estim.x < <a class="code" href="a04061.html#a0">min</a>.x || estim.x > max.x) +01272 <span class="keywordflow">continue</span>; +01273 +01274 <span class="keywordtype">bool</span> isUpper; +01275 <span class="comment">//bool isOnBorder = false;</span> +01276 +01277 <a class="code" href="a04558.html#a10">sint32</a> left = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[sub.getParentId()].getLeft(), +01278 right = _Chains[sub.getParentId()].getRight(); +01279 +01280 <span class="keywordflow">if</span> (estim.y < <a class="code" href="a04061.html#a0">min</a>.y) +01281 { +01282 <span class="keywordflow">if</span> (estim.x == max.x) +01283 <span class="keywordflow">continue</span>; +01284 isUpper = <span class="keyword">false</span>; +01285 } +01286 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (estim.y > max.y) +01287 { +01288 <span class="keywordflow">if</span> (estim.x == max.x) +01289 <span class="keywordflow">continue</span>; +01290 isUpper = <span class="keyword">true</span>; +01291 } +01292 <span class="keywordflow">else</span> +01293 { +01294 <span class="keyword">const</span> vector<CVector2s> &vertices = sub.getVertices(); +01295 <a class="code" href="a04558.html#a15">uint</a> start = 0, stop = vertices.size()-1; +01296 +01297 <span class="comment">// then finds the smallest segment of the chain that includes the estimated position.</span> +01298 <span class="keywordflow">while</span> (stop-start > 1) +01299 { +01300 <a class="code" href="a04558.html#a15">uint</a> mid = (start+stop)/2; +01301 +01302 <span class="keywordflow">if</span> (vertices[mid].x > estim.x) +01303 stop = mid; +01304 <span class="keywordflow">else</span> +01305 start = mid; +01306 } +01307 +01308 <span class="comment">// if a vertical edge</span> +01309 <span class="keywordflow">if</span> (vertices[start].x == vertices[stop].x) +01310 { +01311 <span class="comment">// look for maximal bounds</span> +01312 <span class="keywordflow">while</span> (start > 0 && vertices[start].x == vertices[start-1].x) +01313 --start; +01314 +01315 <span class="keywordflow">while</span> (stop < vertices.size()-1 && vertices[stop].x == vertices[stop+1].x) +01316 ++stop; +01317 +01318 <span class="comment">// if upper or lower the bounds, do nothing</span> +01319 <span class="keywordflow">if</span> (estim.y > vertices[start].y && estim.y > vertices[stop].y || +01320 estim.y < vertices[start].y && estim.y < vertices[stop].y) +01321 <span class="keywordflow">continue</span>; +01322 +01323 onBorder = <span class="keyword">true</span>; +01324 <span class="keywordflow">continue</span>; +01325 } +01326 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (vertices[stop].x == estim.x) +01327 { +01328 <span class="comment">// if (yes)</span> +01329 <span class="keywordflow">continue</span>; +01330 } +01331 +01332 <span class="comment">// and then checks if the estimated position is up or down the chain.</span> +01333 +01334 <span class="comment">// first trivial case (up both tips)</span> +01335 <span class="keywordflow">if</span> (estim.y > vertices[start].y && estim.y > vertices[stop].y) +01336 { +01337 isUpper = <span class="keyword">true</span>; +01338 } +01339 <span class="comment">// second trivial case (down both tips)</span> +01340 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (estim.y < vertices[start].y && estim.y < vertices[stop].y) +01341 { +01342 isUpper = <span class="keyword">false</span>; +01343 } +01344 <span class="comment">// full test...</span> +01345 <span class="keywordflow">else</span> +01346 { +01347 <span class="keyword">const</span> CVector2s &vstart = vertices[start], +01348 &vstop = vertices[stop]; +01349 +01350 <span class="comment">// this test is somewhat more accurate</span> +01351 <span class="comment">// no division performed</span> +01352 <a class="code" href="a04558.html#a10">sint32</a> det = (estim.y-vstart.y)*(vstop.x-vstart.x) - (estim.x-vstart.x)*(vstop.y-vstart.y); +01353 +01354 isUpper = (det > 0); +01355 +01356 <span class="keywordflow">if</span> (det == 0) +01357 onBorder = <span class="keyword">true</span>; +01358 } +01359 } +01360 +01361 <span class="comment">// Depending on the chain is forward, up the position, increase/decrease the surface table...</span> +01362 <span class="keywordflow">if</span> (sub.isForward()) +01363 { +01364 <span class="keywordflow">if</span> (isUpper) +01365 { +01366 cst.incSurface(left); +01367 cst.decSurface(right); +01368 } +01369 <span class="keywordflow">else</span> +01370 { +01371 cst.decSurface(left); +01372 cst.incSurface(right); +01373 } +01374 } +01375 <span class="keywordflow">else</span> +01376 { +01377 <span class="keywordflow">if</span> (isUpper) +01378 { +01379 cst.decSurface(left); +01380 cst.incSurface(right); +01381 } +01382 <span class="keywordflow">else</span> +01383 { +01384 cst.incSurface(left); +01385 cst.decSurface(right); +01386 } +01387 } +01388 } +01389 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera14" doxytag="NLPACS::CLocalRetriever::retrievePosition" ></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::CLocalRetriever::retrievePosition </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a03128.html">NLMISC::CVector</a> </td> + <td class="mdname" nowrap> <em>estimated</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> +Retrieves a position inside the retriever (from the local position), returns true if the position is close to a border. +<p> + +<p> +<dl compact><dt><b><a class="el" href="todo.html#_todo000010">Todo:</a></b></dt><dd>trivial up/down check using bbox.</dd></dl> + +<p> +Definition at line <a class="el" href="a05929.html#l01064">1064</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00316">_ChainQuad</a>, <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a05930.html#l00341">_Loaded</a>, <a class="el" href="a05930.html#l00288">_OrderedChains</a>, <a class="el" href="a05583.html#l00354">NLPACS::CCollisionSurfaceTemp::decSurface()</a>, <a class="el" href="a05583.html#l00287">NLPACS::CCollisionSurfaceTemp::EdgeChainEntries</a>, <a class="el" href="a05540.html#l00154">NLPACS::COrderedChain::getMax()</a>, <a class="el" href="a05385.html#l00087">NLMISC::CAABBox::getMax()</a>, <a class="el" href="a05540.html#l00151">NLPACS::COrderedChain::getMin()</a>, <a class="el" href="a05385.html#l00086">NLMISC::CAABBox::getMin()</a>, <a class="el" href="a05540.html#l00139">NLPACS::COrderedChain::getParentId()</a>, <a class="el" href="a05540.html#l00133">NLPACS::COrderedChain::getVertices()</a>, <a class="el" href="a05583.html#l00338">NLPACS::CCollisionSurfaceTemp::incSurface()</a>, <a class="el" href="a05540.html#l00136">NLPACS::COrderedChain::isForward()</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a05583.html#l00294">NLPACS::CCollisionSurfaceTemp::PossibleSurfaces</a>, <a class="el" href="a05541.html#l00289">NLPACS::CChainQuad::selectEdges()</a>, <a class="el" href="a05385.html#l00071">NLMISC::CAABBox::setMinMax()</a>, <a class="el" href="a05981.html#l00097">sint16</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a05583.html#l00292">NLPACS::CCollisionSurfaceTemp::SurfaceLUT</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a06679.html#l00038">NLPACS::Vector2sAccuracy</a>, <a class="el" href="a06679.html#l00099">NLPACS::CVector2s::x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a06679.html#l00099">NLPACS::CVector2s::y</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>. +<p> +Referenced by <a class="el" href="a06337.html#l00387">NLPACS::CRetrieverInstance::retrievePosition()</a>, and <a class="el" href="a05929.html#l01038">testPosition()</a>. +<p> +<div class="fragment"><pre>01065 { +01066 <span class="keywordflow">if</span> (!<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp6">_Loaded</a>) +01067 <span class="keywordflow">return</span>; +01068 +01069 <a class="code" href="a02156.html">CAABBox</a> box; +01070 <span class="keyword">const</span> <span class="keywordtype">double</span> BorderThreshold = 2.0e-2f; +01071 box.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1902_3">setMinMax</a>(CVector(estimated.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>-(<span class="keywordtype">float</span>)BorderThreshold, <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp1">_BBox</a>.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_5">getMin</a>().y, 0.0f), CVector(estimated.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>+(<span class="keywordtype">float</span>)BorderThreshold, <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp1">_BBox</a>.<a class="code" href="a02156.html#NLMISC_1_1CAABBoxz1904_3">getMax</a>().y, 0.0f)); +01072 <a class="code" href="a04558.html#a15">uint</a> numEdges = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp3">_ChainQuad</a>.selectEdges(box, cst); +01073 +01074 <a class="code" href="a04558.html#a15">uint</a> ochain, i; +01075 CVector2s estim = CVector2s(estimated); +01076 +01077 cst.PossibleSurfaces.clear(); +01078 +01079 <span class="comment">// WARNING!!</span> +01080 <span class="comment">// cst.SurfaceLUT is assumed to be 0 filled !!</span> +01081 +01082 <span class="comment">//nldebug("estim=(%d,%d)", estim.x, estim.y);</span> +01083 +01084 <span class="comment">// for each ordered chain, checks if the estimated position is between the min and max.</span> +01085 <span class="keywordflow">for</span> (i=0; i<numEdges; ++i) +01086 { +01087 ochain = cst.EdgeChainEntries[i].OChainId; +01088 +01089 <span class="keyword">const</span> COrderedChain &sub = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp7">_OrderedChains</a>[ochain]; +01090 <span class="keyword">const</span> CVector2s &<a class="code" href="a04061.html#a0">min</a> = sub.getMin(), +01091 &max = sub.getMax(); +01092 +01093 <span class="comment">// checks the position against the min and max of the chain</span> +01094 <span class="keywordflow">if</span> (estim.x < <a class="code" href="a04061.html#a0">min</a>.x || estim.x > max.x) +01095 <span class="keywordflow">continue</span>; +01096 +01097 <span class="keywordtype">bool</span> isUpper; +01098 <span class="keywordtype">bool</span> isOnBorder = <span class="keyword">false</span>; +01099 +01100 <a class="code" href="a04558.html#a10">sint32</a> left = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[sub.getParentId()].getLeft(), +01101 right = _Chains[sub.getParentId()].getRight(); +01102 +01103 <span class="keywordflow">if</span> (estim.y < <a class="code" href="a04061.html#a0">min</a>.y) +01104 { +01105 <span class="keywordflow">if</span> (estim.x == max.x) +01106 <span class="keywordflow">continue</span>; +01107 isUpper = <span class="keyword">false</span>; +01108 <span class="comment">// nlinfo("Box: min(%d,%d) max(%d,%d) forward=%d left=%d right=%d upper=false", min.x, min.y, max.x, max.y, sub.isForward(), left, right);</span> +01109 } +01110 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (estim.y > max.y) +01111 { +01112 <span class="keywordflow">if</span> (estim.x == max.x) +01113 <span class="keywordflow">continue</span>; +01114 isUpper = <span class="keyword">true</span>; +01115 <span class="comment">// nlinfo("Box: min(%d,%d) max(%d,%d) forward=%d left=%d right=%d upper=true", min.x, min.y, max.x, max.y, sub.isForward(), left, right);</span> +01116 } +01117 <span class="keywordflow">else</span> +01118 { +01119 <span class="keyword">const</span> vector<CVector2s> &vertices = sub.getVertices(); +01120 <a class="code" href="a04558.html#a15">uint</a> start = 0, stop = vertices.size()-1; +01121 +01123 +01124 <span class="comment">// then finds the smallest segment of the chain that includes the estimated position.</span> +01125 <span class="keywordflow">while</span> (stop-start > 1) +01126 { +01127 <a class="code" href="a04558.html#a15">uint</a> mid = (start+stop)/2; +01128 +01129 <span class="keywordflow">if</span> (vertices[mid].x > estim.x) +01130 stop = mid; +01131 <span class="keywordflow">else</span> +01132 start = mid; +01133 } +01134 +01135 <span class="comment">// if a vertical edge</span> +01136 <span class="keywordflow">if</span> (vertices[start].x == vertices[stop].x) +01137 { +01138 <span class="comment">// look for maximal bounds</span> +01139 <span class="keywordflow">while</span> (start > 0 && vertices[start].x == vertices[start-1].x) +01140 --start; +01141 +01142 <span class="keywordflow">while</span> (stop < vertices.size()-1 && vertices[stop].x == vertices[stop+1].x) +01143 ++stop; +01144 +01145 <span class="comment">// if upper or lower the bounds, do nothing</span> +01146 <span class="keywordflow">if</span> (estim.y > vertices[start].y && estim.y > vertices[stop].y || +01147 estim.y < vertices[start].y && estim.y < vertices[stop].y) +01148 <span class="keywordflow">continue</span>; +01149 +01150 isOnBorder = <span class="keyword">true</span>; +01151 <span class="keywordflow">if</span> (left >= 0) +01152 { +01153 cst.SurfaceLUT[left].FoundCloseEdge = <span class="keyword">true</span>; +01154 cst.SurfaceLUT[left].OnVerticalEdge = <span class="keyword">true</span>; +01155 } +01156 <span class="keywordflow">if</span> (right >= 0) +01157 { +01158 cst.SurfaceLUT[right].FoundCloseEdge = <span class="keyword">true</span>; +01159 cst.SurfaceLUT[right].OnVerticalEdge = <span class="keyword">true</span>; +01160 } +01161 <span class="comment">// nlinfo("Edge: start(%d,%d) stop(%d,%d) forward=%d left=%d right=%d border=true", vertices[start].x, vertices[start].y, vertices[stop].x, vertices[stop].y, sub.isForward(), left, right);</span> +01162 <span class="keywordflow">continue</span>; +01163 } +01164 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (vertices[stop].x == estim.x) +01165 { +01166 <span class="comment">// if (yes)</span> +01167 <span class="keywordflow">continue</span>; +01168 } +01169 +01170 <span class="comment">// and then checks if the estimated position is up or down the chain.</span> +01171 +01172 <span class="comment">// first trivial case (up both tips)</span> +01173 <span class="keywordflow">if</span> (estim.y > vertices[start].y && estim.y > vertices[stop].y) +01174 { +01175 isUpper = <span class="keyword">true</span>; +01176 <span class="comment">// nlinfo("Edge: start(%d,%d) stop(%d,%d) forward=%d left=%d right=%d upper=true", vertices[start].x, vertices[start].y, vertices[stop].x, vertices[stop].y, sub.isForward(), left, right);</span> +01177 } +01178 <span class="comment">// second trivial case (down both tips)</span> +01179 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (estim.y < vertices[start].y && estim.y < vertices[stop].y) +01180 { +01181 isUpper = <span class="keyword">false</span>; +01182 <span class="comment">// nlinfo("Edge: start(%d,%d) stop(%d,%d) forward=%d left=%d right=%d upper=false", vertices[start].x, vertices[start].y, vertices[stop].x, vertices[stop].y, sub.isForward(), left, right);</span> +01183 } +01184 <span class="comment">// full test...</span> +01185 <span class="keywordflow">else</span> +01186 { +01187 <span class="keyword">const</span> CVector2s &vstart = vertices[start], +01188 &vstop = vertices[stop]; +01189 +01190 <a class="code" href="a04558.html#a8">sint16</a> intersect = vstart.y + (vstop.y-vstart.y)*(estim.x-vstart.x)/(vstop.x-vstart.x); +01191 +01192 isUpper = estim.y > intersect; +01193 isOnBorder = (fabs(estim.y - intersect)<BorderThreshold*<a class="code" href="a05380.html#a15">Vector2sAccuracy</a>); +01194 <span class="comment">// nlinfo("Edge: start(%d,%d) stop(%d,%d) forward=%d left=%d right=%d upper=%s border=%s", vertices[start].x, vertices[start].y, vertices[stop].x, vertices[stop].y, sub.isForward(), left, right, isUpper ? "true":"false", isOnBorder ? "true":"false");</span> +01195 } +01196 } +01197 +01198 <span class="keywordflow">if</span> (isOnBorder) +01199 { +01200 cst.incSurface(left); +01201 cst.incSurface(right); +01202 <span class="keywordflow">if</span> (left >= 0) cst.SurfaceLUT[left].FoundCloseEdge = <span class="keyword">true</span>; +01203 <span class="keywordflow">if</span> (right >= 0) cst.SurfaceLUT[right].FoundCloseEdge = <span class="keyword">true</span>; +01204 <span class="keywordflow">continue</span>; +01205 } +01206 +01207 <span class="comment">// Depending on the chain is forward, up the position, increase/decrease the surface table...</span> +01208 <span class="keywordflow">if</span> (sub.isForward()) +01209 { +01210 <span class="keywordflow">if</span> (isUpper) +01211 { +01212 cst.incSurface(left); +01213 cst.decSurface(right); +01214 } +01215 <span class="keywordflow">else</span> +01216 { +01217 cst.decSurface(left); +01218 cst.incSurface(right); +01219 } +01220 } +01221 <span class="keywordflow">else</span> +01222 { +01223 <span class="keywordflow">if</span> (isUpper) +01224 { +01225 cst.decSurface(left); +01226 cst.incSurface(right); +01227 } +01228 <span class="keywordflow">else</span> +01229 { +01230 cst.incSurface(left); +01231 cst.decSurface(right); +01232 } +01233 } +01234 } +01235 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_11" doxytag="NLPACS::CLocalRetriever::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::CLocalRetriever::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> +Serialises the <a class="el" href="a02787.html">CLocalRetriever</a>. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00895">895</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00301">__Tips</a>, <a class="el" href="a05930.html#l00304">_BorderChains</a>, <a class="el" href="a05930.html#l00316">_ChainQuad</a>, <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a05930.html#l00324">_ExteriorMesh</a>, <a class="el" href="a05930.html#l00333">_FaceGrid</a>, <a class="el" href="a05930.html#l00289">_FullOrderedChains</a>, <a class="el" href="a05930.html#l00330">_InteriorFaces</a>, <a class="el" href="a05930.html#l00327">_InteriorVertices</a>, <a class="el" href="a05930.html#l00341">_Loaded</a>, <a class="el" href="a05930.html#l00288">_OrderedChains</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a05930.html#l00307">_Topologies</a>, <a class="el" href="a05930.html#l00345">LoadCheckFlag</a>, <a class="el" href="a05380.html#a31a8">NLPACS::NumMaxCreatureModels</a>, <a class="el" href="a06462.html#l00232">NLMISC::IStream::serial()</a>, <a class="el" href="a06462.html#l00324">NLMISC::IStream::serialCont()</a>, <a class="el" href="a06462.html#l00261">NLMISC::IStream::serialEnum()</a>, <a class="el" href="a06461.html#l00266">NLMISC::IStream::serialVersion()</a>, <a class="el" href="a05981.html#l00104">sint</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +Referenced by <a class="el" href="a06336.html#l00094">NLPACS::CRetrieverBank::addRetriever()</a>. +<p> +<div class="fragment"><pre>00896 { +00897 <span class="comment">/*</span> +00898 <span class="comment"> Version 0:</span> +00899 <span class="comment"> - base version (with collision info).</span> +00900 <span class="comment"> Version 1:</span> +00901 <span class="comment"> - interior vertices and faces, for interior ground snapping</span> +00902 <span class="comment"> Version 2:</span> +00903 <span class="comment"> - face grid added.</span> +00904 <span class="comment"> Version 3:</span> +00905 <span class="comment"> - identifier added.</span> +00906 <span class="comment"> Version 4:</span> +00907 <span class="comment"> - topologies no more in stream (obsolete)</span> +00908 <span class="comment"> */</span> +00909 <a class="code" href="a04558.html#a14">sint</a> ver= f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2035_8">serialVersion</a>(4); +00910 +00911 <span class="keywordflow">if</span> (ver < 4) +00912 <span class="keywordflow">throw</span> EOlderStream(); +00913 +00914 <a class="code" href="a04558.html#a15">uint</a> i; +00915 f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2033_9">serialCont</a>(_Chains); +00916 f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2033_9">serialCont</a>(_OrderedChains); +00917 f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2033_9">serialCont</a>(_FullOrderedChains); +00918 f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2033_9">serialCont</a>(_Surfaces); +00919 f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2033_9">serialCont</a>(__Tips); +00920 f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2033_9">serialCont</a>(_BorderChains); +00921 <span class="keywordflow">if</span> (ver < 4) +00922 { +00923 <span class="keywordflow">for</span> (i=0; i<<a class="code" href="a05380.html#a31a8">NumMaxCreatureModels</a>; ++i) +00924 f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2033_9">serialCont</a>(_Topologies[i]); +00925 } +00926 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(_ChainQuad); +00927 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(_BBox); +00928 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama7">serialEnum</a>(_Type); +00929 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(_ExteriorMesh); +00930 +00931 <span class="comment">// a fix for old versions (with wrong _Type value)</span> +00932 <span class="keywordflow">if</span> (<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp10">_Type</a> != CLocalRetriever::Interior) <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp10">_Type</a> = CLocalRetriever::Landscape; +00933 +00934 <span class="keywordflow">if</span> (ver >= 1) +00935 { +00936 f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2033_9">serialCont</a>(_InteriorVertices); +00937 f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2033_9">serialCont</a>(_InteriorFaces); +00938 +00939 } +00940 <span class="keywordflow">if</span> (ver >= 2) +00941 { +00942 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(_FaceGrid); +00943 } +00944 <span class="keywordflow">if</span> (ver >= 3) +00945 { +00946 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(_Id); +00947 } +00948 +00949 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp6">_Loaded</a> = <span class="keyword">true</span>; +00950 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrievero1">LoadCheckFlag</a> = <span class="keyword">false</span>; +00951 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_12" doxytag="NLPACS::CLocalRetriever::setBBox" ></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::CLocalRetriever::setBBox </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="mdname1" valign="top" nowrap> <em>bbox</em> </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> +Sets the bbox of the retriever. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00486">486</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05522.html#l00627">NLPACS::computeRetriever()</a>. +<p> +<div class="fragment"><pre>00486 { <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp1">_BBox</a> = bbox; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_13" doxytag="NLPACS::CLocalRetriever::setExteriorMesh" ></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::CLocalRetriever::setExteriorMesh </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a02492.html">CExteriorMesh</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>em</em> </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> +Sets the exterior mesh. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00483">483</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00324">_ExteriorMesh</a>. +<p> +Referenced by <a class="el" href="a05522.html#l00627">NLPACS::computeRetriever()</a>, and <a class="el" href="a05522.html#l00524">NLPACS::linkExteriorToInterior()</a>. +<p> +<div class="fragment"><pre>00483 { <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_0">_ExteriorMesh</a> = em; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_14" doxytag="NLPACS::CLocalRetriever::setFullOrderedChains" ></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::CLocalRetriever::setFullOrderedChains </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const std::vector< <a class="el" href="a03028.html">COrderedChain3f</a> > & </td> + <td class="mdname1" valign="top" nowrap> <em>foc</em> </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> +Adds a chain to the local retriever, using the vertices of the chain, the left and right surfaces id and the edge on which the chain is stuck +<p> +Definition at line <a class="el" href="a05930.html#l00532">532</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05930.html#l00289">_FullOrderedChains</a>. +<p> +<div class="fragment"><pre>00532 { <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp5">_FullOrderedChains</a> = foc; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_15" doxytag="NLPACS::CLocalRetriever::setIdentifier" ></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::CLocalRetriever::setIdentifier </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const std::string & </td> + <td class="mdname1" valign="top" nowrap> <em>id</em> </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> +Returns the identifier of the retriever. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00496">496</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +<div class="fragment"><pre>00496 { <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_2">_Id</a> = <span class="keywordtype">id</span>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_16" doxytag="NLPACS::CLocalRetriever::setType" ></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::CLocalRetriever::setType </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverw0">EType</a> </td> + <td class="mdname1" valign="top" nowrap> <em>type</em> </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> +Set the type of the retriever (see EType). +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00480">480</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +References <a class="el" href="a05646.html#l00244">type</a>. +<p> +Referenced by <a class="el" href="a05522.html#l00627">NLPACS::computeRetriever()</a>. +<p> +<div class="fragment"><pre>00480 { <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp10">_Type</a> = <a class="code" href="a04223.html#a581">type</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera15" doxytag="NLPACS::CLocalRetriever::snapToInteriorGround" ></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::CLocalRetriever::snapToInteriorGround </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02793.html">ULocalPosition</a> & </td> + <td class="mdname" nowrap> <em>position</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>bool & </td> + <td class="mdname" nowrap> <em>snapped</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> +Snaps on the ground. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l01413">1413</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00333">_FaceGrid</a>, <a class="el" href="a05930.html#l00330">_InteriorFaces</a>, <a class="el" href="a05930.html#l00327">_InteriorVertices</a>, <a class="el" href="a05930.html#l00341">_Loaded</a>, <a class="el" href="a06605.html#l00051">NLPACS::ULocalPosition::Estimation</a>, <a class="el" href="a06172.html#l00051">NLMISC::CPlane::intersect()</a>, <a class="el" href="a06170.html#l00036">NLMISC::CPlane::make()</a>, <a class="el" href="a06677.html#l00100">NLMISC::CVector2f::normed()</a>, <a class="el" href="a05694.html#l00151">NLPACS::CFaceGrid::select()</a>, <a class="el" href="a06605.html#l00048">NLPACS::ULocalPosition::Surface</a>, <a class="el" href="a05930.html#l00177">NLPACS::CLocalRetriever::CInteriorFace::Surface</a>, <a class="el" href="a05981.html#l00100">uint32</a>, <a class="el" href="a05646.html#l00237">v</a>, <a class="el" href="a06679.html#l00038">NLPACS::Vector2sAccuracy</a>, <a class="el" href="a05930.html#l00176">NLPACS::CLocalRetriever::CInteriorFace::Verts</a>, <a class="el" href="a06677.html#l00052">NLMISC::CVector2f::x</a>, <a class="el" href="a05646.html#l00236">x</a>, <a class="el" href="a06677.html#l00052">NLMISC::CVector2f::y</a>, <a class="el" href="a05646.html#l00236">y</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>. +<p> +Referenced by <a class="el" href="a06337.html#l00387">NLPACS::CRetrieverInstance::retrievePosition()</a>, <a class="el" href="a06337.html#l00507">NLPACS::CRetrieverInstance::snap()</a>, and <a class="el" href="a06337.html#l00500">NLPACS::CRetrieverInstance::snapToInteriorGround()</a>. +<p> +<div class="fragment"><pre>01414 { +01415 <span class="keywordflow">if</span> (!<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp6">_Loaded</a>) +01416 <span class="keywordflow">return</span>; +01417 +01418 <span class="comment">// first preselect faces around the (x, y) position (CQuadGrid ?)</span> +01419 vector<uint32> selection; +01420 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_1">_FaceGrid</a>.select(position.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono0">Estimation</a>, selection); +01421 +01422 <span class="comment">// from the preselect faces, look for the only face that belongs to the surface</span> +01423 <span class="comment">// and that contains the position</span> +01424 CVector pos = position.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono0">Estimation</a>; +01425 CVector posh = pos+CVector(0.0f, 0.0f, 1.0f); +01426 CVector2f pos2d = position.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono0">Estimation</a>; +01427 <span class="keywordtype">float</span> bestDist = 1.0e10f; +01428 CVector best; +01429 vector<uint32>::iterator it; +01430 snapped = <span class="keyword">false</span>; +01431 <span class="keywordflow">for</span> (it=selection.begin(); it!=selection.end(); ++it) +01432 { +01433 <span class="keyword">const</span> CInteriorFace &f = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_3">_InteriorFaces</a>[*it]; +01434 <span class="keywordflow">if</span> (f.Surface == (<a class="code" href="a04558.html#a11">uint32</a>)position.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono1">Surface</a>) +01435 { +01436 CVector <a class="code" href="a04223.html#a576">v</a>[3]; +01437 <a class="code" href="a04223.html#a576">v</a>[0] = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_4">_InteriorVertices</a>[f.Verts[0]]; +01438 <a class="code" href="a04223.html#a576">v</a>[1] = _InteriorVertices[f.Verts[1]]; +01439 <a class="code" href="a04223.html#a576">v</a>[2] = _InteriorVertices[f.Verts[2]]; +01440 +01441 CVector2f n; +01442 <span class="keywordtype">float</span> c; <span class="comment">// 2D cartesian coefficients of line in plane X/Y.</span> +01443 <span class="comment">// Line p0-p1.</span> +01444 n = CVector2f(-(v[1].<a class="code" href="a04223.html#a573">y</a>-v[0].<a class="code" href="a04223.html#a573">y</a>), (v[1].<a class="code" href="a04223.html#a572">x</a>-v[0].<a class="code" href="a04223.html#a572">x</a>)).normed(); +01445 c = -(<a class="code" href="a04223.html#a576">v</a>[0].x*n.x + <a class="code" href="a04223.html#a576">v</a>[0].y*n.y); +01446 <span class="keywordflow">if</span> (n*pos2d + c < -1.0f/<a class="code" href="a05380.html#a15">Vector2sAccuracy</a>) <span class="keywordflow">continue</span>; +01447 <span class="comment">// Line p1-p2.</span> +01448 n = CVector2f(-(v[2].y-v[1].y), (v[2].<a class="code" href="a04223.html#a572">x</a>-v[1].<a class="code" href="a04223.html#a572">x</a>)).normed(); +01449 c = -(<a class="code" href="a04223.html#a576">v</a>[1].x*n.x + <a class="code" href="a04223.html#a576">v</a>[1].y*n.y); +01450 <span class="keywordflow">if</span> (n*pos2d + c < -1.0f/<a class="code" href="a05380.html#a15">Vector2sAccuracy</a>) <span class="keywordflow">continue</span>; +01451 <span class="comment">// Line p2-p0.</span> +01452 n = CVector2f(-(v[0].y-v[2].y), (v[0].<a class="code" href="a04223.html#a572">x</a>-v[2].<a class="code" href="a04223.html#a572">x</a>)).normed(); +01453 c = -(<a class="code" href="a04223.html#a576">v</a>[2].x*n.x + <a class="code" href="a04223.html#a576">v</a>[2].y*n.y); +01454 <span class="keywordflow">if</span> (n*pos2d + c < -1.0f/<a class="code" href="a05380.html#a15">Vector2sAccuracy</a>) <span class="keywordflow">continue</span>; +01455 +01456 <a class="code" href="a03082.html">CPlane</a> p; +01457 p.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a>(v[0], v[1], v[2]); +01458 +01459 CVector i = p.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1992_5">intersect</a>(pos, posh); +01460 +01461 <span class="keywordtype">float</span> d = (<span class="keywordtype">float</span>)fabs(pos.z-i.z); +01462 +01463 <span class="keywordflow">if</span> (d < bestDist) +01464 { +01465 bestDist = d; +01466 best = i; +01467 } +01468 } +01469 } +01470 +01471 <span class="comment">// and computes the real position on this face</span> +01472 <span class="keywordflow">if</span> (bestDist < 400.0f) +01473 { +01474 snapped = <span class="keyword">true</span>; +01475 position.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono0">Estimation</a> = best; +01476 } +01477 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_17" doxytag="NLPACS::CLocalRetriever::sortTips" ></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::CLocalRetriever::sortTips </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> +Sorts chains references inside the tips. NOT IMPLEMENTED YET. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00775">775</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +<div class="fragment"><pre>00776 { +00777 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1261_1" doxytag="NLPACS::CLocalRetriever::testCollision" ></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::CLocalRetriever::testCollision </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02387.html">CCollisionSurfaceTemp</a> & </td> + <td class="mdname" nowrap> <em>cst</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a02156.html">NLMISC::CAABBox</a> & </td> + <td class="mdname" nowrap> <em>bboxMove</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a03660.html">NLMISC::CVector2f</a> & </td> + <td class="mdname" nowrap> <em>transBase</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> +add possible collisions chains to the temp result. <dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign=top><em>cst</em> </td><td>the temp result to store collision chains. they are appened to cst.CollisionChains. </td></tr> + <tr><td valign=top><em>bboxMove</em> </td><td>the bbox which bounds the movement of the entity. </td></tr> + <tr><td valign=top><em>transBase</em> </td><td>the vector we use to translate local position of edge.</td></tr> + </table> +</dl> + +<p> +Definition at line <a class="el" href="a05929.html#l01807">1807</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00316">_ChainQuad</a>, <a class="el" href="a05930.html#l00324">_ExteriorMesh</a>, <a class="el" href="a05930.html#l00341">_Loaded</a>, <a class="el" href="a05582.html#l00068">NLPACS::CCollisionSurfaceTemp::allocEdgeCollideNode()</a>, <a class="el" href="a05583.html#l00299">NLPACS::CCollisionSurfaceTemp::CollisionChains</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="a05583.html#l00070">NLPACS::CCollisionChain::FirstEdgeCollide</a>, <a class="el" href="a05930.html#l00389">getChains()</a>, <a class="el" href="a05582.html#l00075">NLPACS::CCollisionSurfaceTemp::getEdgeCollideNode()</a>, <a class="el" href="a05693.html#l00133">NLPACS::CExteriorMesh::getLink()</a>, <a class="el" href="a05693.html#l00131">NLPACS::CExteriorMesh::getLinks()</a>, <a class="el" href="a05930.html#l00379">getOrderedChains()</a>, <a class="el" href="a05540.html#l00139">NLPACS::COrderedChain::getParentId()</a>, <a class="el" href="a05540.html#l00133">NLPACS::COrderedChain::getVertices()</a>, <a class="el" href="a05664.html#l00043">NLPACS::CEdgeCollide::make()</a>, <a class="el" href="a05583.html#l00049">NLPACS::CEdgeCollideNode::Next</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="a05541.html#l00289">NLPACS::CChainQuad::selectEdges()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00098">uint16</a>, and <a class="el" href="a05981.html#l00100">uint32</a>. +<p> +Referenced by <a class="el" href="a05761.html#l01177">NLPACS::CGlobalRetriever::findCollisionChains()</a>. +<p> +<div class="fragment"><pre>01808 { +01809 <span class="keywordflow">if</span> (!<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp6">_Loaded</a>) +01810 <span class="keywordflow">return</span>; +01811 +01812 <span class="comment">// H_AUTO(PACS_LR_testCollision);</span> +01813 +01814 <a class="code" href="a04558.html#a14">sint</a> i; +01815 +01816 <span class="comment">// 0. select ordered chains in the chainquad.</span> +01817 <span class="comment">//=====================================</span> +01818 <span class="comment">// H_BEFORE(PACS_LR_testCol_selEdges);</span> +01819 <a class="code" href="a04558.html#a14">sint</a> nEce= <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp3">_ChainQuad</a>.selectEdges(bboxMove, cst); +01820 <span class="comment">// H_AFTER(PACS_LR_testCol_selEdges);</span> +01821 <span class="comment">// NB: cst.OChainLUT is assured to be full of 0xFFFF after this call (if was right before).</span> +01822 +01823 +01824 <span class="comment">// 1. regroup them in chains. build cst.CollisionChains</span> +01825 <span class="comment">//=====================================</span> +01826 <span class="comment">// NB: use cst.OChainLUT to look if a Chain has been inserted before.</span> +01827 <a class="code" href="a04558.html#a9">uint16</a> *chainLUT= cst.OChainLUT; +01828 +01829 <span class="comment">// bkup where we begin to add chains.</span> +01830 <a class="code" href="a04558.html#a15">uint</a> firstChainAdded= cst.CollisionChains.size(); +01831 +01832 <span class="comment">// For all edgechain entry.</span> +01833 <span class="keywordflow">for</span>(i=0;i<nEce;i++) +01834 { +01835 CEdgeChainEntry &ece= cst.EdgeChainEntries[i]; +01836 <span class="comment">// this is the ordered chain in the retriever.</span> +01837 <span class="keyword">const</span> COrderedChain &oChain= this-><a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_18">getOrderedChains</a>()[ece.OChainId]; +01838 <span class="comment">// this is the id of the chain is the local retriever.</span> +01839 <a class="code" href="a04558.html#a9">uint16</a> chainId= oChain.getParentId(); +01840 +01841 <span class="comment">// test if edge is interior and points to another instance</span> +01842 <span class="comment">// \todo Ben: flag interior chains that points to doors to speed up the test</span> +01843 <span class="keywordflow">if</span> (<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp10">_Type</a> == <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverw0NLPACS_1_1CLocalRetrieverw1">Interior</a> && CChain::isBorderChainId(this->getChains()[chainId].getRight())) +01844 { +01845 <span class="comment">// then look for a door that match this edge</span> +01846 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a05373.html#a2">l</a>; +01847 <span class="keywordflow">for</span> (<a class="code" href="a05373.html#a2">l</a>=0; <a class="code" href="a05373.html#a2">l</a><<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_0">_ExteriorMesh</a>.getLinks().size() && <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_0">_ExteriorMesh</a>.getLink(l).ChainId != chainId; ++<a class="code" href="a05373.html#a2">l</a>) +01848 ; +01849 +01850 <span class="comment">// if found a door, then leave the edge as is</span> +01851 <span class="keywordflow">if</span> (<a class="code" href="a05373.html#a2">l</a> < <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_0">_ExteriorMesh</a>.getLinks().size()) +01852 <span class="keywordflow">continue</span>; +01853 } +01854 +01855 +01856 <span class="comment">// add/retrieve the id in cst.CollisionChains.</span> +01857 <span class="comment">//=================================</span> +01858 <a class="code" href="a04558.html#a15">uint</a> ccId; +01859 <span class="comment">// if never added.</span> +01860 <span class="keywordflow">if</span>(chainLUT[chainId]==0xFFFF) +01861 { +01862 <span class="comment">// H_AUTO(PACS_LR_testCol_addToLUT);</span> +01863 <span class="comment">// add a new CCollisionChain.</span> +01864 ccId= cst.CollisionChains.size(); +01865 cst.CollisionChains.push_back(CCollisionChain()); +01866 <span class="comment">// Fill it with default.</span> +01867 cst.CollisionChains[ccId].Tested= <span class="keyword">false</span>; +01868 cst.CollisionChains[ccId].ExteriorEdge = <span class="keyword">false</span>; +01869 cst.CollisionChains[ccId].FirstEdgeCollide= 0xFFFFFFFF; +01870 cst.CollisionChains[ccId].ChainId= chainId; +01871 <span class="comment">// Fill Left right info.</span> +01872 cst.CollisionChains[ccId].LeftSurface.SurfaceId= this-><a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_10">getChains</a>()[chainId].getLeft(); +01873 cst.CollisionChains[ccId].RightSurface.SurfaceId= this-><a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverz1257_10">getChains</a>()[chainId].getRight(); +01874 <span class="comment">// NB: cst.CollisionChains[ccId].*Surface.RetrieverInstanceId is not filled here because we don't have</span> +01875 <span class="comment">// this info at this level.</span> +01876 +01877 <span class="comment">// store this Id in the LUT of chains.</span> +01878 chainLUT[chainId]= ccId; +01879 } +01880 <span class="keywordflow">else</span> +01881 { +01882 <span class="comment">// get the id of this collision chain.</span> +01883 ccId= chainLUT[chainId]; +01884 } +01885 +01886 <span class="comment">// add edge collide to the list.</span> +01887 <span class="comment">//=================================</span> +01888 <span class="comment">// H_BEFORE(PACS_LR_testCol_addToList);</span> +01889 CCollisionChain &colChain= cst.CollisionChains[ccId]; +01890 <span class="keyword">const</span> std::vector<CVector2s> &oChainVertices= oChain.getVertices(); +01891 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> edge=ece.EdgeStart; edge<ece.EdgeEnd; edge++) +01892 { +01893 CVector2f p0= oChainVertices[edge].unpack(); +01894 CVector2f p1= oChainVertices[edge+1].unpack(); +01895 +01896 <span class="comment">// alloc a new edgeCollide.</span> +01897 <a class="code" href="a04558.html#a11">uint32</a> ecnId= cst.allocEdgeCollideNode(); +01898 CEdgeCollideNode &ecn= cst.getEdgeCollideNode(ecnId); +01899 +01900 <span class="comment">// append to the front of the list.</span> +01901 ecn.Next= colChain.FirstEdgeCollide; +01902 colChain.FirstEdgeCollide= ecnId; +01903 +01904 <span class="comment">// build this edge.</span> +01905 p0+= transBase; +01906 p1+= transBase; +01907 ecn.make(p0, p1); +01908 } +01909 <span class="comment">// H_AFTER(PACS_LR_testCol_addToList);</span> +01910 } +01911 +01912 +01913 +01914 <span class="comment">// 2. Reset LUT to 0xFFFF.</span> +01915 <span class="comment">//=====================================</span> +01916 +01917 <span class="comment">// H_BEFORE(PACS_LR_testCol_resetLUT);</span> +01918 <span class="comment">// for all collisions chains inserted (starting from firstChainAdded), reset LUT.</span> +01919 <span class="keywordflow">for</span>(i=firstChainAdded; i<(<a class="code" href="a04558.html#a14">sint</a>)cst.CollisionChains.size(); i++) +01920 { +01921 <a class="code" href="a04558.html#a15">uint</a> ccId= cst.CollisionChains[i].ChainId; +01922 chainLUT[ccId]= 0xFFFF; +01923 } +01924 <span class="comment">// H_AFTER(PACS_LR_testCol_resetLUT);</span> +01925 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera16" doxytag="NLPACS::CLocalRetriever::testPosition" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool NLPACS::CLocalRetriever::testPosition </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02793.html">ULocalPosition</a> & </td> + <td class="mdname" nowrap> <em>local</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> +Retrieves a position inside the retriever (from the local position), returns true if the position is close to a border. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l01038">1038</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00341">_Loaded</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a06605.html#l00051">NLPACS::ULocalPosition::Estimation</a>, <a class="el" href="a05622.html#l00135">nlwarning</a>, <a class="el" href="a05583.html#l00294">NLPACS::CCollisionSurfaceTemp::PossibleSurfaces</a>, <a class="el" href="a05929.html#l01064">retrievePosition()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a06605.html#l00048">NLPACS::ULocalPosition::Surface</a>, <a class="el" href="a05583.html#l00292">NLPACS::CCollisionSurfaceTemp::SurfaceLUT</a>, <a class="el" href="a05981.html#l00105">uint</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="a05762.html#l00305">NLPACS::CGlobalRetriever::testPosition()</a>. +<p> +<div class="fragment"><pre>01039 { +01040 <span class="keywordflow">if</span> (!<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp6">_Loaded</a>) +01041 <span class="keywordflow">return</span> <span class="keyword">false</span>; +01042 +01043 <span class="keywordflow">if</span> (local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono1">Surface</a> < 0 || local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono1">Surface</a> >= (<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size()) +01044 { +01045 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"PACS: can't test inexistant surface %d"</span>, local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono1">Surface</a>); +01046 <span class="keywordflow">return</span> <span class="keyword">false</span>; +01047 } +01048 +01049 <span class="keywordflow">if</span> (fabs(local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono0">Estimation</a>.<a class="code" href="a03128.html#NLMISC_1_1CVectoro0">x</a>) >= 256.0 || fabs(local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono0">Estimation</a>.<a class="code" href="a03128.html#NLMISC_1_1CVectoro1">y</a>) >= 256.0) +01050 <span class="keywordflow">return</span> <span class="keyword">false</span>; +01051 +01052 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrievera14">retrievePosition</a>(local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono0">Estimation</a>, cst); +01053 +01054 <span class="keywordtype">bool</span> result = (cst.SurfaceLUT[local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono1">Surface</a>].Counter == 2 || cst.SurfaceLUT[local.<a class="code" href="a02793.html#NLPACS_1_1ULocalPositiono1">Surface</a>].OnVerticalEdge); +01055 +01056 <a class="code" href="a04558.html#a15">uint</a> i; +01057 <span class="keywordflow">for</span> (i=0; i<cst.PossibleSurfaces.size(); ++i) +01058 cst.SurfaceLUT[cst.PossibleSurfaces[i]].reset(); +01059 +01060 <span class="keywordflow">return</span> result; +01061 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_18" doxytag="NLPACS::CLocalRetriever::translate" ></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::CLocalRetriever::translate </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>translation</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> +Translates the local retriever by the translation vector. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00882">882</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00288">_OrderedChains</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +<div class="fragment"><pre>00883 { +00884 <a class="code" href="a04558.html#a15">uint</a> i; +00885 <span class="keywordflow">for</span> (i=0; i<<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp7">_OrderedChains</a>.size(); ++i) +00886 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp7">_OrderedChains</a>[i].translate(translation); +00887 <span class="keywordflow">for</span> (i=0; i<<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size(); ++i) +00888 <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[i].translate(translation); +00889 <span class="comment">/*</span> +00890 <span class="comment"> for (i=0; i<_Tips.size(); ++i)</span> +00891 <span class="comment"> _Tips[i].translate(translation);</span> +00892 <span class="comment">*/</span> +00893 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievera17" doxytag="NLPACS::CLocalRetriever::unify" ></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::CLocalRetriever::unify </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00206">206</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +Referenced by <a class="el" href="a05522.html#l00627">NLPACS::computeRetriever()</a>. +<p> +<div class="fragment"><pre>00207 { +00208 <span class="comment">/*</span> +00209 <span class="comment"> uint i, j;</span> +00210 <span class="comment"></span> +00211 <span class="comment"> for (i=0; i<_Chains.size(); ++i)</span> +00212 <span class="comment"> _Chains[i].unify(_OrderedChains);</span> +00213 <span class="comment"></span> +00214 <span class="comment"> for (i=0; i<_Tips.size(); ++i)</span> +00215 <span class="comment"> {</span> +00216 <span class="comment"> NLPACS::CLocalRetriever::CTip &tip = _Tips[i];</span> +00217 <span class="comment"> CVector2s ptip = tip.Point;</span> +00218 <span class="comment"></span> +00219 <span class="comment"> for (j=0; j<tip.Chains.size(); ++j)</span> +00220 <span class="comment"> {</span> +00221 <span class="comment"> if (tip.Chains[j].Start)</span> +00222 <span class="comment"> {</span> +00223 <span class="comment"> if (_Chains[tip.Chains[j].Chain].getStartVector(_OrderedChains) != ptip)</span> +00224 <span class="comment"> nlwarning("chain %d is not stuck to tip %d", tip.Chains[j].Chain, i);</span> +00225 <span class="comment"> _Chains[tip.Chains[j].Chain].setStartVector(ptip, _OrderedChains);</span> +00226 <span class="comment"> }</span> +00227 <span class="comment"> else</span> +00228 <span class="comment"> {</span> +00229 <span class="comment"> if (_Chains[tip.Chains[j].Chain].getStopVector(_OrderedChains) != ptip)</span> +00230 <span class="comment"> nlwarning("chain %d is not stuck to tip %d", tip.Chains[j].Chain, i);</span> +00231 <span class="comment"> _Chains[tip.Chains[j].Chain].setStopVector(ptip, _OrderedChains);</span> +00232 <span class="comment"> }</span> +00233 <span class="comment"> }</span> +00234 <span class="comment"> }</span> +00235 <span class="comment"></span> +00236 <span class="comment"> _FullOrderedChains.resize(_OrderedChains.size());</span> +00237 <span class="comment"> for (i=0; i<_OrderedChains.size(); ++i)</span> +00238 <span class="comment"> _FullOrderedChains[i].unpack(_OrderedChains[i]);</span> +00239 <span class="comment">*/</span> +00240 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1259_19" doxytag="NLPACS::CLocalRetriever::updateChainIds" ></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::CLocalRetriever::updateChainIds </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> +Updates surfaces links from the links contained in the chains... +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00797">797</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. +<p> +References <a class="el" href="a05930.html#l00292">_Chains</a>, <a class="el" href="a06334.html#l00137">NLPACS::CRetrievableSurface::_Chains</a>, <a class="el" href="a05930.html#l00295">_Surfaces</a>, <a class="el" href="a05622.html#l00154">nlerror</a>, <a class="el" href="a05622.html#l00135">nlwarning</a>, <a class="el" href="a05981.html#l00099">sint32</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +Referenced by <a class="el" href="a05522.html#l00627">NLPACS::computeRetriever()</a>. +<p> +<div class="fragment"><pre>00798 { +00799 <a class="code" href="a04558.html#a15">uint</a> surf, link; +00800 +00801 <span class="keywordflow">for</span> (surf=0; surf<<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>.size(); ++surf) +00802 { +00803 CRetrievableSurface &surface = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">_Surfaces</a>[surf]; +00804 +00805 <span class="keywordflow">for</span> (link=0; link<surface._Chains.size(); ++link) +00806 { +00807 <a class="code" href="a04558.html#a10">sint32</a> chain = surface._Chains[link].Chain; +00808 +00809 <span class="keywordflow">if</span> (<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain]._Left == (<a class="code" href="a04558.html#a10">sint32</a>)surf) +00810 surface._Chains[link].Surface = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain]._Right; +00811 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain]._Right == (<a class="code" href="a04558.html#a10">sint32</a>)surf) +00812 surface._Chains[link].Surface = <a class="code" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">_Chains</a>[chain]._Left; +00813 <span class="keywordflow">else</span> +00814 { +00815 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"in NLPACS::CLocalRetriever::updateEdgesOnSurfaces()"</span>); +00816 <a class="code" href="a04199.html#a3">nlerror</a>(<span class="stringliteral">"Can't find back point to surface %d on chain %d"</span>, surf, chain); +00817 } +00818 } +00819 } +00820 } +</pre></div> </td> + </tr> +</table> +<hr><h2>Friends And Related Function Documentation</h2> +<a class="anchor" name="NLPACS_1_1CLocalRetrievern0" doxytag="NLPACS::CLocalRetriever::CRetrieverInstance" ></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"> friend class <a class="el" href="a03333.html">CRetrieverInstance</a><code> [friend]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00285">285</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. </td> + </tr> +</table> +<hr><h2>Field Documentation</h2> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverp0" doxytag="NLPACS::CLocalRetriever::__Tips" ></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="a02794.html">CTip</a>> <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp0">NLPACS::CLocalRetriever::__Tips</a><code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The tips making links between different chains. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00301">301</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00064">clear()</a>, and <a class="el" href="a05929.html#l00895">serial()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverp1" doxytag="NLPACS::CLocalRetriever::_BBox" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a02156.html">NLMISC::CAABBox</a> <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp1">NLPACS::CLocalRetriever::_BBox</a><code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The bbox of the local retriever. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00298">298</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverp2" doxytag="NLPACS::CLocalRetriever::_BorderChains" ></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#a9">uint16</a>> <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp2">NLPACS::CLocalRetriever::_BorderChains</a><code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The chains on the edges of the zone. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00304">304</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00064">clear()</a>, <a class="el" href="a05929.html#l00782">findBorderChains()</a>, <a class="el" href="a05930.html#l00396">getBorderChain()</a>, <a class="el" href="a05930.html#l00394">getBorderChains()</a>, <a class="el" href="a05929.html#l01973">replaceChain()</a>, and <a class="el" href="a05929.html#l00895">serial()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverp3" doxytag="NLPACS::CLocalRetriever::_ChainQuad" ></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> <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp3">NLPACS::CLocalRetriever::_ChainQuad</a><code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +For collisions, the chainquad. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00316">316</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00064">clear()</a>, <a class="el" href="a05929.html#l01800">computeCollisionChainQuad()</a>, <a class="el" href="a05929.html#l01576">findPath()</a>, <a class="el" href="a05930.html#l00500">getChainQuad()</a>, <a class="el" href="a05929.html#l01238">retrieveAccuratePosition()</a>, <a class="el" href="a05929.html#l01064">retrievePosition()</a>, <a class="el" href="a05929.html#l00895">serial()</a>, and <a class="el" href="a05929.html#l01807">testCollision()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverp4" doxytag="NLPACS::CLocalRetriever::_Chains" ></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="a02333.html">CChain</a>> <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp4">NLPACS::CLocalRetriever::_Chains</a><code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The chains insinde the zone. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00292">292</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00361">addChain()</a>, <a class="el" href="a05929.html#l00714">build3dSurfacePolygons()</a>, <a class="el" href="a05929.html#l00655">buildSurfacePolygons()</a>, <a class="el" href="a05929.html#l00064">clear()</a>, <a class="el" href="a05929.html#l00456">computeLoopsAndTips()</a>, <a class="el" href="a05929.html#l00822">computeTopologies()</a>, <a class="el" href="a05929.html#l00291">distanceToBorder()</a>, <a class="el" href="a05929.html#l00248">dumpSurface()</a>, <a class="el" href="a05929.html#l00782">findBorderChains()</a>, <a class="el" href="a05929.html#l01576">findPath()</a>, <a class="el" href="a05930.html#l00602">forceBorderChainId()</a>, <a class="el" href="a05930.html#l00391">getChain()</a>, <a class="el" href="a05930.html#l00389">getChains()</a>, <a class="el" href="a05929.html#l00182">getNextChain()</a>, <a class="el" href="a05929.html#l00161">getPreviousChain()</a>, <a class="el" href="a05929.html#l00086">getStartVector()</a>, <a class="el" href="a05929.html#l00092">getStopVector()</a>, <a class="el" href="a05929.html#l00960">insurePosition()</a>, <a class="el" href="a05929.html#l01973">replaceChain()</a>, <a class="el" href="a05929.html#l01238">retrieveAccuratePosition()</a>, <a class="el" href="a05929.html#l01064">retrievePosition()</a>, <a class="el" href="a05929.html#l00895">serial()</a>, and <a class="el" href="a05929.html#l00797">updateChainIds()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievert0" doxytag="NLPACS::CLocalRetriever::_EdgeTipThreshold" ></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="a02787.html#NLPACS_1_1CLocalRetrievert0">NLPACS::CLocalRetriever::_EdgeTipThreshold</a> = 0.1f<code> [static, protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The tip recognition threshold. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00042">42</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1253_0" doxytag="NLPACS::CLocalRetriever::_ExteriorMesh" ></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="a02492.html">CExteriorMesh</a> <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_0">NLPACS::CLocalRetriever::_ExteriorMesh</a><code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The exterior mesh, for collisions. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00324">324</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00064">clear()</a>, <a class="el" href="a05930.html#l00410">getExteriorMesh()</a>, <a class="el" href="a05929.html#l00895">serial()</a>, <a class="el" href="a05930.html#l00483">setExteriorMesh()</a>, <a class="el" href="a05929.html#l01807">testCollision()</a>, and <a class="el" href="a06337.html#l00635">NLPACS::CRetrieverInstance::testExteriorCollision()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1253_1" doxytag="NLPACS::CLocalRetriever::_FaceGrid" ></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="a02497.html">CFaceGrid</a> <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_1">NLPACS::CLocalRetriever::_FaceGrid</a><code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The face selection grid. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00333">333</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00064">clear()</a>, <a class="el" href="a05929.html#l01479">getHeight()</a>, <a class="el" href="a05929.html#l01393">initFaceGrid()</a>, <a class="el" href="a05929.html#l00895">serial()</a>, and <a class="el" href="a05929.html#l01413">snapToInteriorGround()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverp5" doxytag="NLPACS::CLocalRetriever::_FullOrderedChains" ></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="a03028.html">COrderedChain3f</a>> <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp5">NLPACS::CLocalRetriever::_FullOrderedChains</a><code> [protected]</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="a05930.html#l00289">289</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00361">addChain()</a>, <a class="el" href="a05929.html#l00714">build3dSurfacePolygons()</a>, <a class="el" href="a05929.html#l00064">clear()</a>, <a class="el" href="a05929.html#l00248">dumpSurface()</a>, <a class="el" href="a05930.html#l00529">flushFullOrderedChains()</a>, <a class="el" href="a05930.html#l00386">getFullOrderedChain()</a>, <a class="el" href="a05930.html#l00384">getFullOrderedChains()</a>, <a class="el" href="a05929.html#l00086">getStartVector()</a>, <a class="el" href="a05929.html#l00092">getStopVector()</a>, <a class="el" href="a05929.html#l01973">replaceChain()</a>, <a class="el" href="a05929.html#l00895">serial()</a>, and <a class="el" href="a05930.html#l00532">setFullOrderedChains()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1253_2" doxytag="NLPACS::CLocalRetriever::_Id" ></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::string <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_2">NLPACS::CLocalRetriever::_Id</a><code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +An human readable identifier of the retriever. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00336">336</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1253_3" doxytag="NLPACS::CLocalRetriever::_InteriorFaces" ></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="a02789.html">CInteriorFace</a>> <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_3">NLPACS::CLocalRetriever::_InteriorFaces</a><code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The faces of the collision mesh. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00330">330</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05929.html#l01935">buildInteriorSurfaceBBoxes()</a>, <a class="el" href="a05929.html#l00064">clear()</a>, <a class="el" href="a05929.html#l01479">getHeight()</a>, <a class="el" href="a05930.html#l00416">getInteriorFaces()</a>, <a class="el" href="a05929.html#l01393">initFaceGrid()</a>, <a class="el" href="a05929.html#l00895">serial()</a>, and <a class="el" href="a05929.html#l01413">snapToInteriorGround()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverz1253_4" doxytag="NLPACS::CLocalRetriever::_InteriorVertices" ></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="a03128.html">NLMISC::CVector</a>> <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverz1253_4">NLPACS::CLocalRetriever::_InteriorVertices</a><code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The vertices of the collision mesh. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00327">327</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05929.html#l01935">buildInteriorSurfaceBBoxes()</a>, <a class="el" href="a05929.html#l00064">clear()</a>, <a class="el" href="a05929.html#l01479">getHeight()</a>, <a class="el" href="a05930.html#l00413">getInteriorVertices()</a>, <a class="el" href="a05929.html#l01393">initFaceGrid()</a>, <a class="el" href="a05929.html#l00895">serial()</a>, and <a class="el" href="a05929.html#l01413">snapToInteriorGround()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverp6" doxytag="NLPACS::CLocalRetriever::_Loaded" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp6">NLPACS::CLocalRetriever::_Loaded</a><code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Tells if retriever is loaded. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00341">341</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00064">clear()</a>, <a class="el" href="a05929.html#l00056">CLocalRetriever()</a>, <a class="el" href="a05930.html#l00425">forceLoaded()</a>, <a class="el" href="a05929.html#l01479">getHeight()</a>, <a class="el" href="a05929.html#l00960">insurePosition()</a>, <a class="el" href="a05930.html#l00422">isLoaded()</a>, <a class="el" href="a05929.html#l01238">retrieveAccuratePosition()</a>, <a class="el" href="a05929.html#l01064">retrievePosition()</a>, <a class="el" href="a05929.html#l00895">serial()</a>, <a class="el" href="a05929.html#l01413">snapToInteriorGround()</a>, <a class="el" href="a05929.html#l01807">testCollision()</a>, and <a class="el" href="a05929.html#l01038">testPosition()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverp7" doxytag="NLPACS::CLocalRetriever::_OrderedChains" ></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="a03027.html">COrderedChain</a>> <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp7">NLPACS::CLocalRetriever::_OrderedChains</a><code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The chains insinde the zone. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00288">288</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00361">addChain()</a>, <a class="el" href="a05929.html#l00655">buildSurfacePolygons()</a>, <a class="el" href="a05929.html#l00064">clear()</a>, <a class="el" href="a05929.html#l01800">computeCollisionChainQuad()</a>, <a class="el" href="a05929.html#l00291">distanceToBorder()</a>, <a class="el" href="a05929.html#l00248">dumpSurface()</a>, <a class="el" href="a05929.html#l01576">findPath()</a>, <a class="el" href="a05930.html#l00381">getOrderedChain()</a>, <a class="el" href="a05930.html#l00379">getOrderedChains()</a>, <a class="el" href="a05929.html#l00960">insurePosition()</a>, <a class="el" href="a05929.html#l01973">replaceChain()</a>, <a class="el" href="a05929.html#l01238">retrieveAccuratePosition()</a>, <a class="el" href="a05929.html#l01064">retrievePosition()</a>, <a class="el" href="a05929.html#l00895">serial()</a>, and <a class="el" href="a05929.html#l00882">translate()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverp8" doxytag="NLPACS::CLocalRetriever::_Surfaces" ></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="a03328.html">CRetrievableSurface</a>> <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp8">NLPACS::CLocalRetriever::_Surfaces</a><code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The surfaces inside the zone. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00295">295</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00361">addChain()</a>, <a class="el" href="a05929.html#l00320">addSurface()</a>, <a class="el" href="a05929.html#l00714">build3dSurfacePolygons()</a>, <a class="el" href="a05929.html#l01935">buildInteriorSurfaceBBoxes()</a>, <a class="el" href="a05929.html#l00655">buildSurfacePolygons()</a>, <a class="el" href="a05929.html#l00064">clear()</a>, <a class="el" href="a05929.html#l00456">computeLoopsAndTips()</a>, <a class="el" href="a05929.html#l00822">computeTopologies()</a>, <a class="el" href="a05929.html#l00291">distanceToBorder()</a>, <a class="el" href="a05929.html#l00248">dumpSurface()</a>, <a class="el" href="a05929.html#l01576">findPath()</a>, <a class="el" href="a05929.html#l01479">getHeight()</a>, <a class="el" href="a05929.html#l00182">getNextChain()</a>, <a class="el" href="a05929.html#l00161">getPreviousChain()</a>, <a class="el" href="a05930.html#l00401">getSurface()</a>, <a class="el" href="a05930.html#l00399">getSurfaces()</a>, <a class="el" href="a05929.html#l00960">insurePosition()</a>, <a class="el" href="a05929.html#l01973">replaceChain()</a>, <a class="el" href="a05929.html#l00895">serial()</a>, <a class="el" href="a05929.html#l01038">testPosition()</a>, <a class="el" href="a05929.html#l00882">translate()</a>, and <a class="el" href="a05929.html#l00797">updateChainIds()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievert1" doxytag="NLPACS::CLocalRetriever::_TipThreshold" ></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="a02787.html#NLPACS_1_1CLocalRetrievert1">NLPACS::CLocalRetriever::_TipThreshold</a> = 0.1f<code> [static, protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The tip recognition threshold. +<p> + +<p> +Definition at line <a class="el" href="a05929.html#l00041">41</a> of file <a class="el" href="a05929.html">local_retriever.cpp</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverp9" doxytag="NLPACS::CLocalRetriever::_Topologies" ></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="a02796.html">CTopology</a>> <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp9">NLPACS::CLocalRetriever::_Topologies</a>[NumMaxCreatureModels]<code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The topologies within the zone. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00307">307</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00064">clear()</a>, <a class="el" href="a05929.html#l00822">computeTopologies()</a>, and <a class="el" href="a05929.html#l00895">serial()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrieverp10" doxytag="NLPACS::CLocalRetriever::_Type" ></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="a02787.html#NLPACS_1_1CLocalRetrieverw0">EType</a> <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrieverp10">NLPACS::CLocalRetriever::_Type</a><code> [protected]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +The type of the retriever. +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00319">319</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievero0" doxytag="NLPACS::CLocalRetriever::FreeOChains" ></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#a15">uint</a>> <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievero0">NLPACS::CLocalRetriever::FreeOChains</a> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00598">598</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05929.html#l01973">replaceChain()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLPACS_1_1CLocalRetrievero1" doxytag="NLPACS::CLocalRetriever::LoadCheckFlag" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool <a class="el" href="a02787.html#NLPACS_1_1CLocalRetrievero1">NLPACS::CLocalRetriever::LoadCheckFlag</a> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05930.html#l00345">345</a> of file <a class="el" href="a05930.html">local_retriever.h</a>. +<p> +Referenced by <a class="el" href="a05929.html#l00064">clear()</a>, <a class="el" href="a05929.html#l00056">CLocalRetriever()</a>, and <a class="el" href="a05929.html#l00895">serial()</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following files:<ul> +<li><a class="el" href="a05930.html">local_retriever.h</a><li><a class="el" href="a05929.html">local_retriever.cpp</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 14:16:01 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> |