Sophie

Sophie

distrib > Fedora > 16 > i386 > by-pkgid > 4bc66056a634db26a1f4d0845dc41ca6 > files > 4337

mrpt-doc-0.9.5-0.1.20110925svn2670.fc16.i686.rpm

<!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>mrpt::math::KDTreeCapable Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<div align="left"><a href="http://www.mrpt.org/">Main MRPT website</a> &gt; <b>C++ reference</b> </div>
<div align="right">
<a href="index.html"><img border="0" src="mrpt_logo.png" alt="MRPT logo"></a>
</div>
<!-- Generated by Doxygen 1.7.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
          <div class="left">
            <form id="FSearchBox" action="search.php" method="get">
              <img id="MSearchSelect" src="search/mag.png" alt=""/>
              <input type="text" id="MSearchField" name="query" value="Search" size="20" accesskey="S" 
                     onfocus="searchBox.OnSearchFieldFocus(true)" 
                     onblur="searchBox.OnSearchFieldFocus(false)"/>
            </form>
          </div><div class="right"></div>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="namespacemrpt.html">mrpt</a>      </li>
      <li class="navelem"><a class="el" href="namespacemrpt_1_1math.html">math</a>      </li>
      <li class="navelem"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html">KDTreeCapable</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a>  </div>
  <div class="headertitle">
<div class="title">mrpt::math::KDTreeCapable Class Reference<div class="ingroups"><a class="el" href="group__kdtree__grp.html">KD-Trees</a> &#124; <a class="el" href="group__mrpt__base__grp.html">[mrpt-base]</a></div></div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="mrpt::math::KDTreeCapable" --><hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>A generic adaptor class for providing Approximate Nearest Neighbors (ANN) (via the nanoflann library) to MRPT classses. </p>
<p>This makes use of the CRTP design pattern.</p>
<p>Derived classes must be aware of the need to call "kdtree_mark_as_outdated()" when the data points change to mark the cached KD-tree (an "index") as invalid, and also implement the following interface (note that these are not virtual functions due to the usage of CRTP):</p>
<div class="fragment"><pre class="fragment">   <span class="comment">// Must return the number of data points</span>
   <span class="keyword">inline</span> <span class="keywordtype">size_t</span> kdtree_get_point_count()<span class="keyword"> const </span>{ ... }

   <span class="comment">// Returns the distance between the vector &quot;p1[0:size-1]&quot; and the data point with index &quot;idx_p2&quot; stored in the class:</span>
   <span class="keyword">inline</span> <span class="keywordtype">float</span> kdtree_distance(<span class="keyword">const</span> <span class="keywordtype">float</span> *p1, <span class="keyword">const</span> <span class="keywordtype">size_t</span> idx_p2,<span class="keywordtype">size_t</span> <a class="code" href="namespacemrpt_1_1math.html#a632ae0aecf78103f87f18f9ac33f7170">size</a>)<span class="keyword"> const </span>{ ... }

   <span class="comment">// Returns the dim&#39;th component of the idx&#39;th point in the class:</span>
   <span class="keyword">inline</span> num_t kdtree_get_pt(<span class="keyword">const</span> <span class="keywordtype">size_t</span> idx, <span class="keywordtype">int</span> dim)<span class="keyword"> const </span>{ ... }

   <span class="comment">// Optional bounding-box computation: return false to default to a standard bbox computation loop.</span>
   <span class="comment">//   Return true if the BBOX was already computed by the class and returned in &quot;bb&quot; so it can be avoided to redo it again.</span>
   <span class="comment">//   Look at bb.size() to find out the expected dimensionality (e.g. 2 or 3 for point clouds)</span>
   <span class="keyword">template</span> &lt;<span class="keyword">class</span> BBOX&gt;
   <span class="keywordtype">bool</span> kdtree_get_bbox(BBOX &amp;bb)<span class="keyword"> const</span>
<span class="keyword">   </span>{
      bb[0].low = ...; bb[0].high = ...;  <span class="comment">// &quot;x&quot; limits</span>
      <span class="keywordflow">return</span> <span class="keyword">true</span>;
   }
