Sophie

Sophie

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

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>CPointPDF.h Source File</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><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<div class="header">
  <div class="headertitle">
<div class="title">CPointPDF.h</div>  </div>
</div>
<div class="contents">
<a href="_c_point_p_d_f_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* +---------------------------------------------------------------------------+</span>
<a name="l00002"></a>00002 <span class="comment">   |          The Mobile Robot Programming Toolkit (MRPT) C++ library          |</span>
<a name="l00003"></a>00003 <span class="comment">   |                                                                           |</span>
<a name="l00004"></a>00004 <span class="comment">   |                       http://www.mrpt.org/                                |</span>
<a name="l00005"></a>00005 <span class="comment">   |                                                                           |</span>
<a name="l00006"></a>00006 <span class="comment">   |   Copyright (C) 2005-2011  University of Malaga                           |</span>
<a name="l00007"></a>00007 <span class="comment">   |                                                                           |</span>
<a name="l00008"></a>00008 <span class="comment">   |    This software was written by the Machine Perception and Intelligent    |</span>
<a name="l00009"></a>00009 <span class="comment">   |      Robotics Lab, University of Malaga (Spain).                          |</span>
<a name="l00010"></a>00010 <span class="comment">   |    Contact: Jose-Luis Blanco  &lt;jlblanco@ctima.uma.es&gt;                     |</span>
<a name="l00011"></a>00011 <span class="comment">   |                                                                           |</span>
<a name="l00012"></a>00012 <span class="comment">   |  This file is part of the MRPT project.                                   |</span>
<a name="l00013"></a>00013 <span class="comment">   |                                                                           |</span>
<a name="l00014"></a>00014 <span class="comment">   |     MRPT is free software: you can redistribute it and/or modify          |</span>
<a name="l00015"></a>00015 <span class="comment">   |     it under the terms of the GNU General Public License as published by  |</span>
<a name="l00016"></a>00016 <span class="comment">   |     the Free Software Foundation, either version 3 of the License, or     |</span>
<a name="l00017"></a>00017 <span class="comment">   |     (at your option) any later version.                                   |</span>
<a name="l00018"></a>00018 <span class="comment">   |                                                                           |</span>
<a name="l00019"></a>00019 <span class="comment">   |   MRPT is distributed in the hope that it will be useful,                 |</span>
<a name="l00020"></a>00020 <span class="comment">   |     but WITHOUT ANY WARRANTY; without even the implied warranty of        |</span>
<a name="l00021"></a>00021 <span class="comment">   |     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         |</span>
<a name="l00022"></a>00022 <span class="comment">   |     GNU General Public License for more details.                          |</span>
<a name="l00023"></a>00023 <span class="comment">   |                                                                           |</span>
<a name="l00024"></a>00024 <span class="comment">   |     You should have received a copy of the GNU General Public License     |</span>
<a name="l00025"></a>00025 <span class="comment">   |     along with MRPT.  If not, see &lt;http://www.gnu.org/licenses/&gt;.         |</span>
<a name="l00026"></a>00026 <span class="comment">   |                                                                           |</span>
<a name="l00027"></a>00027 <span class="comment">   +---------------------------------------------------------------------------+ */</span>
<a name="l00028"></a>00028 <span class="preprocessor">#ifndef CPointPDF_H</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define CPointPDF_H</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span>
<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;<a class="code" href="_c_serializable_8h.html">mrpt/utils/CSerializable.h</a>&gt;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;<a class="code" href="_c_probability_density_function_8h.html">mrpt/utils/CProbabilityDensityFunction.h</a>&gt;</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;<a class="code" href="_c_point3_d_8h.html">mrpt/poses/CPoint3D.h</a>&gt;</span>
<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;<a class="code" href="_c_pose_p_d_f_8h.html">mrpt/poses/CPosePDF.h</a>&gt;</span>
<a name="l00035"></a>00035 
<a name="l00036"></a>00036 <span class="keyword">namespace </span>mrpt
<a name="l00037"></a>00037 {
<a name="l00038"></a>00038 <span class="keyword">namespace </span>poses
<a name="l00039"></a>00039 {
<a name="l00040"></a>00040         <span class="keyword">using namespace </span>mrpt::math;
<a name="l00041"></a>00041 
<a name="l00042"></a>00042 
<a name="l00043"></a>00043 
<a name="l00044"></a><a class="code" href="structmrpt_1_1poses_1_1_c_point_p_d_f_ptr.html#a4e57a7c1e911ffe2734996e1d1050b22">00044</a>         <a class="code" href="_c_serializable_8h.html#ab89b7a3de0a1baf5a5af4454add7d0f8" title="This declaration must be inserted in all CSerializable classes definition, before the class declarati...">DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE</a>( <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html" title="Declares a class that represents a Probability Distribution function (PDF) of a 3D point (x...">CPointPDF</a>, <a class="code" href="classmrpt_1_1utils_1_1_c_serializable.html" title="The virtual base class which provides a unified interface for all persistent objects in MRPT...">mrpt::utils::CSerializable</a> )
<a name="l00045"></a>00045 
<a name="l00046"></a>00046         <span class="comment">/** Declares a class that represents a Probability Distribution</span>
<a name="l00047"></a>00047 <span class="comment">         *    function (PDF) of a 3D point (x,y,z).</span>
<a name="l00048"></a>00048 <span class="comment">         *   This class is just the base class for unifying many diferent</span>
<a name="l00049"></a>00049 <span class="comment">         *    ways this PDF can be implemented.</span>
<a name="l00050"></a>00050 <span class="comment">         *</span>
<a name="l00051"></a>00051 <span class="comment">         *  For convenience, a pose composition is also defined for any</span>
<a name="l00052"></a>00052 <span class="comment">         *    PDF derived class, changeCoordinatesReference, in the form of a method rather than an operator.</span>
<a name="l00053"></a>00053 <span class="comment">         *</span>
<a name="l00054"></a>00054 <span class="comment">         *  For a similar class for 6D poses (a 3D point with attitude), see CPose3DPDF</span>
<a name="l00055"></a>00055 <span class="comment">         *</span>
<a name="l00056"></a>00056 <span class="comment">         *  See also the tutorial on &lt;a href=&quot;http://www.mrpt.org/Probability_Density_Distributions_Over_Spatial_Representations&quot;&gt;probabilistic spatial representations in the MRPT&lt;/a&gt;.</span>
<a name="l00057"></a>00057 <span class="comment">         *</span>
<a name="l00058"></a>00058 <span class="comment">         * \sa CPoint3D</span>
<a name="l00059"></a>00059 <span class="comment">         * \ingroup poses_pdf_grp</span>
<a name="l00060"></a>00060 <span class="comment">         */</span>
<a name="l00061"></a>00061         class <a class="code" href="base_2include_2mrpt_2base_2link__pragmas_8h.html#a6045fa0129b1a3d6c8bf895470e66574">BASE_IMPEXP</a> <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html" title="Declares a class that represents a Probability Distribution function (PDF) of a 3D point (x...">CPointPDF</a> : public mrpt::utils::<a class="code" href="classmrpt_1_1utils_1_1_c_serializable.html" title="The virtual base class which provides a unified interface for all persistent objects in MRPT...">CSerializable</a>, public mrpt::utils::<a class="code" href="classmrpt_1_1utils_1_1_c_probability_density_function.html" title="A generic template for probability density distributions (PDFs).">CProbabilityDensityFunction</a>&lt;<a class="code" href="classmrpt_1_1poses_1_1_c_point3_d.html" title="A class used to store a 3D point.">CPoint3D</a>,3&gt;
<a name="l00062"></a>00062         {
<a name="l00063"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html#a6fec28a53e20dfc1c4d046c26f9f7b48">00063</a>                 <a class="code" href="_c_serializable_8h.html#a5876f72cf51bfb66a82bf81cc493febc" title="This declaration must be inserted in virtual CSerializable classes definition:">DEFINE_VIRTUAL_SERIALIZABLE</a>( <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html" title="Declares a class that represents a Probability Distribution function (PDF) of a 3D point (x...">CPointPDF</a> )
<a name="l00064"></a>00064 
<a name="l00065"></a>00065          public:<span class="comment"></span>
<a name="l00066"></a>00066 <span class="comment">                /** Copy operator, translating if necesary (for example, between particles and gaussian representations)</span>
<a name="l00067"></a>00067 <span class="comment">                  */</span>
<a name="l00068"></a>00068                 virtual <span class="keywordtype">void</span>  copyFrom(const <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html" title="Declares a class that represents a Probability Distribution function (PDF) of a 3D point (x...">CPointPDF</a> &amp;o) = 0;
<a name="l00069"></a>00069 
<a name="l00070"></a>00070 <span class="comment"></span>
<a name="l00071"></a>00071 <span class="comment">                /** Bayesian fusion of two point distributions (product of two distributions-&gt;new distribution), then save the result in this object (WARNING: See implementing classes to see classes that can and cannot be mixtured!)</span>
<a name="l00072"></a>00072 <span class="comment">                  * \param p1 The first distribution to fuse</span>
<a name="l00073"></a>00073 <span class="comment">                  * \param p2 The second distribution to fuse</span>
<a name="l00074"></a>00074 <span class="comment">                  * \param minMahalanobisDistToDrop If set to different of 0, the result of very separate Gaussian modes (that will result in negligible components) in SOGs will be dropped to reduce the number of modes in the output.</span>
<a name="l00075"></a>00075 <span class="comment">                  */</span>
<a name="l00076"></a>00076                 virtual <span class="keywordtype">void</span>  bayesianFusion( const <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html" title="Declares a class that represents a Probability Distribution function (PDF) of a 3D point (x...">CPointPDF</a> &amp;p1, const <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html" title="Declares a class that represents a Probability Distribution function (PDF) of a 3D point (x...">CPointPDF</a> &amp;p2, const <span class="keywordtype">double</span> &amp;minMahalanobisDistToDrop = 0)  = 0 ;
<a name="l00077"></a>00077 
<a name="l00078"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html#adc2cdea527fa36d391c678e4485e3a1fa5dd6916895ffef4491f202f8d6839bb1">00078</a>                 enum { is_3D_val = 1 };
<a name="l00079"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html#ae1aece8c459ffd8eab83ea191791a7e2">00079</a>                 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html#ae1aece8c459ffd8eab83ea191791a7e2">is_3D</a>() { <span class="keywordflow">return</span> is_3D_val!=0; }
<a name="l00080"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html#a863a1bda75e5bd233aaa2219eaa7a22cad0cefc23184600ef2ce537e641938598">00080</a>                 <span class="keyword">enum</span> { is_PDF_val = 1 };
<a name="l00081"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html#affffb868a8f2d8e928b7e8d8cad73594">00081</a>                 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html#affffb868a8f2d8e928b7e8d8cad73594">is_PDF</a>() { <span class="keywordflow">return</span> is_PDF_val!=0; }
<a name="l00082"></a>00082 <span class="comment"></span>
<a name="l00083"></a>00083 <span class="comment">                /** Returns a 3D representation of this PDF.</span>
<a name="l00084"></a>00084 <span class="comment">                  * \note Needs the mrpt-opengl library, and using mrpt::opengl::CSetOfObjectsPtr as template argument.</span>
<a name="l00085"></a>00085 <span class="comment">                  */</span>
<a name="l00086"></a>00086                 <span class="keyword">template</span> &lt;<span class="keyword">class</span> OPENGL_SETOFOBJECTSPTR&gt;
<a name="l00087"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html#ac8a691da1b29b401d4440d173e25f7a8">00087</a>                 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html#ac8a691da1b29b401d4440d173e25f7a8" title="Returns a 3D representation of this PDF.">getAs3DObject</a>(OPENGL_SETOFOBJECTSPTR &amp;out_obj)<span class="keyword"> const </span>{
<a name="l00088"></a>00088                         <span class="keyword">typedef</span> <span class="keyword">typename</span> OPENGL_SETOFOBJECTSPTR<a class="code" href="eigen__plugins_8h.html#afd07186978da46f9908364e389f8a403" title="Type of the elements.">::value_type</a> SETOFOBJECTS;
<a name="l00089"></a>00089                         *out_obj = *<a class="code" href="namespacemrpt_1_1opengl.html#ada69d2b8f7e376cc386d8b7a0be29b34" title="Returns a representation of a the PDF - this is just an auxiliary function, it&#39;s more natural to call...">SETOFOBJECTS::posePDF2opengl</a>(*<span class="keyword">this</span>);
<a name="l00090"></a>00090                 }
<a name="l00091"></a>00091 <span class="comment"></span>
<a name="l00092"></a>00092 <span class="comment">                /** Returns a 3D representation of this PDF.</span>
<a name="l00093"></a>00093 <span class="comment">                  * \note Needs the mrpt-opengl library, and using mrpt::opengl::CSetOfObjectsPtr as template argument.</span>
<a name="l00094"></a>00094 <span class="comment">                  */</span>
<a name="l00095"></a>00095                 <span class="keyword">template</span> &lt;<span class="keyword">class</span> OPENGL_SETOFOBJECTSPTR,<span class="keyword">class</span> OPENGL_SETOFOBJECTS&gt;
<a name="l00096"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html#afe846555a245630e84314f1a32ee79cb">00096</a>                 <span class="keyword">inline</span> OPENGL_SETOFOBJECTSPTR <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html#afe846555a245630e84314f1a32ee79cb" title="Returns a 3D representation of this PDF.">getAs3DObject</a>()<span class="keyword"> const </span>{
<a name="l00097"></a>00097                         <span class="keyword">typedef</span> <span class="keyword">typename</span> OPENGL_SETOFOBJECTSPTR<a class="code" href="eigen__plugins_8h.html#afd07186978da46f9908364e389f8a403" title="Type of the elements.">::value_type</a> SETOFOBJECTS;
<a name="l00098"></a>00098                         <span class="keywordflow">return</span> <a class="code" href="namespacemrpt_1_1opengl.html#ada69d2b8f7e376cc386d8b7a0be29b34" title="Returns a representation of a the PDF - this is just an auxiliary function, it&#39;s more natural to call...">SETOFOBJECTS::posePDF2opengl</a>(*<span class="keyword">this</span>);
<a name="l00099"></a>00099                 }
<a name="l00100"></a>00100 
<a name="l00101"></a>00101         }; <span class="comment">// End of class def.</span>
<a name="l00102"></a>00102 
<a name="l00103"></a>00103 
<a name="l00104"></a>00104         } <span class="comment">// End of namespace</span>
<a name="l00105"></a>00105 } <span class="comment">// End of namespace</span>
<a name="l00106"></a>00106 
<a name="l00107"></a>00107 <span class="preprocessor">#endif</span>
</pre></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>