</pre></div><p>The KD-tree index will be built on demand only upon call of any of the query methods provided by this class.</p>
<p>Notice that there is only ONE internal cached KD-tree, so if a method to query a 2D point is called, then another method for 3D points, then again the 2D method, three KD-trees will be built. So, try to group all the calls for a given dimensionality together or build different class instances for queries of each dimensionality, etc.</p>
<dl class="see"><dt><b>See also:</b></dt><dd>See some of the <a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a1f2be858dfb40e06cbae68375c98941b" title="CRTP helper method.">derived</a> classes for example implementations. See also the documentation of <a class="el" href="namespacenanoflann.html">nanoflann</a> </dd></dl>
</div>
<p><code>#include &lt;<a class="el" href="_k_d_tree_capable_8h_source.html">mrpt/math/KDTreeCapable.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for mrpt::math::KDTreeCapable:</div>
<div class="dyncontent">
<div class="center"><img src="classmrpt_1_1math_1_1_k_d_tree_capable__inherit__graph.png" border="0" usemap="#mrpt_1_1math_1_1_k_d_tree_capable_inherit__map" alt="Inheritance graph"/></div>
<map name="mrpt_1_1math_1_1_k_d_tree_capable_inherit__map" id="mrpt_1_1math_1_1_k_d_tree_capable_inherit__map">
<area shape="rect" id="node3" href="classmrpt_1_1math_1_1_k_d_tree_capable.html" title="mrpt::math::KDTreeCapable\&lt; CPointsMap \&gt;" alt="" coords="501,56,784,83"/><area shape="rect" id="node13" href="classmrpt_1_1math_1_1_k_d_tree_capable.html" title="mrpt::math::KDTreeCapable\&lt; CFeatureListKDTree\&lt; FEAT \&gt; \&gt;" alt="" coords="449,107,837,133"/><area shape="rect" id="node17" href="classmrpt_1_1math_1_1_k_d_tree_capable.html" title="mrpt::math::KDTreeCapable\&lt; CFeatureList \&gt;" alt="" coords="500,157,785,184"/><area shape="rect" id="node5" href="classmrpt_1_1slam_1_1_c_points_map.html" title="A cloud of points in 2D or 3D, which can be built from a sequence of laser scans or other sensors..." alt="" coords="915,56,1079,83"/><area shape="rect" id="node7" href="classmrpt_1_1slam_1_1_c_coloured_points_map.html" title="A map of 2D/3D points with individual colours (RGB)." alt="" coords="1159,5,1375,32"/><area shape="rect" id="node9" href="classmrpt_1_1slam_1_1_c_simple_points_map.html" title="A cloud of points in 2D or 3D, which can be built from a sequence of laser scans." alt="" coords="1165,56,1369,83"/><area shape="rect" id="node11" href="classmrpt_1_1slam_1_1_c_weighted_points_map.html" title="A cloud of points in 2D or 3D, which can be built from a sequence of laser scans." alt="" coords="1157,107,1376,133"/><area shape="rect" id="node15" href="classmrpt_1_1vision_1_1_c_feature_list_k_d_tree.html" title="Helper class: KD&#45;tree search class for vector&lt;KeyPoint&gt;: Call mark_as_outdated() to force rebuilding ..." alt="" coords="888,107,1107,133"/><area shape="rect" id="node19" href="classmrpt_1_1vision_1_1_c_feature_list.html" title="A list of visual features, to be used as output by detectors, as input/output by trackers, etc." alt="" coords="911,157,1084,184"/></map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="classmrpt_1_1math_1_1_k_d_tree_capable-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1math_1_1_k_d_tree_capable_1_1_t_k_d_tree_data_holder.html">TKDTreeDataHolder</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal structure with the KD-tree representation (mainly used to avoid copying pointers with the = operator)  <a href="structmrpt_1_1math_1_1_k_d_tree_capable_1_1_t_k_d_tree_data_holder.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1math_1_1_k_d_tree_capable_1_1_t_k_d_tree_search_params.html">TKDTreeSearchParams</a></td></tr>
<tr><td colspan="2"><h2><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html">KDTreeCapable</a>&lt; Derived, <br class="typebreak"/>
num_t, metric_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#ae848e2006de4cda4f4a50d0c057d086c">self_t</a></td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a64b7fa73845473d69b4677109826f167">KDTreeCapable</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a64b7fa73845473d69b4677109826f167"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#ad811570de62b2a46232e85050b483b42">~KDTreeCapable</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor (nothing needed to do here)  <a href="#ad811570de62b2a46232e85050b483b42"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const Derived &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a1f2be858dfb40e06cbae68375c98941b">derived</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">CRTP helper method.  <a href="#a1f2be858dfb40e06cbae68375c98941b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">Derived &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a0be68a7843dfe5d5dfa5206c06e3d4fb">derived</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">CRTP helper method.  <a href="#a0be68a7843dfe5d5dfa5206c06e3d4fb"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Public utility methods to query the KD-tree</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#ae9c0bb8eae4945085a0b03408adaa180">kdTreeClosestPoint2D</a> (float x0, float y0, float &amp;out_x, float &amp;out_y, float &amp;out_dist_sqr) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">KD Tree-based search for the closest point (only ONE) to some given 2D coordinates.  <a href="#ae9c0bb8eae4945085a0b03408adaa180"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#acccf80ebe86d7512a2eabb1f4cd7d5e7">kdTreeClosestPoint2D</a> (float x0, float y0, float &amp;out_dist_sqr) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#aa931ad90835e719b966cf61c317c6e6d">kdTreeClosestPoint2D</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;p0, <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;pOut, float &amp;outDistSqr) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#aa8a35f96809c7677b730f8282c77e1ac">kdTreeClosestPoint2DsqrError</a> (float x0, float y0) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Like kdTreeClosestPoint2D, but just return the square error from some point to its closest neighbor.  <a href="#aa8a35f96809c7677b730f8282c77e1ac"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#abee2f8ff656e8eca62d0444021577776">kdTreeClosestPoint2DsqrError</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;p0) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a9edfbd2ada1466c02e7bf136c39ca9dd">kdTreeTwoClosestPoint2D</a> (float x0, float y0, float &amp;out_x1, float &amp;out_y1, float &amp;out_x2, float &amp;out_y2, float &amp;out_dist_sqr1, float &amp;out_dist_sqr2) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">KD Tree-based search for the TWO closest point to some given 2D coordinates.  <a href="#a9edfbd2ada1466c02e7bf136c39ca9dd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#ad9af4bb0f1547c6718c7a5ef5f3e7591">kdTreeTwoClosestPoint2D</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;p0, <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;pOut1, <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;pOut2, float &amp;outDistSqr1, float &amp;outDistSqr2) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#abf55cf62066eeff4c9db446b040c481d">kdTreeNClosestPoint2D</a> (float x0, float y0, size_t knn, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;out_x, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;out_y, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;out_dist_sqr) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">KD Tree-based search for the N closest point to some given 2D coordinates.  <a href="#abf55cf62066eeff4c9db446b040c481d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a98394b54ad28658bdb397116bcd7a1d7">kdTreeNClosestPoint2D</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;p0, size_t N, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &gt; &amp;pOut, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;outDistSqr) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a17665632b43c9a65530cbc97581128bc">kdTreeNClosestPoint2DIdx</a> (float x0, float y0, size_t knn, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; int &gt; &amp;out_idx, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;out_dist_sqr) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">KD Tree-based search for the N closest point to some given 2D coordinates and returns their indexes.  <a href="#a17665632b43c9a65530cbc97581128bc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a6d16ab2d09b0e2f59b368ce43f4ba944">kdTreeNClosestPoint2DIdx</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;p0, size_t N, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; int &gt; &amp;outIdx, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;outDistSqr) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a89eab3ed58a61ba1dd561552562a1215">kdTreeClosestPoint3D</a> (float x0, float y0, float z0, float &amp;out_x, float &amp;out_y, float &amp;out_z, float &amp;out_dist_sqr) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">KD Tree-based search for the closest point (only ONE) to some given 3D coordinates.  <a href="#a89eab3ed58a61ba1dd561552562a1215"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a44afd69e49d989baa2973ffd7f7037e6">kdTreeClosestPoint3D</a> (float x0, float y0, float z0, float &amp;out_dist_sqr) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a2f18fd292f21f156b9ac5ae3503f44aa">kdTreeClosestPoint3D</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a> &amp;p0, <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a> &amp;pOut, float &amp;outDistSqr) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a9fd5af04995704c55b1a17f4515da803">kdTreeNClosestPoint3D</a> (float x0, float y0, float z0, size_t knn, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;out_x, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;out_y, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;out_z, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;out_dist_sqr) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">KD Tree-based search for the N closest points to some given 3D coordinates.  <a href="#a9fd5af04995704c55b1a17f4515da803"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a61a35dc755ae1225f6d09e6d81eefb05">kdTreeNClosestPoint3D</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a> &amp;p0, size_t N, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a> &gt; &amp;pOut, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;outDistSqr) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a343546d3f23d9c1df671c4d8c5c9eb39">kdTreeNClosestPoint3DIdx</a> (float x0, float y0, float z0, size_t knn, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; int &gt; &amp;out_idx, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;out_dist_sqr) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">KD Tree-based search for the N closest point to some given 3D coordinates and returns their indexes.  <a href="#a343546d3f23d9c1df671c4d8c5c9eb39"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#ab6112525867566c872402236781413e7">kdTreeNClosestPoint3DIdx</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a> &amp;p0, size_t N, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; int &gt; &amp;outIdx, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;outDistSqr) const </td></tr>
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmrpt_1_1math_1_1_k_d_tree_capable_1_1_t_k_d_tree_search_params.html">TKDTreeSearchParams</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a65f5da9a222c2c7b913f7e6242c6c77e">kdtree_search_params</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters to tune the ANN searches.  <a href="#a65f5da9a222c2c7b913f7e6242c6c77e"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a257dd22c1a52d1150117195aaf416f16">kdtree_mark_as_outdated</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">To be called by child classes when KD tree data changes.  <a href="#a257dd22c1a52d1150117195aaf416f16"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#ac0bd164a47e9c98506a301d2146b316e">rebuild_kdTree_2D</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Rebuild, if needed the KD-tree for 2D (nDims=2), 3D (nDims=3), ... asking the child class for the data points.  <a href="#ac0bd164a47e9c98506a301d2146b316e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a71540b68861ea0afaea0b0dd24bd7c14">rebuild_kdTree_3D</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Rebuild, if needed the KD-tree for 2D (nDims=2), 3D (nDims=3), ... asking the child class for the data points.  <a href="#a71540b68861ea0afaea0b0dd24bd7c14"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a02359aa8c2c687a9195414692d8f7036">rebuild_kdTree_Nd</a> (const size_t nDims) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Rebuild, if needed the KD-tree for 2D (nDims=2), 3D (nDims=3), ... asking the child class for the data points.  <a href="#a02359aa8c2c687a9195414692d8f7036"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmrpt_1_1math_1_1_k_d_tree_capable_1_1_t_k_d_tree_data_holder.html">TKDTreeDataHolder</a>&lt; 2 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a3abb2bf223afb15c769598d0ef65bcd9">m_kdtree2d_data</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmrpt_1_1math_1_1_k_d_tree_capable_1_1_t_k_d_tree_data_holder.html">TKDTreeDataHolder</a>&lt; 3 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a2fe9f0119fbc4ed259f761b4cb42eba6">m_kdtree3d_data</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmrpt_1_1math_1_1_k_d_tree_capable_1_1_t_k_d_tree_data_holder.html">TKDTreeDataHolder</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a18737e23301e1deae98c33adb52566fc">m_kdtreeNd_data</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#af3dfc28c75edd8ba3e8ea4b4caced0aa">m_kdtree_is_uptodate</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">whether the KD tree needs to be rebuilt or not.  <a href="#af3dfc28c75edd8ba3e8ea4b4caced0aa"></a><br/></td></tr>
</table>
<hr/><h2>Member Typedef Documentation</h2>
<a class="anchor" id="ae848e2006de4cda4f4a50d0c057d086c"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::self_t" ref="ae848e2006de4cda4f4a50d0c057d086c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html">KDTreeCapable</a>&lt;Derived,num_t,metric_t&gt; <a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#ae848e2006de4cda4f4a50d0c057d086c">mrpt::math::KDTreeCapable::self_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00090">90</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a64b7fa73845473d69b4677109826f167"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::KDTreeCapable" ref="a64b7fa73845473d69b4677109826f167" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::math::KDTreeCapable::KDTreeCapable </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor. </p>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00094">94</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<a class="anchor" id="ad811570de62b2a46232e85050b483b42"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::~KDTreeCapable" ref="ad811570de62b2a46232e85050b483b42" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::math::KDTreeCapable::~KDTreeCapable </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Destructor (nothing needed to do here) </p>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00097">97</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a1f2be858dfb40e06cbae68375c98941b"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::derived" ref="a1f2be858dfb40e06cbae68375c98941b" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const Derived&amp; mrpt::math::KDTreeCapable::derived </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>CRTP helper method. </p>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00100">100</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00136">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeClosestPoint2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00229">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeTwoClosestPoint2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00293">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00394">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeClosestPoint3D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00480">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint3D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00615">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00640">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_3D()</a>, and <a class="el" href="_k_d_tree_capable_8h_source.html#l00665">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_Nd()</a>.</p>

</div>
</div>
<a class="anchor" id="a0be68a7843dfe5d5dfa5206c06e3d4fb"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::derived" ref="a0be68a7843dfe5d5dfa5206c06e3d4fb" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Derived&amp; mrpt::math::KDTreeCapable::derived </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>CRTP helper method. </p>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00102">102</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<a class="anchor" id="a257dd22c1a52d1150117195aaf416f16"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdtree_mark_as_outdated" ref="a257dd22c1a52d1150117195aaf416f16" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::KDTreeCapable::kdtree_mark_as_outdated </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>To be called by child classes when KD tree data changes. </p>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00575">575</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<a class="anchor" id="ae9c0bb8eae4945085a0b03408adaa180"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeClosestPoint2D" ref="ae9c0bb8eae4945085a0b03408adaa180" args="(float x0, float y0, float &amp;out_x, float &amp;out_y, float &amp;out_dist_sqr) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t mrpt::math::KDTreeCapable::kdTreeClosestPoint2D </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>x0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>y0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>out_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>out_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>out_dist_sqr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>KD Tree-based search for the closest point (only ONE) to some given 2D coordinates. </p>
<p>This method automatically build the "m_kdtree_data" structure when:</p>
<ul>
<li>It is called for the first time</li>
<li>The map has changed</li>
<li>The KD-tree was build for 3D.</li>
</ul>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x0</td><td>The X coordinate of the query. </td></tr>
    <tr><td class="paramname">y0</td><td>The Y coordinate of the query. </td></tr>
    <tr><td class="paramname">out_x</td><td>The X coordinate of the found closest correspondence. </td></tr>
    <tr><td class="paramname">out_y</td><td>The Y coordinate of the found closest correspondence. </td></tr>
    <tr><td class="paramname">out_dist_sqr</td><td>The square distance between the query and the returned point.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The index of the closest point in the map array. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a89eab3ed58a61ba1dd561552562a1215" title="KD Tree-based search for the closest point (only ONE) to some given 3D coordinates.">kdTreeClosestPoint3D</a>, <a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a9edfbd2ada1466c02e7bf136c39ca9dd" title="KD Tree-based search for the TWO closest point to some given 2D coordinates.">kdTreeTwoClosestPoint2D</a> </dd></dl>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00136">136</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00189">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeClosestPoint2D()</a>, and <a class="el" href="_k_d_tree_capable_8h_source.html#l00199">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeClosestPoint2DsqrError()</a>.</p>

</div>
</div>
<a class="anchor" id="acccf80ebe86d7512a2eabb1f4cd7d5e7"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeClosestPoint2D" ref="acccf80ebe86d7512a2eabb1f4cd7d5e7" args="(float x0, float y0, float &amp;out_dist_sqr) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t mrpt::math::KDTreeCapable::kdTreeClosestPoint2D </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>x0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>y0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>out_dist_sqr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00166">166</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa931ad90835e719b966cf61c317c6e6d"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeClosestPoint2D" ref="aa931ad90835e719b966cf61c317c6e6d" args="(const TPoint2D &amp;p0, TPoint2D &amp;pOut, float &amp;outDistSqr) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t mrpt::math::KDTreeCapable::kdTreeClosestPoint2D </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;&#160;</td>
          <td class="paramname"><em>p0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;&#160;</td>
          <td class="paramname"><em>pOut</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>outDistSqr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00189">189</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa8a35f96809c7677b730f8282c77e1ac"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeClosestPoint2DsqrError" ref="aa8a35f96809c7677b730f8282c77e1ac" args="(float x0, float y0) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float mrpt::math::KDTreeCapable::kdTreeClosestPoint2DsqrError </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>x0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>y0</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Like kdTreeClosestPoint2D, but just return the square error from some point to its closest neighbor. </p>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00199">199</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00208">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeClosestPoint2DsqrError()</a>.</p>

</div>
</div>
<a class="anchor" id="abee2f8ff656e8eca62d0444021577776"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeClosestPoint2DsqrError" ref="abee2f8ff656e8eca62d0444021577776" args="(const TPoint2D &amp;p0) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float mrpt::math::KDTreeCapable::kdTreeClosestPoint2DsqrError </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;&#160;</td>
          <td class="paramname"><em>p0</em></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00208">208</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<a class="anchor" id="a89eab3ed58a61ba1dd561552562a1215"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeClosestPoint3D" ref="a89eab3ed58a61ba1dd561552562a1215" args="(float x0, float y0, float z0, float &amp;out_x, float &amp;out_y, float &amp;out_z, float &amp;out_dist_sqr) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t mrpt::math::KDTreeCapable::kdTreeClosestPoint3D </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>x0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>y0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>z0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>out_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>out_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>out_z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>out_dist_sqr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>KD Tree-based search for the closest point (only ONE) to some given 3D coordinates. </p>
<p>This method automatically build the "m_kdtree_data" structure when:</p>
<ul>
<li>It is called for the first time</li>
<li>The map has changed</li>
<li>The KD-tree was build for 2D.</li>
</ul>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x0</td><td>The X coordinate of the query. </td></tr>
    <tr><td class="paramname">y0</td><td>The Y coordinate of the query. </td></tr>
    <tr><td class="paramname">z0</td><td>The Z coordinate of the query. </td></tr>
    <tr><td class="paramname">out_x</td><td>The X coordinate of the found closest correspondence. </td></tr>
    <tr><td class="paramname">out_y</td><td>The Y coordinate of the found closest correspondence. </td></tr>
    <tr><td class="paramname">out_z</td><td>The Z coordinate of the found closest correspondence. </td></tr>
    <tr><td class="paramname">out_dist_sqr</td><td>The square distance between the query and the returned point.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The index of the closest point in the map array. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#ae9c0bb8eae4945085a0b03408adaa180" title="KD Tree-based search for the closest point (only ONE) to some given 2D coordinates.">kdTreeClosestPoint2D</a> </dd></dl>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00394">394</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00454">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeClosestPoint3D()</a>.</p>

</div>
</div>
<a class="anchor" id="a44afd69e49d989baa2973ffd7f7037e6"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeClosestPoint3D" ref="a44afd69e49d989baa2973ffd7f7037e6" args="(float x0, float y0, float z0, float &amp;out_dist_sqr) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t mrpt::math::KDTreeCapable::kdTreeClosestPoint3D </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>x0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>y0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>z0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>out_dist_sqr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00428">428</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<a class="anchor" id="a2f18fd292f21f156b9ac5ae3503f44aa"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeClosestPoint3D" ref="a2f18fd292f21f156b9ac5ae3503f44aa" args="(const TPoint3D &amp;p0, TPoint3D &amp;pOut, float &amp;outDistSqr) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t mrpt::math::KDTreeCapable::kdTreeClosestPoint3D </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a> &amp;&#160;</td>
          <td class="paramname"><em>p0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a> &amp;&#160;</td>
          <td class="paramname"><em>pOut</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>outDistSqr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00454">454</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<a class="anchor" id="abf55cf62066eeff4c9db446b040c481d"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeNClosestPoint2D" ref="abf55cf62066eeff4c9db446b040c481d" args="(float x0, float y0, size_t knn, std::vector&lt; float &gt; &amp;out_x, std::vector&lt; float &gt; &amp;out_y, std::vector&lt; float &gt; &amp;out_dist_sqr) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt;int&gt; mrpt::math::KDTreeCapable::kdTreeNClosestPoint2D </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>x0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>y0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>knn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>out_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>out_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>out_dist_sqr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>KD Tree-based search for the N closest point to some given 2D coordinates. </p>
<p>This method automatically build the "m_kdtree_data" structure when:</p>
<ul>
<li>It is called for the first time</li>
<li>The map has changed</li>
<li>The KD-tree was build for 3D.</li>
</ul>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x0</td><td>The X coordinate of the query. </td></tr>
    <tr><td class="paramname">y0</td><td>The Y coordinate of the query. </td></tr>
    <tr><td class="paramname">N</td><td>The number of closest points to search. </td></tr>
    <tr><td class="paramname">out_x</td><td>The vector containing the X coordinates of the correspondences. </td></tr>
    <tr><td class="paramname">out_y</td><td>The vector containing the Y coordinates of the correspondences. </td></tr>
    <tr><td class="paramname">out_dist_sqr</td><td>The vector containing the square distance between the query and the returned points.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The list of indices </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#ae9c0bb8eae4945085a0b03408adaa180" title="KD Tree-based search for the closest point (only ONE) to some given 2D coordinates.">kdTreeClosestPoint2D</a> </dd>
<dd>
<a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a9edfbd2ada1466c02e7bf136c39ca9dd" title="KD Tree-based search for the TWO closest point to some given 2D coordinates.">kdTreeTwoClosestPoint2D</a> </dd></dl>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00293">293</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00326">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint2D()</a>.</p>

</div>
</div>
<a class="anchor" id="a98394b54ad28658bdb397116bcd7a1d7"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeNClosestPoint2D" ref="a98394b54ad28658bdb397116bcd7a1d7" args="(const TPoint2D &amp;p0, size_t N, std::vector&lt; TPoint2D &gt; &amp;pOut, std::vector&lt; float &gt; &amp;outDistSqr) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt;int&gt; mrpt::math::KDTreeCapable::kdTreeNClosestPoint2D </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;&#160;</td>
          <td class="paramname"><em>p0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>N</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>pOut</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>outDistSqr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00326">326</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<a class="anchor" id="a17665632b43c9a65530cbc97581128bc"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeNClosestPoint2DIdx" ref="a17665632b43c9a65530cbc97581128bc" args="(float x0, float y0, size_t knn, std::vector&lt; int &gt; &amp;out_idx, std::vector&lt; float &gt; &amp;out_dist_sqr) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::KDTreeCapable::kdTreeNClosestPoint2DIdx </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>x0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>y0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>knn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>out_idx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>out_dist_sqr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>KD Tree-based search for the N closest point to some given 2D coordinates and returns their indexes. </p>
<p>This method automatically build the "m_kdtree_data" structure when:</p>
<ul>
<li>It is called for the first time</li>
<li>The map has changed</li>
<li>The KD-tree was build for 3D.</li>
</ul>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x0</td><td>The X coordinate of the query. </td></tr>
    <tr><td class="paramname">y0</td><td>The Y coordinate of the query. </td></tr>
    <tr><td class="paramname">N</td><td>The number of closest points to search. </td></tr>
    <tr><td class="paramname">out_idx</td><td>The indexes of the found closest correspondence. </td></tr>
    <tr><td class="paramname">out_dist_sqr</td><td>The square distance between the query and the returned point.</td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#ae9c0bb8eae4945085a0b03408adaa180" title="KD Tree-based search for the closest point (only ONE) to some given 2D coordinates.">kdTreeClosestPoint2D</a> </dd></dl>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00351">351</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00373">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint2DIdx()</a>.</p>

</div>
</div>
<a class="anchor" id="a6d16ab2d09b0e2f59b368ce43f4ba944"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeNClosestPoint2DIdx" ref="a6d16ab2d09b0e2f59b368ce43f4ba944" args="(const TPoint2D &amp;p0, size_t N, std::vector&lt; int &gt; &amp;outIdx, std::vector&lt; float &gt; &amp;outDistSqr) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::KDTreeCapable::kdTreeNClosestPoint2DIdx </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;&#160;</td>
          <td class="paramname"><em>p0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>N</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>outIdx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>outDistSqr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00373">373</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<a class="anchor" id="a9fd5af04995704c55b1a17f4515da803"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeNClosestPoint3D" ref="a9fd5af04995704c55b1a17f4515da803" args="(float x0, float y0, float z0, size_t knn, std::vector&lt; float &gt; &amp;out_x, std::vector&lt; float &gt; &amp;out_y, std::vector&lt; float &gt; &amp;out_z, std::vector&lt; float &gt; &amp;out_dist_sqr) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::KDTreeCapable::kdTreeNClosestPoint3D </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>x0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>y0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>z0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>knn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>out_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>out_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>out_z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>out_dist_sqr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>KD Tree-based search for the N closest points to some given 3D coordinates. </p>
<p>This method automatically build the "m_kdtree_data" structure when:</p>
<ul>
<li>It is called for the first time</li>
<li>The map has changed</li>
<li>The KD-tree was build for 2D.</li>
</ul>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x0</td><td>The X coordinate of the query. </td></tr>
    <tr><td class="paramname">y0</td><td>The Y coordinate of the query. </td></tr>
    <tr><td class="paramname">z0</td><td>The Z coordinate of the query. </td></tr>
    <tr><td class="paramname">N</td><td>The number of closest points to search. </td></tr>
    <tr><td class="paramname">out_x</td><td>The vector containing the X coordinates of the correspondences. </td></tr>
    <tr><td class="paramname">out_y</td><td>The vector containing the Y coordinates of the correspondences. </td></tr>
    <tr><td class="paramname">out_z</td><td>The vector containing the Z coordinates of the correspondences. </td></tr>
    <tr><td class="paramname">out_dist_sqr</td><td>The vector containing the square distance between the query and the returned points.</td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#abf55cf62066eeff4c9db446b040c481d" title="KD Tree-based search for the N closest point to some given 2D coordinates.">kdTreeNClosestPoint2D</a> </dd></dl>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00480">480</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00517">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint3D()</a>.</p>

</div>
</div>
<a class="anchor" id="a61a35dc755ae1225f6d09e6d81eefb05"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeNClosestPoint3D" ref="a61a35dc755ae1225f6d09e6d81eefb05" args="(const TPoint3D &amp;p0, size_t N, std::vector&lt; TPoint3D &gt; &amp;pOut, std::vector&lt; float &gt; &amp;outDistSqr) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::KDTreeCapable::kdTreeNClosestPoint3D </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a> &amp;&#160;</td>
          <td class="paramname"><em>p0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>N</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>pOut</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>outDistSqr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00517">517</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<a class="anchor" id="a343546d3f23d9c1df671c4d8c5c9eb39"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeNClosestPoint3DIdx" ref="a343546d3f23d9c1df671c4d8c5c9eb39" args="(float x0, float y0, float z0, size_t knn, std::vector&lt; int &gt; &amp;out_idx, std::vector&lt; float &gt; &amp;out_dist_sqr) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::KDTreeCapable::kdTreeNClosestPoint3DIdx </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>x0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>y0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>z0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>knn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>out_idx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>out_dist_sqr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>KD Tree-based search for the N closest point to some given 3D coordinates and returns their indexes. </p>
<p>This method automatically build the "m_kdtree_data" structure when:</p>
<ul>
<li>It is called for the first time</li>
<li>The map has changed</li>
<li>The KD-tree was build for 2D.</li>
</ul>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x0</td><td>The X coordinate of the query. </td></tr>
    <tr><td class="paramname">y0</td><td>The Y coordinate of the query. </td></tr>
    <tr><td class="paramname">z0</td><td>The Z coordinate of the query. </td></tr>
    <tr><td class="paramname">N</td><td>The number of closest points to search. </td></tr>
    <tr><td class="paramname">out_idx</td><td>The indexes of the found closest correspondence. </td></tr>
    <tr><td class="paramname">out_dist_sqr</td><td>The square distance between the query and the returned point.</td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#ae9c0bb8eae4945085a0b03408adaa180" title="KD Tree-based search for the closest point (only ONE) to some given 2D coordinates.">kdTreeClosestPoint2D</a> </dd></dl>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00543">543</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00567">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint3DIdx()</a>.</p>

</div>
</div>
<a class="anchor" id="ab6112525867566c872402236781413e7"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeNClosestPoint3DIdx" ref="ab6112525867566c872402236781413e7" args="(const TPoint3D &amp;p0, size_t N, std::vector&lt; int &gt; &amp;outIdx, std::vector&lt; float &gt; &amp;outDistSqr) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::KDTreeCapable::kdTreeNClosestPoint3DIdx </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a> &amp;&#160;</td>
          <td class="paramname"><em>p0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>N</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>outIdx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>outDistSqr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00567">567</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<a class="anchor" id="a9edfbd2ada1466c02e7bf136c39ca9dd"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeTwoClosestPoint2D" ref="a9edfbd2ada1466c02e7bf136c39ca9dd" args="(float x0, float y0, float &amp;out_x1, float &amp;out_y1, float &amp;out_x2, float &amp;out_y2, float &amp;out_dist_sqr1, float &amp;out_dist_sqr2) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::KDTreeCapable::kdTreeTwoClosestPoint2D </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>x0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>y0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>out_x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>out_y1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>out_x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>out_y2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>out_dist_sqr1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>out_dist_sqr2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>KD Tree-based search for the TWO closest point to some given 2D coordinates. </p>
<p>This method automatically build the "m_kdtree_data" structure when:</p>
<ul>
<li>It is called for the first time</li>
<li>The map has changed</li>
<li>The KD-tree was build for 3D.</li>
</ul>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x0</td><td>The X coordinate of the query. </td></tr>
    <tr><td class="paramname">y0</td><td>The Y coordinate of the query. </td></tr>
    <tr><td class="paramname">out_x1</td><td>The X coordinate of the first correspondence. </td></tr>
    <tr><td class="paramname">out_y1</td><td>The Y coordinate of the first correspondence. </td></tr>
    <tr><td class="paramname">out_x2</td><td>The X coordinate of the second correspondence. </td></tr>
    <tr><td class="paramname">out_y2</td><td>The Y coordinate of the second correspondence. </td></tr>
    <tr><td class="paramname">out_dist_sqr1</td><td>The square distance between the query and the first returned point. </td></tr>
    <tr><td class="paramname">out_dist_sqr2</td><td>The square distance between the query and the second returned point.</td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#ae9c0bb8eae4945085a0b03408adaa180" title="KD Tree-based search for the closest point (only ONE) to some given 2D coordinates.">kdTreeClosestPoint2D</a> </dd></dl>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00229">229</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00266">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeTwoClosestPoint2D()</a>.</p>

</div>
</div>
<a class="anchor" id="ad9af4bb0f1547c6718c7a5ef5f3e7591"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdTreeTwoClosestPoint2D" ref="ad9af4bb0f1547c6718c7a5ef5f3e7591" args="(const TPoint2D &amp;p0, TPoint2D &amp;pOut1, TPoint2D &amp;pOut2, float &amp;outDistSqr1, float &amp;outDistSqr2) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::KDTreeCapable::kdTreeTwoClosestPoint2D </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;&#160;</td>
          <td class="paramname"><em>p0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;&#160;</td>
          <td class="paramname"><em>pOut1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">TPoint2D</a> &amp;&#160;</td>
          <td class="paramname"><em>pOut2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>outDistSqr1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>outDistSqr2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00266">266</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<a class="anchor" id="ac0bd164a47e9c98506a301d2146b316e"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::rebuild_kdTree_2D" ref="ac0bd164a47e9c98506a301d2146b316e" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::KDTreeCapable::rebuild_kdTree_2D </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Rebuild, if needed the KD-tree for 2D (nDims=2), 3D (nDims=3), ... asking the child class for the data points. </p>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00615">615</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00136">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeClosestPoint2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00229">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeTwoClosestPoint2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00293">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint2D()</a>, and <a class="el" href="_k_d_tree_capable_8h_source.html#l00351">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint2DIdx()</a>.</p>

</div>
</div>
<a class="anchor" id="a71540b68861ea0afaea0b0dd24bd7c14"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::rebuild_kdTree_3D" ref="a71540b68861ea0afaea0b0dd24bd7c14" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::KDTreeCapable::rebuild_kdTree_3D </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Rebuild, if needed the KD-tree for 2D (nDims=2), 3D (nDims=3), ... asking the child class for the data points. </p>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00640">640</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00394">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeClosestPoint3D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00480">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint3D()</a>, and <a class="el" href="_k_d_tree_capable_8h_source.html#l00543">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint3DIdx()</a>.</p>

</div>
</div>
<a class="anchor" id="a02359aa8c2c687a9195414692d8f7036"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::rebuild_kdTree_Nd" ref="a02359aa8c2c687a9195414692d8f7036" args="(const size_t nDims) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::KDTreeCapable::rebuild_kdTree_Nd </td>
          <td>(</td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>nDims</em></td><td>)</td>
          <td> const<code> [inline, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Rebuild, if needed the KD-tree for 2D (nDims=2), 3D (nDims=3), ... asking the child class for the data points. </p>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00665">665</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="a65f5da9a222c2c7b913f7e6242c6c77e"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::kdtree_search_params" ref="a65f5da9a222c2c7b913f7e6242c6c77e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmrpt_1_1math_1_1_k_d_tree_capable_1_1_t_k_d_tree_search_params.html">TKDTreeSearchParams</a> <a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a65f5da9a222c2c7b913f7e6242c6c77e">mrpt::math::KDTreeCapable::kdtree_search_params</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Parameters to tune the ANN searches. </p>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00116">116</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00136">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeClosestPoint2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00229">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeTwoClosestPoint2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00293">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00351">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint2DIdx()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00394">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeClosestPoint3D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00480">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint3D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00543">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint3DIdx()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00615">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00640">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_3D()</a>, and <a class="el" href="_k_d_tree_capable_8h_source.html#l00665">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_Nd()</a>.</p>

</div>
</div>
<a class="anchor" id="a3abb2bf223afb15c769598d0ef65bcd9"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::m_kdtree2d_data" ref="a3abb2bf223afb15c769598d0ef65bcd9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmrpt_1_1math_1_1_k_d_tree_capable_1_1_t_k_d_tree_data_holder.html">TKDTreeDataHolder</a>&lt;2&gt; <a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a3abb2bf223afb15c769598d0ef65bcd9">mrpt::math::KDTreeCapable::m_kdtree2d_data</a><code> [mutable, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00609">609</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00136">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeClosestPoint2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00229">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeTwoClosestPoint2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00293">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00351">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint2DIdx()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00615">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00640">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_3D()</a>, and <a class="el" href="_k_d_tree_capable_8h_source.html#l00665">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_Nd()</a>.</p>

</div>
</div>
<a class="anchor" id="a2fe9f0119fbc4ed259f761b4cb42eba6"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::m_kdtree3d_data" ref="a2fe9f0119fbc4ed259f761b4cb42eba6" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmrpt_1_1math_1_1_k_d_tree_capable_1_1_t_k_d_tree_data_holder.html">TKDTreeDataHolder</a>&lt;3&gt; <a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a2fe9f0119fbc4ed259f761b4cb42eba6">mrpt::math::KDTreeCapable::m_kdtree3d_data</a><code> [mutable, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00610">610</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00394">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeClosestPoint3D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00480">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint3D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00543">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdTreeNClosestPoint3DIdx()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00615">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00640">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_3D()</a>, and <a class="el" href="_k_d_tree_capable_8h_source.html#l00665">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_Nd()</a>.</p>

</div>
</div>
<a class="anchor" id="af3dfc28c75edd8ba3e8ea4b4caced0aa"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::m_kdtree_is_uptodate" ref="af3dfc28c75edd8ba3e8ea4b4caced0aa" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#af3dfc28c75edd8ba3e8ea4b4caced0aa">mrpt::math::KDTreeCapable::m_kdtree_is_uptodate</a><code> [mutable, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>whether the KD tree needs to be rebuilt or not. </p>

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00612">612</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00575">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::kdtree_mark_as_outdated()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00615">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00640">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_3D()</a>, and <a class="el" href="_k_d_tree_capable_8h_source.html#l00665">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_Nd()</a>.</p>

</div>
</div>
<a class="anchor" id="a18737e23301e1deae98c33adb52566fc"></a><!-- doxytag: member="mrpt::math::KDTreeCapable::m_kdtreeNd_data" ref="a18737e23301e1deae98c33adb52566fc" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmrpt_1_1math_1_1_k_d_tree_capable_1_1_t_k_d_tree_data_holder.html">TKDTreeDataHolder</a> <a class="el" href="classmrpt_1_1math_1_1_k_d_tree_capable.html#a18737e23301e1deae98c33adb52566fc">mrpt::math::KDTreeCapable::m_kdtreeNd_data</a><code> [mutable, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_k_d_tree_capable_8h_source.html#l00611">611</a> of file <a class="el" href="_k_d_tree_capable_8h_source.html">KDTreeCapable.h</a>.</p>

<p>Referenced by <a class="el" href="_k_d_tree_capable_8h_source.html#l00615">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_2D()</a>, <a class="el" href="_k_d_tree_capable_8h_source.html#l00640">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_3D()</a>, and <a class="el" href="_k_d_tree_capable_8h_source.html#l00665">mrpt::math::KDTreeCapable&lt; CFeatureList &gt;::rebuild_kdTree_Nd()</a>.</p>

</div>
</div>
</div>
<br><hr><br> <table border="0" width="100%"> <tr> <td> Page generated by <a href="http://www.doxygen.org" target="_blank">Doxygen 1.7.5</a> for MRPT 0.9.5 SVN: at Sun Sep 25 17:20:18 UTC 2011</td><td></td> <td width="100"> </td> <td width="150">  </td></tr> </table>  </body></html>