Sophie

Sophie

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

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>Geometry: lines, planes, intersections, SLERP, &quot;lightweight&quot; point &amp; pose classes</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><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>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<div class="title">Geometry: lines, planes, intersections, SLERP, "lightweight" point &amp; pose classes</div>  </div>
<div class="ingroups"><a class="el" href="group__mrpt__base__grp.html">[mrpt-base]</a></div></div>
<div class="contents">
<div class="dynheader">
Collaboration diagram for Geometry: lines, planes, intersections, SLERP, "lightweight" point &amp; pose classes:</div>
<div class="dyncontent">
<center><table><tr><td><img src="group__geometry__grp.png" border="0" alt="" usemap="#group____geometry____grp"/>
<map name="group____geometry____grp" id="group____geometry____grp">
<area shape="rect" id="node2" href="group__mrpt__base__grp.html" title=" Back to list of all libraries | See all modules &#160;&#160;" alt="" coords="5,5,93,32"/></map>
</td></tr></table></center>
</div>
<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">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_c_polygon.html">mrpt::math::CPolygon</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A wrapper of a <a class="el" href="classmrpt_1_1math_1_1_t_polygon2_d.html" title="2D polygon, inheriting from std::vector&lt;TPoint2D&gt;.">TPolygon2D</a> class, implementing CSerializable.  <a href="classmrpt_1_1math_1_1_c_polygon.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_t_polygon_with_plane.html">mrpt::math::TPolygonWithPlane</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Slightly heavyweight type to speed-up calculations with polygons in 3D.  <a href="classmrpt_1_1math_1_1_t_polygon_with_plane.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_t_point2_d.html">mrpt::math::TPoint2D</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Lightweight 2D point.  <a href="structmrpt_1_1math_1_1_t_point2_d.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_t_pose2_d.html">mrpt::math::TPose2D</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Lightweight 2D pose.  <a href="structmrpt_1_1math_1_1_t_pose2_d.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_t_point3_df.html">mrpt::math::TPoint3Df</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Lightweight 3D point (float version).  <a href="structmrpt_1_1math_1_1_t_point3_df.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_t_point3_d.html">mrpt::math::TPoint3D</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Lightweight 3D point.  <a href="structmrpt_1_1math_1_1_t_point3_d.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_t_pose3_d.html">mrpt::math::TPose3D</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Lightweight 3D pose (three spatial coordinates, plus three angular coordinates).  <a href="structmrpt_1_1math_1_1_t_pose3_d.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_t_pose3_d_quat.html">mrpt::math::TPose3DQuat</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Lightweight 3D pose (three spatial coordinates, plus a quaternion ).  <a href="structmrpt_1_1math_1_1_t_pose3_d_quat.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_t_segment2_d.html">mrpt::math::TSegment2D</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">2D segment, consisting of two points.  <a href="structmrpt_1_1math_1_1_t_segment2_d.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_t_segment3_d.html">mrpt::math::TSegment3D</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">3D segment, consisting of two points.  <a href="structmrpt_1_1math_1_1_t_segment3_d.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_t_line2_d.html">mrpt::math::TLine2D</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">2D line without bounds, represented by its equation <img class="formulaInl" alt="$Ax+By+C=0$" src="form_31.png"/>.  <a href="structmrpt_1_1math_1_1_t_line2_d.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_t_line3_d.html">mrpt::math::TLine3D</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">3D line, represented by a base point and a director vector.  <a href="structmrpt_1_1math_1_1_t_line3_d.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_t_plane.html">mrpt::math::TPlane</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">3D Plane, represented by its equation <img class="formulaInl" alt="$Ax+By+Cz+D=0$" src="form_32.png"/>  <a href="structmrpt_1_1math_1_1_t_plane.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_t_polygon2_d.html">mrpt::math::TPolygon2D</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">2D polygon, inheriting from std::vector&lt;TPoint2D&gt;.  <a href="classmrpt_1_1math_1_1_t_polygon2_d.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1math_1_1_t_polygon3_d.html">mrpt::math::TPolygon3D</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">3D polygon, inheriting from std::vector&lt;TPoint3D&gt;  <a href="classmrpt_1_1math_1_1_t_polygon3_d.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_t_object2_d.html">mrpt::math::TObject2D</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Standard type for storing any lightweight 2D type.  <a href="structmrpt_1_1math_1_1_t_object2_d.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_t_object3_d.html">mrpt::math::TObject3D</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Standard object for storing any 3D lightweight object.  <a href="structmrpt_1_1math_1_1_t_object3_d.html#details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef TPlane&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga059f9e940d0d3c842d7ca1cec3c4f999">mrpt::math::TPlane3D</a></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1ostream.html">std::ostream</a> BASE_IMPEXP &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga04abf9e51a93d1d57a9f1b27236a5a36">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classstd_1_1ostream.html">std::ostream</a> &amp;o, const TPoint2D &amp;p)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1ostream.html">std::ostream</a> BASE_IMPEXP &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga25910d350b648105056f0c99924495d8">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classstd_1_1ostream.html">std::ostream</a> &amp;o, const TPoint3D &amp;p)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1ostream.html">std::ostream</a> BASE_IMPEXP &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gabda36a51966b0da6fb748d92231bd6e5">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classstd_1_1ostream.html">std::ostream</a> &amp;o, const TPose2D &amp;p)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1ostream.html">std::ostream</a> BASE_IMPEXP &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga2a0758646c7d422056b1cb5a258be780">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classstd_1_1ostream.html">std::ostream</a> &amp;o, const TPose3D &amp;p)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1ostream.html">std::ostream</a> BASE_IMPEXP &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga0ec73b99ad8c2f70f43ad553d6273ff9">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classstd_1_1ostream.html">std::ostream</a> &amp;o, const TPose3DQuat &amp;p)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">TPoint3D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga41dd79738f6a27f4b63ee22080eec843">mrpt::math::operator-</a> (const TPoint3D &amp;p1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Unary minus operator for 3D points.  <a href="#ga41dd79738f6a27f4b63ee22080eec843"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaef7a1b4acfd8df1780f54ccf2725bec6">mrpt::math::operator==</a> (const TPoint2D &amp;p1, const TPoint2D &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Exact comparison between 2D points.  <a href="#gaef7a1b4acfd8df1780f54ccf2725bec6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga30e184e42686c929b057a782c5420381">mrpt::math::operator!=</a> (const TPoint2D &amp;p1, const TPoint2D &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Exact comparison between 2D points.  <a href="#ga30e184e42686c929b057a782c5420381"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga3d8fa05b84f5283269f4f4d06f0136bd">mrpt::math::operator==</a> (const TPoint3D &amp;p1, const TPoint3D &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Exact comparison between 3D points.  <a href="#ga3d8fa05b84f5283269f4f4d06f0136bd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga0ce1351e12712693cfbe5318fb8acae1">mrpt::math::operator!=</a> (const TPoint3D &amp;p1, const TPoint3D &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Exact comparison between 3D points.  <a href="#ga0ce1351e12712693cfbe5318fb8acae1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga3b0d2c0eb8f001423ccd854814a92187">mrpt::math::operator==</a> (const TPose2D &amp;p1, const TPose2D &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Exact comparison between 2D poses, taking possible cycles into account.  <a href="#ga3b0d2c0eb8f001423ccd854814a92187"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaf6339aa7f1cdc6c0a7049756f9417d2b">mrpt::math::operator!=</a> (const TPose2D &amp;p1, const TPose2D &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Exact comparison between 2D poses, taking possible cycles into account.  <a href="#gaf6339aa7f1cdc6c0a7049756f9417d2b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga315107e68e10847038343a6bb609e49d">mrpt::math::operator==</a> (const TPose3D &amp;p1, const TPose3D &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Exact comparison between 3D poses, taking possible cycles into account.  <a href="#ga315107e68e10847038343a6bb609e49d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga2696598ea83b926010a0457c53bfe285">mrpt::math::operator!=</a> (const TPose3D &amp;p1, const TPose3D &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Exact comparison between 3D poses, taking possible cycles into account.  <a href="#ga2696598ea83b926010a0457c53bfe285"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaf6b5b50bad9ca722909c044f785589aa">mrpt::math::operator==</a> (const TSegment2D &amp;s1, const TSegment2D &amp;s2)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gac847cd29b920a25d160d642afc1ca5f5">mrpt::math::operator!=</a> (const TSegment2D &amp;s1, const TSegment2D &amp;s2)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga0759bd5ff55164037663876bb5c589e5">mrpt::math::operator==</a> (const TSegment3D &amp;s1, const TSegment3D &amp;s2)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga3e99b3d8a2aa7739c50ee0c6e33d5556">mrpt::math::operator!=</a> (const TSegment3D &amp;s1, const TSegment3D &amp;s2)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gae2ba309dec96d95778cb7d7fc54c0e9e">mrpt::math::operator&gt;&gt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;in, <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">mrpt::math::TPoint2D</a> &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html" title="Lightweight 2D point.">TPoint2D</a> binary input.  <a href="#gae2ba309dec96d95778cb7d7fc54c0e9e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gae1eec8f42f8048fe5b297184d8b9e68f">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;out, const <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">mrpt::math::TPoint2D</a> &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html" title="Lightweight 2D point.">TPoint2D</a> binary output.  <a href="#gae1eec8f42f8048fe5b297184d8b9e68f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga9dd424846338d9d1eafbb6ab1c86f401">mrpt::math::operator&gt;&gt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;in, <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">mrpt::math::TPoint3D</a> &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html" title="Lightweight 3D point.">TPoint3D</a> binary input.  <a href="#ga9dd424846338d9d1eafbb6ab1c86f401"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga3e63e6e21e74b03a90540c14369d97e0">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;out, const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">mrpt::math::TPoint3D</a> &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html" title="Lightweight 3D point.">TPoint3D</a> binary output.  <a href="#ga3e63e6e21e74b03a90540c14369d97e0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga19aac3a7c0fca1a67d9f9e8864b279ec">mrpt::math::operator&gt;&gt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;in, <a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">mrpt::math::TPose2D</a> &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html" title="Lightweight 2D pose.">TPose2D</a> binary input.  <a href="#ga19aac3a7c0fca1a67d9f9e8864b279ec"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga811ddc08eef0b66a222a81ee00c3d47d">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;out, const <a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">mrpt::math::TPose2D</a> &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html" title="Lightweight 2D pose.">TPose2D</a> binary output.  <a href="#ga811ddc08eef0b66a222a81ee00c3d47d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga623673e345fd4d4943432cd57cab368f">mrpt::math::operator&gt;&gt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;in, <a class="el" href="structmrpt_1_1math_1_1_t_pose3_d.html">mrpt::math::TPose3D</a> &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_pose3_d.html" title="Lightweight 3D pose (three spatial coordinates, plus three angular coordinates).">TPose3D</a> binary input.  <a href="#ga623673e345fd4d4943432cd57cab368f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga0c3554dda0fa4b62abc4432e736fb5b1">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;out, const <a class="el" href="structmrpt_1_1math_1_1_t_pose3_d.html">mrpt::math::TPose3D</a> &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_pose3_d.html" title="Lightweight 3D pose (three spatial coordinates, plus three angular coordinates).">TPose3D</a> binary output.  <a href="#ga0c3554dda0fa4b62abc4432e736fb5b1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga8d71c9fdf214a7b85d32eac48a0ac633">mrpt::math::operator&gt;&gt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;in, <a class="el" href="structmrpt_1_1math_1_1_t_segment2_d.html">mrpt::math::TSegment2D</a> &amp;s)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_segment2_d.html" title="2D segment, consisting of two points.">TSegment2D</a> binary input.  <a href="#ga8d71c9fdf214a7b85d32eac48a0ac633"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga0c679646ca7bf18ad88f7d74bf8c4051">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;out, const <a class="el" href="structmrpt_1_1math_1_1_t_segment2_d.html">mrpt::math::TSegment2D</a> &amp;s)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_segment2_d.html" title="2D segment, consisting of two points.">TSegment2D</a> binary output.  <a href="#ga0c679646ca7bf18ad88f7d74bf8c4051"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaefdce466c1d15aa5f9a15d780e16a0cd">mrpt::math::operator&gt;&gt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;in, <a class="el" href="structmrpt_1_1math_1_1_t_line2_d.html">mrpt::math::TLine2D</a> &amp;l)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_line2_d.html" title="2D line without bounds, represented by its equation .">TLine2D</a> binary input.  <a href="#gaefdce466c1d15aa5f9a15d780e16a0cd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gafa318a04ca6d1d96394319b1d59f4a6a">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;out, const <a class="el" href="structmrpt_1_1math_1_1_t_line2_d.html">mrpt::math::TLine2D</a> &amp;l)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_line2_d.html" title="2D line without bounds, represented by its equation .">TLine2D</a> binary output.  <a href="#gafa318a04ca6d1d96394319b1d59f4a6a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga3e1a5b74258e9922ff982ef3f40c6533">mrpt::math::operator&gt;&gt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;in, <a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html">mrpt::math::TObject2D</a> &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> binary input.  <a href="#ga3e1a5b74258e9922ff982ef3f40c6533"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gafae1cfc0c7af142d9d049edd71de12db">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;out, const <a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html">mrpt::math::TObject2D</a> &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> binary input.  <a href="#gafae1cfc0c7af142d9d049edd71de12db"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga252014f7c27f09c8098b7a1285e2aba5">mrpt::math::operator&gt;&gt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;in, <a class="el" href="structmrpt_1_1math_1_1_t_segment3_d.html">mrpt::math::TSegment3D</a> &amp;s)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_segment3_d.html" title="3D segment, consisting of two points.">TSegment3D</a> binary input.  <a href="#ga252014f7c27f09c8098b7a1285e2aba5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga94641e5a5230bd42caaf02587af63240">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;out, const <a class="el" href="structmrpt_1_1math_1_1_t_segment3_d.html">mrpt::math::TSegment3D</a> &amp;s)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_segment3_d.html" title="3D segment, consisting of two points.">TSegment3D</a> binary output.  <a href="#ga94641e5a5230bd42caaf02587af63240"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga904a984edb7f67f274b002e36dc0f685">mrpt::math::operator&gt;&gt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;in, <a class="el" href="structmrpt_1_1math_1_1_t_line3_d.html">mrpt::math::TLine3D</a> &amp;l)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_line3_d.html" title="3D line, represented by a base point and a director vector.">TLine3D</a> binary input.  <a href="#ga904a984edb7f67f274b002e36dc0f685"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga432e65f2a9cab4461b8fd8bba7bd596b">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;out, const <a class="el" href="structmrpt_1_1math_1_1_t_line3_d.html">mrpt::math::TLine3D</a> &amp;l)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_line3_d.html" title="3D line, represented by a base point and a director vector.">TLine3D</a> binary output.  <a href="#ga432e65f2a9cab4461b8fd8bba7bd596b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaff141872fd7b9cca804e19cb72a4149f">mrpt::math::operator&gt;&gt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;in, <a class="el" href="structmrpt_1_1math_1_1_t_plane.html">mrpt::math::TPlane</a> &amp;p)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_plane.html" title="3D Plane, represented by its equation ">TPlane</a> binary input.  <a href="#gaff141872fd7b9cca804e19cb72a4149f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga8c6491eb156942e441020308912a82eb">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;out, const <a class="el" href="structmrpt_1_1math_1_1_t_plane.html">mrpt::math::TPlane</a> &amp;p)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_plane.html" title="3D Plane, represented by its equation ">TPlane</a> binary output.  <a href="#ga8c6491eb156942e441020308912a82eb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga098f170d53e02052fd8854d55498e92b">mrpt::math::operator&gt;&gt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;in, <a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html">mrpt::math::TObject3D</a> &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> binary input.  <a href="#ga098f170d53e02052fd8854d55498e92b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga9c7d341ffd1d26b0c71a34d51702bef0">mrpt::math::operator&lt;&lt;</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;out, const <a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html">mrpt::math::TObject3D</a> &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> binary output.  <a href="#ga9c7d341ffd1d26b0c71a34d51702bef0"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="var-members"></a>
Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga1c443a200f0be17fb54bfc78c62acf45">mrpt::math::geometryEpsilon</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Global epsilon to overcome small precision errors.  <a href="#ga1c443a200f0be17fb54bfc78c62acf45"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga6062a8844f75e4a2efd63d7027237b5a">mrpt::math::TSegment3D</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gac4f838c4ff28e24b60032903f9a87339">mrpt::math::TLine3D</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gac96724117d963fde72380a079deaea23">mrpt::math::TPolygon3D</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga621fd9d87c2da1ad022a4192779adfef">mrpt::math::TObject3D</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga2dbf1225dd78e1ae2cb5e7d0b7ddea52">mrpt::math::GEOMETRIC_TYPE_POINT</a> = 0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Object type identifier for <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html" title="Lightweight 2D point.">TPoint2D</a> or <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html" title="Lightweight 3D point.">TPoint3D</a>.  <a href="#ga2dbf1225dd78e1ae2cb5e7d0b7ddea52"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gabdfe15c4a3eebe6168b00dd3a64224fc">mrpt::math::GEOMETRIC_TYPE_SEGMENT</a> = 1</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Object type identifier for <a class="el" href="structmrpt_1_1math_1_1_t_segment2_d.html" title="2D segment, consisting of two points.">TSegment2D</a> or <a class="el" href="structmrpt_1_1math_1_1_t_segment3_d.html" title="3D segment, consisting of two points.">TSegment3D</a>.  <a href="#gabdfe15c4a3eebe6168b00dd3a64224fc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga39c624c65577d653fdd4959db170f99e">mrpt::math::GEOMETRIC_TYPE_LINE</a> = 2</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Object type identifier for <a class="el" href="structmrpt_1_1math_1_1_t_line2_d.html" title="2D line without bounds, represented by its equation .">TLine2D</a> or <a class="el" href="structmrpt_1_1math_1_1_t_line3_d.html" title="3D line, represented by a base point and a director vector.">TLine3D</a>.  <a href="#ga39c624c65577d653fdd4959db170f99e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga8a10a9c561cb5d704d17328857b4eb64">mrpt::math::GEOMETRIC_TYPE_POLYGON</a> = 3</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Object type identifier for <a class="el" href="classmrpt_1_1math_1_1_t_polygon2_d.html" title="2D polygon, inheriting from std::vector&lt;TPoint2D&gt;.">TPolygon2D</a> or <a class="el" href="classmrpt_1_1math_1_1_t_polygon3_d.html" title="3D polygon, inheriting from std::vector&lt;TPoint3D&gt;">TPolygon3D</a>.  <a href="#ga8a10a9c561cb5d704d17328857b4eb64"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaf25b3e2c558bc58ce4f5251cc62ac2cd">mrpt::math::GEOMETRIC_TYPE_PLANE</a> = 4</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Object type identifier for <a class="el" href="structmrpt_1_1math_1_1_t_plane.html" title="3D Plane, represented by its equation ">TPlane</a>.  <a href="#gaf25b3e2c558bc58ce4f5251cc62ac2cd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga6fb47c39fe7b701f2ad23f02787ec63a">mrpt::math::GEOMETRIC_TYPE_UNDEFINED</a> = 255</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Object type identifier for empty <a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> or <a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a>.  <a href="#ga6fb47c39fe7b701f2ad23f02787ec63a"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Simple intersection operations, relying basically on geometrical operations.</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga096194319b696aecf5ab9337a2f60c44">mrpt::math::intersect</a> (const TSegment3D &amp;s1, const TSegment3D &amp;s2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between two 3D segments.  <a href="#ga096194319b696aecf5ab9337a2f60c44"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaf3dacfd63aa769727ea020d61e082e09">mrpt::math::intersect</a> (const TSegment3D &amp;s1, const TPlane &amp;p2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a 3D segment and a plane.  <a href="#gaf3dacfd63aa769727ea020d61e082e09"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga20eb28ba649c6b5a08e0a1bbf8725d31">mrpt::math::intersect</a> (const TSegment3D &amp;s1, const TLine3D &amp;r2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a 3D segment and a 3D line.  <a href="#ga20eb28ba649c6b5a08e0a1bbf8725d31"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga5578db841cf79d522bbe330e8af74b37">mrpt::math::intersect</a> (const TPlane &amp;p1, const TSegment3D &amp;s2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a plane and a 3D segment.  <a href="#ga5578db841cf79d522bbe330e8af74b37"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga909e63792323a7862885aa8b4e34766a">mrpt::math::intersect</a> (const TPlane &amp;p1, const TPlane &amp;p2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between two planes.  <a href="#ga909e63792323a7862885aa8b4e34766a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga172f48d9c8d9cd23d74edacb4dc254ef">mrpt::math::intersect</a> (const TPlane &amp;p1, const TLine3D &amp;p2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a plane and a 3D line.  <a href="#ga172f48d9c8d9cd23d74edacb4dc254ef"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga2213e727c993392fe8a6ff82bd4a1ed2">mrpt::math::intersect</a> (const TLine3D &amp;r1, const TSegment3D &amp;s2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a 3D line and a 3D segment.  <a href="#ga2213e727c993392fe8a6ff82bd4a1ed2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga95f158cb50fb69c1d79243f48385409e">mrpt::math::intersect</a> (const TLine3D &amp;r1, const TPlane &amp;p2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a 3D line and a plane.  <a href="#ga95f158cb50fb69c1d79243f48385409e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga69430d142e4fe3306f572738b4411397">mrpt::math::intersect</a> (const TLine3D &amp;r1, const TLine3D &amp;r2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between two 3D lines.  <a href="#ga69430d142e4fe3306f572738b4411397"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gab960cce02b692c8897dfc36d9c6f0914">mrpt::math::intersect</a> (const TLine2D &amp;r1, const TLine2D &amp;r2, TObject2D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between two 2D lines.  <a href="#gab960cce02b692c8897dfc36d9c6f0914"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gab474b7d5539df394ad1ee48000657500">mrpt::math::intersect</a> (const TLine2D &amp;r1, const TSegment2D &amp;s2, TObject2D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a 2D line and a 2D segment.  <a href="#gab474b7d5539df394ad1ee48000657500"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga7f0d0dba6bacd14ccd3c518dbfe76000">mrpt::math::intersect</a> (const TSegment2D &amp;s1, const TLine2D &amp;r2, TObject2D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a 2D line and a 2D segment.  <a href="#ga7f0d0dba6bacd14ccd3c518dbfe76000"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga2478dd9095e36422ba33a8a9af817d66">mrpt::math::intersect</a> (const TSegment2D &amp;s1, const TSegment2D &amp;s2, TObject2D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between two 2D segments.  <a href="#ga2478dd9095e36422ba33a8a9af817d66"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Angle retrieval methods. Methods which use TSegments will automatically use TLines' implicit constructors.</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaef0c5b67b3e5066b473389fd82d7e694">mrpt::math::getAngle</a> (const TPlane &amp;p1, const TPlane &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the angle between two planes.  <a href="#gaef0c5b67b3e5066b473389fd82d7e694"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga5d6f350ef4e5edc626a84b9cfd3cca8b">mrpt::math::getAngle</a> (const TPlane &amp;p1, const TLine3D &amp;r2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the angle between a plane and a 3D line or segment (implicit constructor will be used if passing a segment instead of a line).  <a href="#ga5d6f350ef4e5edc626a84b9cfd3cca8b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga92e221cabafb17be49a42740463bba64">mrpt::math::getAngle</a> (const TLine3D &amp;r1, const TPlane &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the angle between a 3D line or segment and a plane (implicit constructor will be used if passing a segment instead of a line).  <a href="#ga92e221cabafb17be49a42740463bba64"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga80c2e12dcb6669eb0574795acf3f28e5">mrpt::math::getAngle</a> (const TLine3D &amp;r1, const TLine3D &amp;r2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the angle between two 3D lines or segments (implicit constructor will be used if passing a segment instead of a line).  <a href="#ga80c2e12dcb6669eb0574795acf3f28e5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga68706eed82d782c279146d565bd55cec">mrpt::math::getAngle</a> (const TLine2D &amp;r1, const TLine2D &amp;r2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the angle between two 2D lines or segments (implicit constructor will be used if passing a segment instead of a line).  <a href="#ga68706eed82d782c279146d565bd55cec"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Creation of lines from poses.</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaa1633ebc71f0ee7d470f30b2eea943a8">mrpt::math::createFromPoseX</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;p, TLine3D &amp;r)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a 3D line corresponding to the X axis in a given pose.  <a href="#gaa1633ebc71f0ee7d470f30b2eea943a8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gae5b442ae15de11a3346b1e3255a7df4c">mrpt::math::createFromPoseY</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;p, TLine3D &amp;r)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a 3D line corresponding to the Y axis in a given pose.  <a href="#gae5b442ae15de11a3346b1e3255a7df4c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga4ee6495c3cc59db23593a54b0956ca0a">mrpt::math::createFromPoseZ</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;p, TLine3D &amp;r)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a 3D line corresponding to the Z axis in a given pose.  <a href="#ga4ee6495c3cc59db23593a54b0956ca0a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gafef50d9c5a0bc347ae26a406bcda5266">mrpt::math::createFromPoseAndVector</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;p, const double(&amp;vector)[3], TLine3D &amp;r)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a 3D line corresponding to any arbitrary vector, in the base given by the pose.  <a href="#gafef50d9c5a0bc347ae26a406bcda5266"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gabf4854bde197d4a2c6f923fdc59386d0">mrpt::math::createFromPoseX</a> (const TPose2D &amp;p, TLine2D &amp;r)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a 2D line corresponding to the X axis in a given pose.  <a href="#gabf4854bde197d4a2c6f923fdc59386d0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaa9351feda24873f86b011fe92520043e">mrpt::math::createFromPoseY</a> (const TPose2D &amp;p, TLine2D &amp;r)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a 2D line corresponding to the Y axis in a given pose.  <a href="#gaa9351feda24873f86b011fe92520043e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga9873d4e1a924d239cb3a25b21d1c5bfe">mrpt::math::createFromPoseAndVector</a> (const TPose2D &amp;p, const double(&amp;vector)[2], TLine2D &amp;r)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a 2D line corresponding to any arbitrary vector, in the base given the given pose.  <a href="#ga9873d4e1a924d239cb3a25b21d1c5bfe"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Other line or plane related methods.</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga4368cd73dd158c3263fb838453513c6e">mrpt::math::conformAPlane</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint3D &gt; &amp;points)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether this polygon or set of points acceptably fits a plane.  <a href="#ga4368cd73dd158c3263fb838453513c6e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gafcfafea1b78be503e8b6b789c79b51c2">mrpt::math::conformAPlane</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint3D &gt; &amp;points, TPlane &amp;p)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether this polygon or set of points acceptably fits a plane, and if it's the case returns it in the second argument.  <a href="#gafcfafea1b78be503e8b6b789c79b51c2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga0ff9066099dc3cb3bf0b0cdc75b87b8a">mrpt::math::areAligned</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint2D &gt; &amp;points)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether this set of points acceptably fits a 2D line.  <a href="#ga0ff9066099dc3cb3bf0b0cdc75b87b8a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gad7014fc391058b221defb91929041222">mrpt::math::areAligned</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint2D &gt; &amp;points, TLine2D &amp;r)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether this set of points acceptably fits a 2D line, and if it's the case returns it in the second argument.  <a href="#gad7014fc391058b221defb91929041222"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga72e1bfd0dc3a8c42136d7aa6f1183c6b">mrpt::math::areAligned</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint3D &gt; &amp;points)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether this set of points acceptably fits a 3D line.  <a href="#ga72e1bfd0dc3a8c42136d7aa6f1183c6b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga8cdcecef3e540abce49bbbb165ee054e">mrpt::math::areAligned</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint3D &gt; &amp;points, TLine3D &amp;r)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether this set of points acceptably fits a 3D line, and if it's the case returns it in the second argument.  <a href="#ga8cdcecef3e540abce49bbbb165ee054e"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Projections</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gabc1ba0f4ffbfb1070b19923471fbd5ac">mrpt::math::project3D</a> (const TPoint3D &amp;point, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;newXYpose, TPoint3D &amp;newPoint)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses the given pose 3D to project a point into a new base.  <a href="#gabc1ba0f4ffbfb1070b19923471fbd5ac"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gafa9a1277ee17ec0beacdab848984ed29">mrpt::math::project3D</a> (const TSegment3D &amp;segment, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;newXYpose, TSegment3D &amp;newSegment)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses the given pose 3D to project a segment into a new base.  <a href="#gafa9a1277ee17ec0beacdab848984ed29"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga1d06b4f6527d1386f58b0a350f979cf8">mrpt::math::project3D</a> (const TLine3D &amp;line, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;newXYpose, TLine3D &amp;newLine)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses the given pose 3D to project a line into a new base.  <a href="#ga1d06b4f6527d1386f58b0a350f979cf8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gacee968e4646c0be6681c65d6121ce42f">mrpt::math::project3D</a> (const TPlane &amp;plane, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;newXYpose, TPlane &amp;newPlane)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses the given pose 3D to project a plane into a new base.  <a href="#gacee968e4646c0be6681c65d6121ce42f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga7d963823e9beb0e850453bba63197378">mrpt::math::project3D</a> (const TPolygon3D &amp;polygon, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;newXYpose, TPolygon3D &amp;newPolygon)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses the given pose 3D to project a polygon into a new base.  <a href="#ga7d963823e9beb0e850453bba63197378"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gac61924cf2848a569533dd9a4bf6eb9c2">mrpt::math::project3D</a> (const TObject3D &amp;object, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;newXYPose, TObject3D &amp;newObject)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses the given pose 3D to project any 3D object into a new base.  <a href="#gac61924cf2848a569533dd9a4bf6eb9c2"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga3a8703f7747d7d472704621ea44c7021">mrpt::math::project3D</a> (const T &amp;obj, const TPlane &amp;newXYPlane, T &amp;newObj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Projects any 3D object into the plane's base, using its inverse pose.  <a href="#ga3a8703f7747d7d472704621ea44c7021"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaa777931620bc326748391967ef724568">mrpt::math::project3D</a> (const T &amp;obj, const TPlane &amp;newXYPlane, const TPoint3D &amp;newOrigin, T &amp;newObj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Projects any 3D object into the plane's base, using its inverse pose and forcing the position of the new coordinates origin.  <a href="#gaa777931620bc326748391967ef724568"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaa9f2fbd99fc5b7aa02f8ca7291e8dd18">mrpt::math::project3D</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;objs, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;newXYpose, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;newObjs)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Projects a set of 3D objects into the plane's base.  <a href="#gaa9f2fbd99fc5b7aa02f8ca7291e8dd18"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga01a5878f7437f17ed3603a31e6190339">mrpt::math::project2D</a> (const TPoint2D &amp;point, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> &amp;newXpose, TPoint2D &amp;newPoint)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses the given pose 2D to project a point into a new base.  <a href="#ga01a5878f7437f17ed3603a31e6190339"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaea53914830f34b117463dee1594a1d9f">mrpt::math::project2D</a> (const TSegment2D &amp;segment, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> &amp;newXpose, TSegment2D &amp;newSegment)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses the given pose 2D to project a segment into a new base.  <a href="#gaea53914830f34b117463dee1594a1d9f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga510c78e42b44f5db84acd113f597c532">mrpt::math::project2D</a> (const TLine2D &amp;line, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> &amp;newXpose, TLine2D &amp;newLine)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses the given pose 2D to project a line into a new base.  <a href="#ga510c78e42b44f5db84acd113f597c532"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga6229a4b11127c6fcebede49fd2d2933d">mrpt::math::project2D</a> (const TPolygon2D &amp;polygon, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> &amp;newXpose, TPolygon2D &amp;newPolygon)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses the given pose 2D to project a polygon into a new base.  <a href="#ga6229a4b11127c6fcebede49fd2d2933d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaff16bd12ca2eeaf65f9357af22bc7a9b">mrpt::math::project2D</a> (const TObject2D &amp;object, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> &amp;newXpose, TObject2D &amp;newObject)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses the given pose 2D to project any 2D object into a new base.  <a href="#gaff16bd12ca2eeaf65f9357af22bc7a9b"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga4fc38e90d8d9d8d13db114369d4f6e6b">mrpt::math::project2D</a> (const T &amp;obj, const TLine2D &amp;newXLine, T &amp;newObj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Projects any 2D object into the line's base, using its inverse pose.  <a href="#ga4fc38e90d8d9d8d13db114369d4f6e6b"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga25fd57667837bb516e82539d86802f8b">mrpt::math::project2D</a> (const T &amp;obj, const TLine2D &amp;newXLine, const TPoint2D &amp;newOrigin, T &amp;newObj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Projects any 2D object into the line's base, using its inverse pose and forcing the position of the new coordinate origin.  <a href="#ga25fd57667837bb516e82539d86802f8b"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gac1bbf25c63766b9ca0ed82167bf7961a">mrpt::math::project2D</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;objs, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> &amp;newXpose, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;newObjs)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Projects a set of 2D objects into the line's base.  <a href="#gac1bbf25c63766b9ca0ed82167bf7961a"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Polygon intersections. These operations rely more on spatial reasoning than in raw numerical operations.</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga7e513f8e21eac854239e425224d9a4c2">mrpt::math::intersect</a> (const TPolygon2D &amp;p1, const TSegment2D &amp;s2, TObject2D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a 2D polygon and a 2D segment.  <a href="#ga7e513f8e21eac854239e425224d9a4c2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga1a7a58052efcbd9ebcee2f345798ee8b">mrpt::math::intersect</a> (const TPolygon2D &amp;p1, const TLine2D &amp;r2, TObject2D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a 2D polygon and a 2D line.  <a href="#ga1a7a58052efcbd9ebcee2f345798ee8b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaa0628efe1d7ead5ea49fb481d454821e">mrpt::math::intersect</a> (const TPolygon2D &amp;p1, const TPolygon2D &amp;p2, TObject2D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between two 2D polygons.  <a href="#gaa0628efe1d7ead5ea49fb481d454821e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga5f241d690d1dc369584ab9894e1403aa">mrpt::math::intersect</a> (const TSegment2D &amp;s1, const TPolygon2D &amp;p2, TObject2D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a 2D segment and a 2D polygon.  <a href="#ga5f241d690d1dc369584ab9894e1403aa"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga498ab42b7016f46dfd864e6603983e79">mrpt::math::intersect</a> (const TLine2D &amp;r1, const TPolygon2D &amp;p2, TObject2D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a 2D line and a 2D polygon.  <a href="#ga498ab42b7016f46dfd864e6603983e79"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga33f131008c3dba6ec3938f4c69cd5ac8">mrpt::math::intersect</a> (const TPolygon3D &amp;p1, const TSegment3D &amp;s2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a 3D polygon and a 3D segment.  <a href="#ga33f131008c3dba6ec3938f4c69cd5ac8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga7e235b2e688b049bbc430a0eedff3ecb">mrpt::math::intersect</a> (const TPolygon3D &amp;p1, const TLine3D &amp;r2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a 3D polygon and a 3D line.  <a href="#ga7e235b2e688b049bbc430a0eedff3ecb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga64b074d139e3902d313795dda99e9c1e">mrpt::math::intersect</a> (const TPolygon3D &amp;p1, const TPlane &amp;p2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a 3D polygon and a plane.  <a href="#ga64b074d139e3902d313795dda99e9c1e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gad771ff8e451fd7072ca8506ee634109e">mrpt::math::intersect</a> (const TPolygon3D &amp;p1, const TPolygon3D &amp;p2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between two 3D polygons.  <a href="#gad771ff8e451fd7072ca8506ee634109e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gae54fcad3a2754529817b16dbd387a6e2">mrpt::math::intersect</a> (const TSegment3D &amp;s1, const TPolygon3D &amp;p2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a 3D segment and a 3D polygon.  <a href="#gae54fcad3a2754529817b16dbd387a6e2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaa2686f4f203380a19184ee8bcfa5db35">mrpt::math::intersect</a> (const TLine3D &amp;r1, const TPolygon3D &amp;p2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a 3D line and a 3D polygon.  <a href="#gaa2686f4f203380a19184ee8bcfa5db35"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gac0867b77fa033682044a131e1872ed3c">mrpt::math::intersect</a> (const TPlane &amp;p1, const TPolygon3D &amp;p2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between a plane and a 3D polygon.  <a href="#gac0867b77fa033682044a131e1872ed3c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga75d7208a372e289cde4157fb8f2efa16">mrpt::math::intersect</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPolygon3D &gt; &amp;v1, const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPolygon3D &gt; &amp;v2, CSparseMatrixTemplate&lt; TObject3D &gt; &amp;objs)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between two sets of 3D polygons.  <a href="#ga75d7208a372e289cde4157fb8f2efa16"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga457946ad03d05ed2698b203ccb9ec67d">mrpt::math::intersect</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPolygon3D &gt; &amp;v1, const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPolygon3D &gt; &amp;v2, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TObject3D &gt; &amp;objs)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between two sets of 3D polygons.  <a href="#ga457946ad03d05ed2698b203ccb9ec67d"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Other intersections</h2></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T , class U , class O &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">size_t&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaa1f06d8e0612780e9a4adf91377e9cbc">mrpt::math::intersect</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;v1, const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; U &gt; &amp;v2, CSparseMatrixTemplate&lt; O &gt; &amp;objs)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between vectors of geometric objects and returns it in a sparse matrix of either <a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> or <a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a>.  <a href="#gaa1f06d8e0612780e9a4adf91377e9cbc"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T , class U , class O &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">size_t&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga8c9938ba7a1666b258ad3d487df9af68">mrpt::math::intersect</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;v1, const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; U &gt; &amp;v2, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; O &gt; objs)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between vectors of geometric objects and returns it in a vector of either <a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> or <a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a>.  <a href="#ga8c9938ba7a1666b258ad3d487df9af68"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gad06a48e9be050230c6db6bf76f27666a">mrpt::math::intersect</a> (const TObject2D &amp;o1, const TObject2D &amp;o2, TObject2D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between any pair of 2D objects.  <a href="#gad06a48e9be050230c6db6bf76f27666a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga6692d50e9510d1df456d55ea7ce63fcd">mrpt::math::intersect</a> (const TObject3D &amp;o1, const TObject3D &amp;o2, TObject3D &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the intersection between any pair of 3D objects.  <a href="#ga6692d50e9510d1df456d55ea7ce63fcd"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Distances</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga8c0a76e906f12560cfa49fcd269c8398">mrpt::math::distance</a> (const TPoint2D &amp;p1, const TPoint2D &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between two points in a 2D space.  <a href="#ga8c0a76e906f12560cfa49fcd269c8398"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaf912081e3dfe5deadd1a901b963f2200">mrpt::math::distance</a> (const TPoint3D &amp;p1, const TPoint3D &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between two points in a 3D space.  <a href="#gaf912081e3dfe5deadd1a901b963f2200"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga5525c130173ebedcb5004b21bfd3e7c6">mrpt::math::distance</a> (const TLine2D &amp;r1, const TLine2D &amp;r2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between two lines in a 2D space.  <a href="#ga5525c130173ebedcb5004b21bfd3e7c6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga6af1e7303c5086532ea0bd7b85770c6a">mrpt::math::distance</a> (const TLine3D &amp;r1, const TLine3D &amp;r2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between two lines in a 3D space.  <a href="#ga6af1e7303c5086532ea0bd7b85770c6a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga425678e3a9733b3c235c9bf52d42449b">mrpt::math::distance</a> (const TPlane &amp;p1, const TPlane &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between two planes.  <a href="#ga425678e3a9733b3c235c9bf52d42449b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga80aa973c410226b39207c04fef2b0ca8">mrpt::math::distance</a> (const TPolygon2D &amp;p1, const TPolygon2D &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between two polygons in a 2D space.  <a href="#ga80aa973c410226b39207c04fef2b0ca8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gad9b6ba84fd439e642cbe28f33554e71c">mrpt::math::distance</a> (const TPolygon2D &amp;p1, const TSegment2D &amp;s2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between a polygon and a segment in a 2D space.  <a href="#gad9b6ba84fd439e642cbe28f33554e71c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gae4801fe47285acad2533585a42eac9cd">mrpt::math::distance</a> (const TSegment2D &amp;s1, const TPolygon2D &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between a segment and a polygon in a 2D space.  <a href="#gae4801fe47285acad2533585a42eac9cd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gada89a8be5877badb65b5128d2b35c250">mrpt::math::distance</a> (const TPolygon2D &amp;p1, const TLine2D &amp;l2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between a polygon and a line in a 2D space.  <a href="#gada89a8be5877badb65b5128d2b35c250"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga199640d96dc07d84a787660b07059b06">mrpt::math::distance</a> (const TLine2D &amp;l1, const TPolygon2D &amp;p2)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gacbd841c8d89a699c64e79884c22ea0ba">mrpt::math::distance</a> (const TPolygon3D &amp;p1, const TPolygon3D &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between two polygons in a 3D space.  <a href="#gacbd841c8d89a699c64e79884c22ea0ba"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gab7693757a867db8282375fad8218e0dc">mrpt::math::distance</a> (const TPolygon3D &amp;p1, const TSegment3D &amp;s2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between a polygon and a segment in a 3D space.  <a href="#gab7693757a867db8282375fad8218e0dc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga19a574fbbb884252278e69af2d4f64eb">mrpt::math::distance</a> (const TSegment3D &amp;s1, const TPolygon3D &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between a segment and a polygon in a 3D space.  <a href="#ga19a574fbbb884252278e69af2d4f64eb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga721c135698a885a94ef23e0881e8345b">mrpt::math::distance</a> (const TPolygon3D &amp;p1, const TLine3D &amp;l2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between a polygon and a line in a 3D space.  <a href="#ga721c135698a885a94ef23e0881e8345b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga50cc3a8b2fdca23879e8a2c8d3473199">mrpt::math::distance</a> (const TLine3D &amp;l1, const TPolygon3D &amp;p2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between a line and a polygon in a 3D space.  <a href="#ga50cc3a8b2fdca23879e8a2c8d3473199"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga653cfc905bc57d12cb5dd9ca53bf4b59">mrpt::math::distance</a> (const TPolygon3D &amp;po, const TPlane &amp;pl)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between a polygon and a plane.  <a href="#ga653cfc905bc57d12cb5dd9ca53bf4b59"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gabfb83bd00d767a1fa6c2f8f846577e23">mrpt::math::distance</a> (const TPlane &amp;pl, const TPolygon3D &amp;po)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance between a plane and a polygon.  <a href="#gabfb83bd00d767a1fa6c2f8f846577e23"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Bound checkers</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga4f4ff8f3ab7f6d609beb2e9c602cbc28">mrpt::math::getRectangleBounds</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint2D &gt; &amp;poly, TPoint2D &amp;pMin, TPoint2D &amp;pMax)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the rectangular bounds of a 2D polygon or set of 2D points.  <a href="#ga4f4ff8f3ab7f6d609beb2e9c602cbc28"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga772fe8216ba10a88dd6d4b261a53feaa">mrpt::math::getPrismBounds</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint3D &gt; &amp;poly, TPoint3D &amp;pMin, TPoint3D &amp;pMax)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the prism bounds of a 3D polygon or set of 3D points.  <a href="#ga772fe8216ba10a88dd6d4b261a53feaa"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Creation of planes from poses</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga74bce932e6ae7f5a091bd36d75467519">mrpt::math::createPlaneFromPoseXY</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;pose, TPlane &amp;plane)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Given a pose, creates a plane orthogonal to its Z vector.  <a href="#ga74bce932e6ae7f5a091bd36d75467519"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaff7d84e9126688dd125d24b1fc031bb5">mrpt::math::createPlaneFromPoseXZ</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;pose, TPlane &amp;plane)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Given a pose, creates a plane orthogonal to its Y vector.  <a href="#gaff7d84e9126688dd125d24b1fc031bb5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga593e98312e5c06b4c1080fe4a3b47242">mrpt::math::createPlaneFromPoseYZ</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;pose, TPlane &amp;plane)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Given a pose, creates a plane orthogonal to its X vector.  <a href="#ga593e98312e5c06b4c1080fe4a3b47242"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga362f34f935e4c160cbc394786b73a0b8">mrpt::math::createPlaneFromPoseAndNormal</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;pose, const double(&amp;normal)[3], TPlane &amp;plane)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Given a pose and any vector, creates a plane orthogonal to that vector in the pose's coordinates.  <a href="#ga362f34f935e4c160cbc394786b73a0b8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga1e345799e96a2fb5e84ac9f0df9230ef">mrpt::math::generateAxisBaseFromDirectionAndAxis</a> (const double(&amp;vec)[3], char coord, CMatrixDouble &amp;matrix)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a rotation matrix so that the coordinate given (0 for x, 1 for y, 2 for z) corresponds to the vector.  <a href="#ga1e345799e96a2fb5e84ac9f0df9230ef"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Linear regression methods</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga7c40628072431c08a126bef3bb2b9a27">mrpt::math::getRegressionLine</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint2D &gt; &amp;points, TLine2D &amp;line)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Using eigenvalues, gets the best fitting line for a set of 2D points.  <a href="#ga7c40628072431c08a126bef3bb2b9a27"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga22e1e2c2ed24415e715aefdcad488484">mrpt::math::getRegressionLine</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint3D &gt; &amp;points, TLine3D &amp;line)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Using eigenvalues, gets the best fitting line for a set of 3D points.  <a href="#ga22e1e2c2ed24415e715aefdcad488484"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga14d21b4e5b6277e7c0ea4f00b2eb2b3e">mrpt::math::getRegressionPlane</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint3D &gt; &amp;points, TPlane &amp;plane)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Using eigenvalues, gets the best fitting plane for a set of 3D points.  <a href="#ga14d21b4e5b6277e7c0ea4f00b2eb2b3e"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Miscellaneous Geometry methods</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga860ca5edc86af5e27d63153a8ceef98f">mrpt::math::assemblePolygons</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TSegment3D &gt; &amp;segms, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPolygon3D &gt; &amp;polys)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Tries to assemble a set of segments into a set of closed polygons.  <a href="#ga860ca5edc86af5e27d63153a8ceef98f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga927a72c85093f165001098fd2028708c">mrpt::math::assemblePolygons</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TSegment3D &gt; &amp;segms, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPolygon3D &gt; &amp;polys, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TSegment3D &gt; &amp;remainder)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Tries to assemble a set of segments into a set of closed polygons, returning the unused segments as another out parameter.  <a href="#ga927a72c85093f165001098fd2028708c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga57c1014049306be027d20a287dc7a2a0">mrpt::math::assemblePolygons</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TObject3D &gt; &amp;objs, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPolygon3D &gt; &amp;polys)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Extracts all the polygons, including those formed from segments, from the set of objects.  <a href="#ga57c1014049306be027d20a287dc7a2a0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaa34f06b2d1f84668a1b6adccce2cde10">mrpt::math::assemblePolygons</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TObject3D &gt; &amp;objs, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPolygon3D &gt; &amp;polys, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TObject3D &gt; &amp;remainder)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Extracts all the polygons, including those formed from segments, from the set of objects.  <a href="#gaa34f06b2d1f84668a1b6adccce2cde10"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga4ccb936a18106fbe80fc3661e6f7ea98">mrpt::math::assemblePolygons</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TObject3D &gt; &amp;objs, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPolygon3D &gt; &amp;polys, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TSegment3D &gt; &amp;remainder1, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TObject3D &gt; &amp;remainder2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Extracts all the polygons, including those formed from segments, from the set of objects.  <a href="#ga4ccb936a18106fbe80fc3661e6f7ea98"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga6ee56196af1534bb1c408eb5fedbc64a">mrpt::math::setEpsilon</a> (double nE)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes the value of the geometric epsilon.  <a href="#ga6ee56196af1534bb1c408eb5fedbc64a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gac164dcd4d3f3b2a46fd098cae08bfc7f">mrpt::math::getEpsilon</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the value of the geometric epsilon.  <a href="#gac164dcd4d3f3b2a46fd098cae08bfc7f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga765a2078a3e24f5a172b14b0a5e8edcf">mrpt::math::splitInConvexComponents</a> (const TPolygon2D &amp;poly, vector&lt; TPolygon2D &gt; &amp;components)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Splits a 2D polygon into convex components.  <a href="#ga765a2078a3e24f5a172b14b0a5e8edcf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga450bca4f9e960756f29c65167f4824c1">mrpt::math::splitInConvexComponents</a> (const TPolygon3D &amp;poly, vector&lt; TPolygon3D &gt; &amp;components)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Splits a 3D polygon into convex components.  <a href="#ga450bca4f9e960756f29c65167f4824c1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gac104a1bc6eb508467389666e7cc20c2e">mrpt::math::getSegmentBisector</a> (const TSegment2D &amp;sgm, TLine2D &amp;bis)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the bisector of a 2D segment.  <a href="#gac104a1bc6eb508467389666e7cc20c2e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga73c52bb85ac39cc29e4fe46f93f446f3">mrpt::math::getSegmentBisector</a> (const TSegment3D &amp;sgm, TPlane &amp;bis)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the bisector of a 3D segment.  <a href="#ga73c52bb85ac39cc29e4fe46f93f446f3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga81505df2cba76f0399244d46096da571">mrpt::math::getAngleBisector</a> (const TLine2D &amp;l1, const TLine2D &amp;l2, TLine2D &amp;bis)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the bisector of two lines or segments (implicit constructor will be used if necessary)  <a href="#ga81505df2cba76f0399244d46096da571"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga00dea7e409f8bd9d6a2e6b98f868a0ce">mrpt::math::getAngleBisector</a> (const TLine3D &amp;l1, const TLine3D &amp;l2, TLine3D &amp;bis)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the bisector of two lines or segments (implicit constructor will be used if necessary)  <a href="#ga00dea7e409f8bd9d6a2e6b98f868a0ce"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga363e00600f9c000dd774e6c721faba7d">mrpt::math::traceRay</a> (const vector&lt; TPolygonWithPlane &gt; &amp;vec, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">mrpt::poses::CPose3D</a> &amp;pose, double &amp;dist)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Fast ray tracing method using polygons' properties.  <a href="#ga363e00600f9c000dd774e6c721faba7d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gad3a55044d9f2abb347c7221e3e58d45e">mrpt::math::traceRay</a> (const vector&lt; TPolygon3D &gt; &amp;vec, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">mrpt::poses::CPose3D</a> &amp;pose, double &amp;dist)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Fast ray tracing method using polygons' properties.  <a href="#gad3a55044d9f2abb347c7221e3e58d45e"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T , class U , class V &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gad8d6fbe91133eb0caa6722ae378ea3fb">mrpt::math::crossProduct3D</a> (const T &amp;v0, const U &amp;v1, V &amp;vOut)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the cross product of two 3D vectors, returning a vector normal to both.  <a href="#gad8d6fbe91133eb0caa6722ae378ea3fb"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga20dcc4f19cc9529611235c78937e1ea5">mrpt::math::crossProduct3D</a> (const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;v0, const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;v1, <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;v_out)</td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class VEC1 , class VEC2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="class_eigen_1_1_matrix.html">Eigen::Matrix</a>&lt; double, 3, 1 &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga8434b52fe61bfea34a87705c3c296b9e">mrpt::math::crossProduct3D</a> (const VEC1 &amp;v0, const VEC2 &amp;v1)</td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class VECTOR , class MATRIX &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga1d062ce80412bd12f853b032f7822edb">mrpt::math::skew_symmetric3</a> (const VECTOR &amp;v, MATRIX &amp;M)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the 3x3 skew symmetric matrix from a 3-vector or 3-array: </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ M([x ~ y ~ z]^\top) = \left( \begin{array}{c c c} 0 &amp; -z &amp; y \\ z &amp; 0 &amp; -x \\ -y &amp; x &amp; 0 \end{array} \right) \]" src="form_11.png"/>
</p>
<p>.  <a href="#ga1d062ce80412bd12f853b032f7822edb"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class VECTOR &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">mrpt::math::CMatrixDouble33</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga885c8e7de7ba80f5d314d4ec0a161d02">mrpt::math::skew_symmetric3</a> (const VECTOR &amp;v)</td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class VECTOR , class MATRIX &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaa6594f63ac8850608581cbda8c2425c9">mrpt::math::skew_symmetric3_neg</a> (const VECTOR &amp;v, MATRIX &amp;M)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the negative version of a 3x3 skew symmetric matrix from a 3-vector or 3-array: </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ -M([x ~ y ~ z]^\top) = \left( \begin{array}{c c c} 0 &amp; z &amp; -y \\ -z &amp; 0 &amp; x \\ y &amp; -x &amp; 0 \end{array} \right) \]" src="form_12.png"/>
</p>
<p>.  <a href="#gaa6594f63ac8850608581cbda8c2425c9"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class VECTOR &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">mrpt::math::CMatrixDouble33</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga88a1a74aa8e47de309e4b00dfb1b2d9b">mrpt::math::skew_symmetric3_neg</a> (const VECTOR &amp;v)</td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T , class U &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga02898caca2e86295b143fddb35be2d02">mrpt::math::vectorsAreParallel2D</a> (const T &amp;v1, const U &amp;v2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if two 2D vectors are parallel.  <a href="#ga02898caca2e86295b143fddb35be2d02"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T , class U &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga8e6c754edead58282fc8bc2fe030a28f">mrpt::math::vectorsAreParallel3D</a> (const T &amp;v1, const U &amp;v2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if two 3D vectors are parallel.  <a href="#ga8e6c754edead58282fc8bc2fe030a28f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gad9aef76403111b275219b248ef857f0d">mrpt::math::minimumDistanceFromPointToSegment</a> (const double &amp;Px, const double &amp;Py, const double &amp;x1, const double &amp;y1, const double &amp;x2, const double &amp;y2, double &amp;out_x, double &amp;out_y)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the closest point from a given point to a segment, and returns that minimum distance.  <a href="#gad9aef76403111b275219b248ef857f0d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaa1f65418a798a5c7cc0570ea311ad596">mrpt::math::minimumDistanceFromPointToSegment</a> (const double &amp;Px, const double &amp;Py, const double &amp;x1, const double &amp;y1, const double &amp;x2, const double &amp;y2, float &amp;out_x, float &amp;out_y)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the closest point from a given point to a segment, and returns that minimum distance.  <a href="#gaa1f65418a798a5c7cc0570ea311ad596"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gae7ede60214c324413b05a0624523d20c">mrpt::math::closestFromPointToSegment</a> (const double &amp;Px, const double &amp;Py, const double &amp;x1, const double &amp;y1, const double &amp;x2, const double &amp;y2, double &amp;out_x, double &amp;out_y)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the closest point from a given point to a segment.  <a href="#gae7ede60214c324413b05a0624523d20c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gac5f11f2c4b55831c3ffff7131b8e8c5f">mrpt::math::closestFromPointToLine</a> (const double &amp;Px, const double &amp;Py, const double &amp;x1, const double &amp;y1, const double &amp;x2, const double &amp;y2, double &amp;out_x, double &amp;out_y)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the closest point from a given point to a (infinite) line.  <a href="#gac5f11f2c4b55831c3ffff7131b8e8c5f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga34b47b2f0ce0b415dbbc012d416eb8f8">mrpt::math::closestSquareDistanceFromPointToLine</a> (const double &amp;Px, const double &amp;Py, const double &amp;x1, const double &amp;y1, const double &amp;x2, const double &amp;y2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the square distance from a point to a line.  <a href="#ga34b47b2f0ce0b415dbbc012d416eb8f8"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaa750f334af9804daea1b6c748fb5544f">mrpt::math::distanceBetweenPoints</a> (const T x1, const T y1, const T x2, const T y2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the distance between 2 points in 2D.  <a href="#gaa750f334af9804daea1b6c748fb5544f"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gaf9f23698674258694e4ccf1b65d883d9">mrpt::math::distanceBetweenPoints</a> (const T x1, const T y1, const T z1, const T x2, const T y2, const T z2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the distance between 2 points in 3D.  <a href="#gaf9f23698674258694e4ccf1b65d883d9"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga317e06b958f0d87add2bf964a831f4a6">mrpt::math::distanceSqrBetweenPoints</a> (const T x1, const T y1, const T x2, const T y2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the square distance between 2 points in 2D.  <a href="#ga317e06b958f0d87add2bf964a831f4a6"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga43a105e4de12406d0f1ec02bfa068efd">mrpt::math::distanceSqrBetweenPoints</a> (const T x1, const T y1, const T z1, const T x2, const T y2, const T z2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the square distance between 2 points in 3D.  <a href="#ga43a105e4de12406d0f1ec02bfa068efd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gae1e629aecd4f3ef90c946f7922f628d2">mrpt::math::SegmentsIntersection</a> (const double &amp;x1, const double &amp;y1, const double &amp;x2, const double &amp;y2, const double &amp;x3, const double &amp;y3, const double &amp;x4, const double &amp;y4, double &amp;ix, double &amp;iy)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the intersection point, and if it exists, between two segments.  <a href="#gae1e629aecd4f3ef90c946f7922f628d2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga78b43ed0140e819f4d736e0f1b89a9b6">mrpt::math::SegmentsIntersection</a> (const double &amp;x1, const double &amp;y1, const double &amp;x2, const double &amp;y2, const double &amp;x3, const double &amp;y3, const double &amp;x4, const double &amp;y4, float &amp;ix, float &amp;iy)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the intersection point, and if it exists, between two segments.  <a href="#ga78b43ed0140e819f4d736e0f1b89a9b6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga2d3279e82ce6d2c47c8152079a3ef281">mrpt::math::pointIntoPolygon2D</a> (const double &amp;px, const double &amp;py, unsigned int polyEdges, const double *poly_xs, const double *poly_ys)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the 2D point (px,py) falls INTO the given polygon.  <a href="#ga2d3279e82ce6d2c47c8152079a3ef281"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga7a045689c27da5ed560fb9c0da6afece">mrpt::math::pointIntoQuadrangle</a> (T x, T y, T v1x, T v1y, T v2x, T v2y, T v3x, T v3y, T v4x, T v4y)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Specialized method to check whether a point (x,y) falls into a quadrangle.  <a href="#ga7a045689c27da5ed560fb9c0da6afece"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga4a37a7be7002726067dc30938747136c">mrpt::math::distancePointToPolygon2D</a> (const double &amp;px, const double &amp;py, unsigned int polyEdges, const double *poly_xs, const double *poly_ys)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the closest distance of a given 2D point to a polygon, or "0" if the point is INTO the polygon or its perimeter.  <a href="#ga4a37a7be7002726067dc30938747136c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga65cdc0ef2b5080fbd70b5c8019da00dc">mrpt::math::minDistBetweenLines</a> (const double &amp;p1_x, const double &amp;p1_y, const double &amp;p1_z, const double &amp;p2_x, const double &amp;p2_y, const double &amp;p2_z, const double &amp;p3_x, const double &amp;p3_y, const double &amp;p3_z, const double &amp;p4_x, const double &amp;p4_y, const double &amp;p4_z, double &amp;x, double &amp;y, double &amp;z, double &amp;dist)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the minimum distance between a pair of lines.  <a href="#ga65cdc0ef2b5080fbd70b5c8019da00dc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga47a389f6645848187e5b8490d20c6bf0">mrpt::math::RectanglesIntersection</a> (const double &amp;R1_x_min, const double &amp;R1_x_max, const double &amp;R1_y_min, const double &amp;R1_y_max, const double &amp;R2_x_min, const double &amp;R2_x_max, const double &amp;R2_y_min, const double &amp;R2_y_max, const double &amp;R2_pose_x, const double &amp;R2_pose_y, const double &amp;R2_pose_phi)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns wether two rotated rectangles intersect.  <a href="#ga47a389f6645848187e5b8490d20c6bf0"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">CMatrixTemplateNumeric&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gac393ef41292790bb8983997c5e1fda56">mrpt::math::generateAxisBaseFromDirection</a> (T dx, T dy, T dz)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes an axis base (a set of three 3D normal vectors) with the given vector being the first of them.  <a href="#gac393ef41292790bb8983997c5e1fda56"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename VECTOR_LIKE , typename Precision , typename MATRIX_LIKE &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#gac093231a869a1c120f56f8f661b11cc4">mrpt::math::rodrigues_so3_exp</a> (const VECTOR_LIKE &amp;w, const Precision A, const Precision B, MATRIX_LIKE &amp;R)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute a rotation exponential using the Rodrigues Formula.  <a href="#gac093231a869a1c120f56f8f661b11cc4"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
SLERP (Spherical Linear Interpolation) functions</h2></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga3e9a5920971ffc3caa6649159bc5a156">mrpt::math::slerp</a> (const CQuaternion&lt; T &gt; &amp;q0, const CQuaternion&lt; T &gt; &amp;q1, const double t, CQuaternion&lt; T &gt; &amp;q)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">SLERP interpolation between two quaternions.  <a href="#ga3e9a5920971ffc3caa6649159bc5a156"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga6518fde1921c7113e333e5abb1d3728c">mrpt::math::slerp</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;q0, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;q1, const double t, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;p)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">SLERP interpolation between two 6D poses - like <a class="el" href="group__geometry__grp.html#ga3e9a5920971ffc3caa6649159bc5a156" title="SLERP interpolation between two quaternions.">mrpt::math::slerp</a> for quaternions, but interpolates the [X,Y,Z] coordinates as well.  <a href="#ga6518fde1921c7113e333e5abb1d3728c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__geometry__grp.html#ga1b4ce76cc8f3b03289875af202272ab8">mrpt::math::slerp</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_quat.html">CPose3DQuat</a> &amp;q0, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_quat.html">CPose3DQuat</a> &amp;q1, const double t, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_quat.html">CPose3DQuat</a> &amp;p)</td></tr>
</table>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="ga059f9e940d0d3c842d7ca1cec3c4f999"></a><!-- doxytag: member="mrpt::math::TPlane3D" ref="ga059f9e940d0d3c842d7ca1cec3c4f999" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef TPlane <a class="el" href="group__geometry__grp.html#ga059f9e940d0d3c842d7ca1cec3c4f999">mrpt::math::TPlane3D</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l01068">1068</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga0ff9066099dc3cb3bf0b0cdc75b87b8a"></a><!-- doxytag: member="mrpt::math::areAligned" ref="ga0ff9066099dc3cb3bf0b0cdc75b87b8a" args="(const std::vector&lt; TPoint2D &gt; &amp;points)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::areAligned </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint2D &gt; &amp;&#160;</td>
          <td class="paramname"><em>points</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Checks whether this set of points acceptably fits a 2D line. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#ga1c443a200f0be17fb54bfc78c62acf45" title="Global epsilon to overcome small precision errors.">geometryEpsilon</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gad7014fc391058b221defb91929041222"></a><!-- doxytag: member="mrpt::math::areAligned" ref="gad7014fc391058b221defb91929041222" args="(const std::vector&lt; TPoint2D &gt; &amp;points, TLine2D &amp;r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::areAligned </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint2D &gt; &amp;&#160;</td>
          <td class="paramname"><em>points</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine2D &amp;&#160;</td>
          <td class="paramname"><em>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Checks whether this set of points acceptably fits a 2D line, and if it's the case returns it in the second argument. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#ga1c443a200f0be17fb54bfc78c62acf45" title="Global epsilon to overcome small precision errors.">geometryEpsilon</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga72e1bfd0dc3a8c42136d7aa6f1183c6b"></a><!-- doxytag: member="mrpt::math::areAligned" ref="ga72e1bfd0dc3a8c42136d7aa6f1183c6b" args="(const std::vector&lt; TPoint3D &gt; &amp;points)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::areAligned </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>points</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Checks whether this set of points acceptably fits a 3D line. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#ga1c443a200f0be17fb54bfc78c62acf45" title="Global epsilon to overcome small precision errors.">geometryEpsilon</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga8cdcecef3e540abce49bbbb165ee054e"></a><!-- doxytag: member="mrpt::math::areAligned" ref="ga8cdcecef3e540abce49bbbb165ee054e" args="(const std::vector&lt; TPoint3D &gt; &amp;points, TLine3D &amp;r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::areAligned </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>points</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Checks whether this set of points acceptably fits a 3D line, and if it's the case returns it in the second argument. </p>

</div>
</div>
<a class="anchor" id="ga860ca5edc86af5e27d63153a8ceef98f"></a><!-- doxytag: member="mrpt::math::assemblePolygons" ref="ga860ca5edc86af5e27d63153a8ceef98f" args="(const std::vector&lt; TSegment3D &gt; &amp;segms, std::vector&lt; TPolygon3D &gt; &amp;polys)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::assemblePolygons </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TSegment3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>segms</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; TPolygon3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>polys</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Tries to assemble a set of segments into a set of closed polygons. </p>

</div>
</div>
<a class="anchor" id="ga927a72c85093f165001098fd2028708c"></a><!-- doxytag: member="mrpt::math::assemblePolygons" ref="ga927a72c85093f165001098fd2028708c" args="(const std::vector&lt; TSegment3D &gt; &amp;segms, std::vector&lt; TPolygon3D &gt; &amp;polys, std::vector&lt; TSegment3D &gt; &amp;remainder)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::assemblePolygons </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TSegment3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>segms</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; TPolygon3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>polys</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; TSegment3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>remainder</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Tries to assemble a set of segments into a set of closed polygons, returning the unused segments as another out parameter. </p>

</div>
</div>
<a class="anchor" id="ga57c1014049306be027d20a287dc7a2a0"></a><!-- doxytag: member="mrpt::math::assemblePolygons" ref="ga57c1014049306be027d20a287dc7a2a0" args="(const std::vector&lt; TObject3D &gt; &amp;objs, std::vector&lt; TPolygon3D &gt; &amp;polys)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::assemblePolygons </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TObject3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>objs</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; TPolygon3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>polys</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Extracts all the polygons, including those formed from segments, from the set of objects. </p>

</div>
</div>
<a class="anchor" id="gaa34f06b2d1f84668a1b6adccce2cde10"></a><!-- doxytag: member="mrpt::math::assemblePolygons" ref="gaa34f06b2d1f84668a1b6adccce2cde10" args="(const std::vector&lt; TObject3D &gt; &amp;objs, std::vector&lt; TPolygon3D &gt; &amp;polys, std::vector&lt; TObject3D &gt; &amp;remainder)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::assemblePolygons </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TObject3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>objs</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; TPolygon3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>polys</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; TObject3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>remainder</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Extracts all the polygons, including those formed from segments, from the set of objects. </p>

</div>
</div>
<a class="anchor" id="ga4ccb936a18106fbe80fc3661e6f7ea98"></a><!-- doxytag: member="mrpt::math::assemblePolygons" ref="ga4ccb936a18106fbe80fc3661e6f7ea98" args="(const std::vector&lt; TObject3D &gt; &amp;objs, std::vector&lt; TPolygon3D &gt; &amp;polys, std::vector&lt; TSegment3D &gt; &amp;remainder1, std::vector&lt; TObject3D &gt; &amp;remainder2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::assemblePolygons </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TObject3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>objs</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; TPolygon3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>polys</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; TSegment3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>remainder1</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; TObject3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>remainder2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Extracts all the polygons, including those formed from segments, from the set of objects. </p>

</div>
</div>
<a class="anchor" id="gac5f11f2c4b55831c3ffff7131b8e8c5f"></a><!-- doxytag: member="mrpt::math::closestFromPointToLine" ref="gac5f11f2c4b55831c3ffff7131b8e8c5f" args="(const double &amp;Px, const double &amp;Py, const double &amp;x1, const double &amp;y1, const double &amp;x2, const double &amp;y2, double &amp;out_x, double &amp;out_y)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::closestFromPointToLine </td>
          <td>(</td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>Px</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>Py</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>out_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>out_y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the closest point from a given point to a (infinite) line. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#gae7ede60214c324413b05a0624523d20c" title="Computes the closest point from a given point to a segment.">closestFromPointToSegment</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gae7ede60214c324413b05a0624523d20c"></a><!-- doxytag: member="mrpt::math::closestFromPointToSegment" ref="gae7ede60214c324413b05a0624523d20c" args="(const double &amp;Px, const double &amp;Py, const double &amp;x1, const double &amp;y1, const double &amp;x2, const double &amp;y2, double &amp;out_x, double &amp;out_y)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::closestFromPointToSegment </td>
          <td>(</td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>Px</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>Py</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>out_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>out_y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the closest point from a given point to a segment. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#gac5f11f2c4b55831c3ffff7131b8e8c5f" title="Computes the closest point from a given point to a (infinite) line.">closestFromPointToLine</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga34b47b2f0ce0b415dbbc012d416eb8f8"></a><!-- doxytag: member="mrpt::math::closestSquareDistanceFromPointToLine" ref="ga34b47b2f0ce0b415dbbc012d416eb8f8" args="(const double &amp;Px, const double &amp;Py, const double &amp;x1, const double &amp;y1, const double &amp;x2, const double &amp;y2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::closestSquareDistanceFromPointToLine </td>
          <td>(</td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>Px</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>Py</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the square distance from a point to a line. </p>

</div>
</div>
<a class="anchor" id="ga4368cd73dd158c3263fb838453513c6e"></a><!-- doxytag: member="mrpt::math::conformAPlane" ref="ga4368cd73dd158c3263fb838453513c6e" args="(const std::vector&lt; TPoint3D &gt; &amp;points)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::conformAPlane </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>points</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Checks whether this polygon or set of points acceptably fits a plane. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1math_1_1_t_polygon3_d.html" title="3D polygon, inheriting from std::vector&lt;TPoint3D&gt;">TPolygon3D</a>,<a class="el" href="group__geometry__grp.html#ga1c443a200f0be17fb54bfc78c62acf45" title="Global epsilon to overcome small precision errors.">geometryEpsilon</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gafcfafea1b78be503e8b6b789c79b51c2"></a><!-- doxytag: member="mrpt::math::conformAPlane" ref="gafcfafea1b78be503e8b6b789c79b51c2" args="(const std::vector&lt; TPoint3D &gt; &amp;points, TPlane &amp;p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::conformAPlane </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>points</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPlane &amp;&#160;</td>
          <td class="paramname"><em>p</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Checks whether this polygon or set of points acceptably fits a plane, and if it's the case returns it in the second argument. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1math_1_1_t_polygon3_d.html" title="3D polygon, inheriting from std::vector&lt;TPoint3D&gt;">TPolygon3D</a>,<a class="el" href="group__geometry__grp.html#ga1c443a200f0be17fb54bfc78c62acf45" title="Global epsilon to overcome small precision errors.">geometryEpsilon</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gafef50d9c5a0bc347ae26a406bcda5266"></a><!-- doxytag: member="mrpt::math::createFromPoseAndVector" ref="gafef50d9c5a0bc347ae26a406bcda5266" args="(const CPose3D &amp;p, const double(&amp;vector)[3], TLine3D &amp;r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::createFromPoseAndVector </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double(&amp;)&#160;</td>
          <td class="paramname"><em>vector</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets a 3D line corresponding to any arbitrary vector, in the base given by the pose. </p>
<p>An implicit constructor is used if a <a class="el" href="structmrpt_1_1math_1_1_t_pose3_d.html" title="Lightweight 3D pose (three spatial coordinates, plus three angular coordinates).">TPose3D</a> is given. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#gaa1633ebc71f0ee7d470f30b2eea943a8" title="Gets a 3D line corresponding to the X axis in a given pose.">createFromPoseX</a>,<a class="el" href="group__geometry__grp.html#gae5b442ae15de11a3346b1e3255a7df4c" title="Gets a 3D line corresponding to the Y axis in a given pose.">createFromPoseY</a>,<a class="el" href="group__geometry__grp.html#ga4ee6495c3cc59db23593a54b0956ca0a" title="Gets a 3D line corresponding to the Z axis in a given pose.">createFromPoseZ</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga9873d4e1a924d239cb3a25b21d1c5bfe"></a><!-- doxytag: member="mrpt::math::createFromPoseAndVector" ref="ga9873d4e1a924d239cb3a25b21d1c5bfe" args="(const TPose2D &amp;p, const double(&amp;vector)[2], TLine2D &amp;r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::createFromPoseAndVector </td>
          <td>(</td>
          <td class="paramtype">const TPose2D &amp;&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double(&amp;)&#160;</td>
          <td class="paramname"><em>vector</em>[2], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine2D &amp;&#160;</td>
          <td class="paramname"><em>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets a 2D line corresponding to any arbitrary vector, in the base given the given pose. </p>
<p>An implicit constructor is used if a CPose2D is given. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#gae5b442ae15de11a3346b1e3255a7df4c" title="Gets a 3D line corresponding to the Y axis in a given pose.">createFromPoseY</a>,<a class="el" href="group__geometry__grp.html#gafef50d9c5a0bc347ae26a406bcda5266" title="Gets a 3D line corresponding to any arbitrary vector, in the base given by the pose.">createFromPoseAndVector</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gaa1633ebc71f0ee7d470f30b2eea943a8"></a><!-- doxytag: member="mrpt::math::createFromPoseX" ref="gaa1633ebc71f0ee7d470f30b2eea943a8" args="(const CPose3D &amp;p, TLine3D &amp;r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::createFromPoseX </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets a 3D line corresponding to the X axis in a given pose. </p>
<p>An implicit constructor is used if a <a class="el" href="structmrpt_1_1math_1_1_t_pose3_d.html" title="Lightweight 3D pose (three spatial coordinates, plus three angular coordinates).">TPose3D</a> is given. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#gae5b442ae15de11a3346b1e3255a7df4c" title="Gets a 3D line corresponding to the Y axis in a given pose.">createFromPoseY</a>,<a class="el" href="group__geometry__grp.html#ga4ee6495c3cc59db23593a54b0956ca0a" title="Gets a 3D line corresponding to the Z axis in a given pose.">createFromPoseZ</a>,<a class="el" href="group__geometry__grp.html#gafef50d9c5a0bc347ae26a406bcda5266" title="Gets a 3D line corresponding to any arbitrary vector, in the base given by the pose.">createFromPoseAndVector</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gabf4854bde197d4a2c6f923fdc59386d0"></a><!-- doxytag: member="mrpt::math::createFromPoseX" ref="gabf4854bde197d4a2c6f923fdc59386d0" args="(const TPose2D &amp;p, TLine2D &amp;r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::createFromPoseX </td>
          <td>(</td>
          <td class="paramtype">const TPose2D &amp;&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine2D &amp;&#160;</td>
          <td class="paramname"><em>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets a 2D line corresponding to the X axis in a given pose. </p>
<p>An implicit constructor is used if a CPose2D is given. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#gae5b442ae15de11a3346b1e3255a7df4c" title="Gets a 3D line corresponding to the Y axis in a given pose.">createFromPoseY</a>,<a class="el" href="group__geometry__grp.html#gafef50d9c5a0bc347ae26a406bcda5266" title="Gets a 3D line corresponding to any arbitrary vector, in the base given by the pose.">createFromPoseAndVector</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gae5b442ae15de11a3346b1e3255a7df4c"></a><!-- doxytag: member="mrpt::math::createFromPoseY" ref="gae5b442ae15de11a3346b1e3255a7df4c" args="(const CPose3D &amp;p, TLine3D &amp;r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::createFromPoseY </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets a 3D line corresponding to the Y axis in a given pose. </p>
<p>An implicit constructor is used if a <a class="el" href="structmrpt_1_1math_1_1_t_pose3_d.html" title="Lightweight 3D pose (three spatial coordinates, plus three angular coordinates).">TPose3D</a> is given. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#gaa1633ebc71f0ee7d470f30b2eea943a8" title="Gets a 3D line corresponding to the X axis in a given pose.">createFromPoseX</a>,<a class="el" href="group__geometry__grp.html#ga4ee6495c3cc59db23593a54b0956ca0a" title="Gets a 3D line corresponding to the Z axis in a given pose.">createFromPoseZ</a>,<a class="el" href="group__geometry__grp.html#gafef50d9c5a0bc347ae26a406bcda5266" title="Gets a 3D line corresponding to any arbitrary vector, in the base given by the pose.">createFromPoseAndVector</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gaa9351feda24873f86b011fe92520043e"></a><!-- doxytag: member="mrpt::math::createFromPoseY" ref="gaa9351feda24873f86b011fe92520043e" args="(const TPose2D &amp;p, TLine2D &amp;r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::createFromPoseY </td>
          <td>(</td>
          <td class="paramtype">const TPose2D &amp;&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine2D &amp;&#160;</td>
          <td class="paramname"><em>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets a 2D line corresponding to the Y axis in a given pose. </p>
<p>An implicit constructor is used if a CPose2D is given. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#gaa1633ebc71f0ee7d470f30b2eea943a8" title="Gets a 3D line corresponding to the X axis in a given pose.">createFromPoseX</a>,<a class="el" href="group__geometry__grp.html#gafef50d9c5a0bc347ae26a406bcda5266" title="Gets a 3D line corresponding to any arbitrary vector, in the base given by the pose.">createFromPoseAndVector</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga4ee6495c3cc59db23593a54b0956ca0a"></a><!-- doxytag: member="mrpt::math::createFromPoseZ" ref="ga4ee6495c3cc59db23593a54b0956ca0a" args="(const CPose3D &amp;p, TLine3D &amp;r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::createFromPoseZ </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets a 3D line corresponding to the Z axis in a given pose. </p>
<p>An implicit constructor is used if a <a class="el" href="structmrpt_1_1math_1_1_t_pose3_d.html" title="Lightweight 3D pose (three spatial coordinates, plus three angular coordinates).">TPose3D</a> is given. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#gaa1633ebc71f0ee7d470f30b2eea943a8" title="Gets a 3D line corresponding to the X axis in a given pose.">createFromPoseX</a>,<a class="el" href="group__geometry__grp.html#gae5b442ae15de11a3346b1e3255a7df4c" title="Gets a 3D line corresponding to the Y axis in a given pose.">createFromPoseY</a>,<a class="el" href="group__geometry__grp.html#gafef50d9c5a0bc347ae26a406bcda5266" title="Gets a 3D line corresponding to any arbitrary vector, in the base given by the pose.">createFromPoseAndVector</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga362f34f935e4c160cbc394786b73a0b8"></a><!-- doxytag: member="mrpt::math::createPlaneFromPoseAndNormal" ref="ga362f34f935e4c160cbc394786b73a0b8" args="(const CPose3D &amp;pose, const double(&amp;normal)[3], TPlane &amp;plane)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::createPlaneFromPoseAndNormal </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>pose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double(&amp;)&#160;</td>
          <td class="paramname"><em>normal</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPlane &amp;&#160;</td>
          <td class="paramname"><em>plane</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Given a pose and any vector, creates a plane orthogonal to that vector in the pose's coordinates. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#ga74bce932e6ae7f5a091bd36d75467519" title="Given a pose, creates a plane orthogonal to its Z vector.">createPlaneFromPoseXY</a>,<a class="el" href="group__geometry__grp.html#gaff7d84e9126688dd125d24b1fc031bb5" title="Given a pose, creates a plane orthogonal to its Y vector.">createPlaneFromPoseXZ</a>,<a class="el" href="group__geometry__grp.html#ga593e98312e5c06b4c1080fe4a3b47242" title="Given a pose, creates a plane orthogonal to its X vector.">createPlaneFromPoseYZ</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga74bce932e6ae7f5a091bd36d75467519"></a><!-- doxytag: member="mrpt::math::createPlaneFromPoseXY" ref="ga74bce932e6ae7f5a091bd36d75467519" args="(const CPose3D &amp;pose, TPlane &amp;plane)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::createPlaneFromPoseXY </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>pose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPlane &amp;&#160;</td>
          <td class="paramname"><em>plane</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Given a pose, creates a plane orthogonal to its Z vector. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#gaff7d84e9126688dd125d24b1fc031bb5" title="Given a pose, creates a plane orthogonal to its Y vector.">createPlaneFromPoseXZ</a>,<a class="el" href="group__geometry__grp.html#ga593e98312e5c06b4c1080fe4a3b47242" title="Given a pose, creates a plane orthogonal to its X vector.">createPlaneFromPoseYZ</a>,<a class="el" href="group__geometry__grp.html#ga362f34f935e4c160cbc394786b73a0b8" title="Given a pose and any vector, creates a plane orthogonal to that vector in the pose&#39;s coordinates...">createPlaneFromPoseAndNormal</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gaff7d84e9126688dd125d24b1fc031bb5"></a><!-- doxytag: member="mrpt::math::createPlaneFromPoseXZ" ref="gaff7d84e9126688dd125d24b1fc031bb5" args="(const CPose3D &amp;pose, TPlane &amp;plane)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::createPlaneFromPoseXZ </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>pose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPlane &amp;&#160;</td>
          <td class="paramname"><em>plane</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Given a pose, creates a plane orthogonal to its Y vector. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#ga74bce932e6ae7f5a091bd36d75467519" title="Given a pose, creates a plane orthogonal to its Z vector.">createPlaneFromPoseXY</a>,<a class="el" href="group__geometry__grp.html#ga593e98312e5c06b4c1080fe4a3b47242" title="Given a pose, creates a plane orthogonal to its X vector.">createPlaneFromPoseYZ</a>,<a class="el" href="group__geometry__grp.html#ga362f34f935e4c160cbc394786b73a0b8" title="Given a pose and any vector, creates a plane orthogonal to that vector in the pose&#39;s coordinates...">createPlaneFromPoseAndNormal</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga593e98312e5c06b4c1080fe4a3b47242"></a><!-- doxytag: member="mrpt::math::createPlaneFromPoseYZ" ref="ga593e98312e5c06b4c1080fe4a3b47242" args="(const CPose3D &amp;pose, TPlane &amp;plane)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::createPlaneFromPoseYZ </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>pose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPlane &amp;&#160;</td>
          <td class="paramname"><em>plane</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Given a pose, creates a plane orthogonal to its X vector. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#ga74bce932e6ae7f5a091bd36d75467519" title="Given a pose, creates a plane orthogonal to its Z vector.">createPlaneFromPoseXY</a>,<a class="el" href="group__geometry__grp.html#gaff7d84e9126688dd125d24b1fc031bb5" title="Given a pose, creates a plane orthogonal to its Y vector.">createPlaneFromPoseXZ</a>,<a class="el" href="group__geometry__grp.html#ga362f34f935e4c160cbc394786b73a0b8" title="Given a pose and any vector, creates a plane orthogonal to that vector in the pose&#39;s coordinates...">createPlaneFromPoseAndNormal</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gad8d6fbe91133eb0caa6722ae378ea3fb"></a><!-- doxytag: member="mrpt::math::crossProduct3D" ref="gad8d6fbe91133eb0caa6722ae378ea3fb" args="(const T &amp;v0, const U &amp;v1, V &amp;vOut)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , class U , class V &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::crossProduct3D </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>v0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const U &amp;&#160;</td>
          <td class="paramname"><em>v1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">V &amp;&#160;</td>
          <td class="paramname"><em>vOut</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the cross product of two 3D vectors, returning a vector normal to both. </p>
<p>It uses the simple implementation:</p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ v_out = \left( \begin{array}{c c c} \hat{i} ~ \hat{j} ~ \hat{k} \\ x0 ~ y0 ~ z0 \\ x1 ~ y1 ~ z1 \\ \end{array} \right) \]" src="form_10.png"/>
</p>
 
<p>Definition at line <a class="el" href="geometry_8h_source.html#l00775">775</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>Referenced by <a class="el" href="geometry_8h_source.html#l01080">mrpt::math::generateAxisBaseFromDirection()</a>.</p>

</div>
</div>
<a class="anchor" id="ga20dcc4f19cc9529611235c78937e1ea5"></a><!-- doxytag: member="mrpt::math::crossProduct3D" ref="ga20dcc4f19cc9529611235c78937e1ea5" args="(const std::vector&lt; T &gt; &amp;v0, const std::vector&lt; T &gt; &amp;v1, std::vector&lt; T &gt; &amp;v_out)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::crossProduct3D </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>v0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>v1</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; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>v_out</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><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="geometry_8h_source.html#l00783">783</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="mrpt__macros_8h_source.html#l00282">ASSERT_</a>.</p>

</div>
</div>
<a class="anchor" id="ga8434b52fe61bfea34a87705c3c296b9e"></a><!-- doxytag: member="mrpt::math::crossProduct3D" ref="ga8434b52fe61bfea34a87705c3c296b9e" args="(const VEC1 &amp;v0, const VEC2 &amp;v1)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class VEC1 , class VEC2 &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_eigen_1_1_matrix.html">Eigen::Matrix</a>&lt;double,3,1&gt; mrpt::math::crossProduct3D </td>
          <td>(</td>
          <td class="paramtype">const VEC1 &amp;&#160;</td>
          <td class="paramname"><em>v0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const VEC2 &amp;&#160;</td>
          <td class="paramname"><em>v1</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><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="geometry_8h_source.html#l00798">798</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga8c0a76e906f12560cfa49fcd269c8398"></a><!-- doxytag: member="mrpt::math::distance" ref="ga8c0a76e906f12560cfa49fcd269c8398" args="(const TPoint2D &amp;p1, const TPoint2D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TPoint2D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPoint2D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between two points in a 2D space. </p>

<p>Referenced by <a class="el" href="_c_array_8h_source.html#l00177">mrpt::math::CArray::assign()</a>, <a class="el" href="_c_binary_relation_8h_source.html#l00140">mrpt::math::CBinaryRelation::setRelationValue()</a>, <a class="el" href="_c_binary_relation_8h_source.html#l00150">mrpt::math::CBinaryRelation::getRelationValue()</a>, <a class="el" href="_c_binary_relation_8h_source.html#l00226">mrpt::math::CBinaryRelation::getRelationFrom()</a>, <a class="el" href="_c_binary_relation_8h_source.html#l00258">mrpt::math::CBinaryRelation::getRelationTo()</a>, <a class="el" href="_c_binary_relation_8h_source.html#l00302">mrpt::math::CBinaryRelation::removeElement()</a>, <a class="el" href="_c_binary_relation_8h_source.html#l00312">mrpt::math::CBinaryRelation::removeElements()</a>, <a class="el" href="_c_binary_relation_8h_source.html#l00339">mrpt::math::CBinaryRelation::insertElement()</a>, <a class="el" href="_c_binary_relation_8h_source.html#l00365">mrpt::math::CBinaryRelation::insertElements()</a>, <a class="el" href="_c_kalman_filter_capable_8h_source.html#l00459">mrpt::bayes::CKalmanFilterCapable&lt; 7, 3, 3, 7 &gt;::runOneKalmanIteration()</a>, <a class="el" href="data__association_8h_source.html#l00082">mrpt::slam::TDataAssociationResults::clear()</a>, <a class="el" href="distributions_8h_source.html#l00288">mrpt::math::condidenceIntervals()</a>, <a class="el" href="geometry_8h_source.html#l00569">mrpt::math::distance()</a>, <a class="el" href="nanoflann_8hpp_source.html#l01064">nanoflann::KDTreeSingleIndexAdaptor::computeInitialDistances()</a>, <a class="el" href="nanoflann_8hpp_source.html#l01087">nanoflann::KDTreeSingleIndexAdaptor::searchLevel()</a>, <a class="el" href="_p_f__implementations_8h_source.html#l00518">mrpt::slam::PF_implementation::PF_SLAM_implementation_pfAuxiliaryPFStandardAndOptimal()</a>, and <a class="el" href="stl__extensions_8h_source.html#l00196">mrpt::utils::find_in_vector()</a>.</p>

</div>
</div>
<a class="anchor" id="gaf912081e3dfe5deadd1a901b963f2200"></a><!-- doxytag: member="mrpt::math::distance" ref="gaf912081e3dfe5deadd1a901b963f2200" args="(const TPoint3D &amp;p1, const TPoint3D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TPoint3D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPoint3D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between two points in a 3D space. </p>

</div>
</div>
<a class="anchor" id="ga5525c130173ebedcb5004b21bfd3e7c6"></a><!-- doxytag: member="mrpt::math::distance" ref="ga5525c130173ebedcb5004b21bfd3e7c6" args="(const TLine2D &amp;r1, const TLine2D &amp;r2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>r2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between two lines in a 2D space. </p>

</div>
</div>
<a class="anchor" id="ga6af1e7303c5086532ea0bd7b85770c6a"></a><!-- doxytag: member="mrpt::math::distance" ref="ga6af1e7303c5086532ea0bd7b85770c6a" args="(const TLine3D &amp;r1, const TLine3D &amp;r2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between two lines in a 3D space. </p>

</div>
</div>
<a class="anchor" id="ga425678e3a9733b3c235c9bf52d42449b"></a><!-- doxytag: member="mrpt::math::distance" ref="ga425678e3a9733b3c235c9bf52d42449b" args="(const TPlane &amp;p1, const TPlane &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between two planes. </p>
<p>It will be zero if the planes are not parallel. </p>

</div>
</div>
<a class="anchor" id="ga80aa973c410226b39207c04fef2b0ca8"></a><!-- doxytag: member="mrpt::math::distance" ref="ga80aa973c410226b39207c04fef2b0ca8" args="(const TPolygon2D &amp;p1, const TPolygon2D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TPolygon2D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPolygon2D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between two polygons in a 2D space. </p>

</div>
</div>
<a class="anchor" id="gad9b6ba84fd439e642cbe28f33554e71c"></a><!-- doxytag: member="mrpt::math::distance" ref="gad9b6ba84fd439e642cbe28f33554e71c" args="(const TPolygon2D &amp;p1, const TSegment2D &amp;s2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TPolygon2D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TSegment2D &amp;&#160;</td>
          <td class="paramname"><em>s2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between a polygon and a segment in a 2D space. </p>

</div>
</div>
<a class="anchor" id="gae4801fe47285acad2533585a42eac9cd"></a><!-- doxytag: member="mrpt::math::distance" ref="gae4801fe47285acad2533585a42eac9cd" args="(const TSegment2D &amp;s1, const TPolygon2D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TSegment2D &amp;&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPolygon2D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between a segment and a polygon in a 2D space. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00569">569</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga8c0a76e906f12560cfa49fcd269c8398">mrpt::math::distance()</a>.</p>

</div>
</div>
<a class="anchor" id="gada89a8be5877badb65b5128d2b35c250"></a><!-- doxytag: member="mrpt::math::distance" ref="gada89a8be5877badb65b5128d2b35c250" args="(const TPolygon2D &amp;p1, const TLine2D &amp;l2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TPolygon2D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>l2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between a polygon and a line in a 2D space. </p>

</div>
</div>
<a class="anchor" id="ga199640d96dc07d84a787660b07059b06"></a><!-- doxytag: member="mrpt::math::distance" ref="ga199640d96dc07d84a787660b07059b06" args="(const TLine2D &amp;l1, const TPolygon2D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>l1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPolygon2D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00576">576</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga8c0a76e906f12560cfa49fcd269c8398">mrpt::math::distance()</a>.</p>

</div>
</div>
<a class="anchor" id="gacbd841c8d89a699c64e79884c22ea0ba"></a><!-- doxytag: member="mrpt::math::distance" ref="gacbd841c8d89a699c64e79884c22ea0ba" args="(const TPolygon3D &amp;p1, const TPolygon3D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between two polygons in a 3D space. </p>

</div>
</div>
<a class="anchor" id="gab7693757a867db8282375fad8218e0dc"></a><!-- doxytag: member="mrpt::math::distance" ref="gab7693757a867db8282375fad8218e0dc" args="(const TPolygon3D &amp;p1, const TSegment3D &amp;s2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>s2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between a polygon and a segment in a 3D space. </p>

</div>
</div>
<a class="anchor" id="ga19a574fbbb884252278e69af2d4f64eb"></a><!-- doxytag: member="mrpt::math::distance" ref="ga19a574fbbb884252278e69af2d4f64eb" args="(const TSegment3D &amp;s1, const TPolygon3D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between a segment and a polygon in a 3D space. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00590">590</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga8c0a76e906f12560cfa49fcd269c8398">mrpt::math::distance()</a>.</p>

</div>
</div>
<a class="anchor" id="ga721c135698a885a94ef23e0881e8345b"></a><!-- doxytag: member="mrpt::math::distance" ref="ga721c135698a885a94ef23e0881e8345b" args="(const TPolygon3D &amp;p1, const TLine3D &amp;l2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>l2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between a polygon and a line in a 3D space. </p>

</div>
</div>
<a class="anchor" id="ga50cc3a8b2fdca23879e8a2c8d3473199"></a><!-- doxytag: member="mrpt::math::distance" ref="ga50cc3a8b2fdca23879e8a2c8d3473199" args="(const TLine3D &amp;l1, const TPolygon3D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>l1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between a line and a polygon in a 3D space. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00600">600</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga8c0a76e906f12560cfa49fcd269c8398">mrpt::math::distance()</a>.</p>

</div>
</div>
<a class="anchor" id="ga653cfc905bc57d12cb5dd9ca53bf4b59"></a><!-- doxytag: member="mrpt::math::distance" ref="ga653cfc905bc57d12cb5dd9ca53bf4b59" args="(const TPolygon3D &amp;po, const TPlane &amp;pl)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>po</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>pl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between a polygon and a plane. </p>

</div>
</div>
<a class="anchor" id="gabfb83bd00d767a1fa6c2f8f846577e23"></a><!-- doxytag: member="mrpt::math::distance" ref="gabfb83bd00d767a1fa6c2f8f846577e23" args="(const TPlane &amp;pl, const TPolygon3D &amp;po)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double mrpt::math::distance </td>
          <td>(</td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>pl</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>po</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the distance between a plane and a polygon. </p>

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

<p>References <a class="el" href="group__geometry__grp.html#ga8c0a76e906f12560cfa49fcd269c8398">mrpt::math::distance()</a>.</p>

</div>
</div>
<a class="anchor" id="gaa750f334af9804daea1b6c748fb5544f"></a><!-- doxytag: member="mrpt::math::distanceBetweenPoints" ref="gaa750f334af9804daea1b6c748fb5544f" args="(const T x1, const T y1, const T x2, const T y2)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">T mrpt::math::distanceBetweenPoints </td>
          <td>(</td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>y1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>y2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the distance between 2 points in 2D. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00938">938</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="bits_8h_source.html#l00161">mrpt::utils::square()</a>.</p>

</div>
</div>
<a class="anchor" id="gaf9f23698674258694e4ccf1b65d883d9"></a><!-- doxytag: member="mrpt::math::distanceBetweenPoints" ref="gaf9f23698674258694e4ccf1b65d883d9" args="(const T x1, const T y1, const T z1, const T x2, const T y2, const T z2)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">T mrpt::math::distanceBetweenPoints </td>
          <td>(</td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>y1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>z1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>y2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>z2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the distance between 2 points in 3D. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00944">944</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="bits_8h_source.html#l00161">mrpt::utils::square()</a>.</p>

</div>
</div>
<a class="anchor" id="ga4a37a7be7002726067dc30938747136c"></a><!-- doxytag: member="mrpt::math::distancePointToPolygon2D" ref="ga4a37a7be7002726067dc30938747136c" args="(const double &amp;px, const double &amp;py, unsigned int polyEdges, const double *poly_xs, const double *poly_ys)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::distancePointToPolygon2D </td>
          <td>(</td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>px</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>py</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>polyEdges</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>poly_xs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>poly_ys</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the closest distance of a given 2D point to a polygon, or "0" if the point is INTO the polygon or its perimeter. </p>

</div>
</div>
<a class="anchor" id="ga317e06b958f0d87add2bf964a831f4a6"></a><!-- doxytag: member="mrpt::math::distanceSqrBetweenPoints" ref="ga317e06b958f0d87add2bf964a831f4a6" args="(const T x1, const T y1, const T x2, const T y2)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">T mrpt::math::distanceSqrBetweenPoints </td>
          <td>(</td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>y1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>y2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the square distance between 2 points in 2D. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00950">950</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="bits_8h_source.html#l00161">mrpt::utils::square()</a>.</p>

</div>
</div>
<a class="anchor" id="ga43a105e4de12406d0f1ec02bfa068efd"></a><!-- doxytag: member="mrpt::math::distanceSqrBetweenPoints" ref="ga43a105e4de12406d0f1ec02bfa068efd" args="(const T x1, const T y1, const T z1, const T x2, const T y2, const T z2)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">T mrpt::math::distanceSqrBetweenPoints </td>
          <td>(</td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>y1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>z1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>y2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T&#160;</td>
          <td class="paramname"><em>z2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the square distance between 2 points in 3D. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00956">956</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="bits_8h_source.html#l00161">mrpt::utils::square()</a>.</p>

</div>
</div>
<a class="anchor" id="gac393ef41292790bb8983997c5e1fda56"></a><!-- doxytag: member="mrpt::math::generateAxisBaseFromDirection" ref="gac393ef41292790bb8983997c5e1fda56" args="(T dx, T dy, T dz)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">CMatrixTemplateNumeric&lt;T&gt; mrpt::math::generateAxisBaseFromDirection </td>
          <td>(</td>
          <td class="paramtype">T&#160;</td>
          <td class="paramname"><em>dx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T&#160;</td>
          <td class="paramname"><em>dy</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T&#160;</td>
          <td class="paramname"><em>dz</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes an axis base (a set of three 3D normal vectors) with the given vector being the first of them. </p>
<p>NOTE: Make sure of passing all floats or doubles and that the template of the receiving matrix is of the same type!</p>
<p>If <img class="formulaInl" alt="$ d = [ dx ~ dy ~ dz ] $" src="form_13.png"/> is the input vector, then this function returns a matrix <img class="formulaInl" alt="$ M $" src="form_14.png"/> such as:</p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ M = \left( \begin{array}{c c c} v^1_x ~ v^2_x ~ v^3_x \\ v^1_y ~ v^2_y ~ v^3_y \\ v^1_z ~ v^2_z ~ v^3_z \end{array} \right) \]" src="form_15.png"/>
</p>
<p>And the three normal vectors are computed as:</p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ v^1 = \frac{d}{|d|} \]" src="form_16.png"/>
</p>
<p>If (dx!=0 or dy!=0): </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ v^2 = \frac{[-dy ~ dx ~ 0 ]}{\sqrt{dx^2+dy^2}} \]" src="form_17.png"/>
</p>
<p> otherwise (the direction vector is vertical): </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ v^2 = [1 ~ 0 ~ 0] \]" src="form_18.png"/>
</p>
<p>And finally, the third vector is the cross product of the others:</p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ v^3 = v^1 \times v^2 \]" src="form_19.png"/>
</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>The 3x3 matrix (CMatrixTemplateNumeric&lt;T&gt;), containing one vector per column.  Throws an <a class="el" href="classstd_1_1exception.html" title="STL class.">std::exception</a> on invalid input (i.e. null direction vector)</dd></dl>
<p>(JLB @ 18-SEP-2007) </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l01080">1080</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="mrpt__macros_8h_source.html#l00370">MRPT_START</a>, <a class="el" href="mrpt__macros_8h_source.html#l00131">THROW_EXCEPTION</a>, <a class="el" href="bits_8h_source.html#l00161">mrpt::utils::square()</a>, <a class="el" href="geometry_8h_source.html#l00775">mrpt::math::crossProduct3D()</a>, and <a class="el" href="mrpt__macros_8h_source.html#l00374">MRPT_END</a>.</p>

</div>
</div>
<a class="anchor" id="ga1e345799e96a2fb5e84ac9f0df9230ef"></a><!-- doxytag: member="mrpt::math::generateAxisBaseFromDirectionAndAxis" ref="ga1e345799e96a2fb5e84ac9f0df9230ef" args="(const double(&amp;vec)[3], char coord, CMatrixDouble &amp;matrix)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::generateAxisBaseFromDirectionAndAxis </td>
          <td>(</td>
          <td class="paramtype">const double(&amp;)&#160;</td>
          <td class="paramname"><em>vec</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&#160;</td>
          <td class="paramname"><em>coord</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CMatrixDouble &amp;&#160;</td>
          <td class="paramname"><em>matrix</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Creates a rotation matrix so that the coordinate given (0 for x, 1 for y, 2 for z) corresponds to the vector. </p>

</div>
</div>
<a class="anchor" id="gaef0c5b67b3e5066b473389fd82d7e694"></a><!-- doxytag: member="mrpt::math::getAngle" ref="gaef0c5b67b3e5066b473389fd82d7e694" args="(const TPlane &amp;p1, const TPlane &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::getAngle </td>
          <td>(</td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the angle between two planes. </p>

<p>Referenced by <a class="el" href="geometry_8h_source.html#l00199">mrpt::math::getAngle()</a>.</p>

</div>
</div>
<a class="anchor" id="ga5d6f350ef4e5edc626a84b9cfd3cca8b"></a><!-- doxytag: member="mrpt::math::getAngle" ref="ga5d6f350ef4e5edc626a84b9cfd3cca8b" args="(const TPlane &amp;p1, const TLine3D &amp;r2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::getAngle </td>
          <td>(</td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the angle between a plane and a 3D line or segment (implicit constructor will be used if passing a segment instead of a line). </p>

</div>
</div>
<a class="anchor" id="ga92e221cabafb17be49a42740463bba64"></a><!-- doxytag: member="mrpt::math::getAngle" ref="ga92e221cabafb17be49a42740463bba64" args="(const TLine3D &amp;r1, const TPlane &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double mrpt::math::getAngle </td>
          <td>(</td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the angle between a 3D line or segment and a plane (implicit constructor will be used if passing a segment instead of a line). </p>

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

<p>References <a class="el" href="group__geometry__grp.html#gaef0c5b67b3e5066b473389fd82d7e694">mrpt::math::getAngle()</a>.</p>

</div>
</div>
<a class="anchor" id="ga80c2e12dcb6669eb0574795acf3f28e5"></a><!-- doxytag: member="mrpt::math::getAngle" ref="ga80c2e12dcb6669eb0574795acf3f28e5" args="(const TLine3D &amp;r1, const TLine3D &amp;r2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::getAngle </td>
          <td>(</td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the angle between two 3D lines or segments (implicit constructor will be used if passing a segment instead of a line). </p>

</div>
</div>
<a class="anchor" id="ga68706eed82d782c279146d565bd55cec"></a><!-- doxytag: member="mrpt::math::getAngle" ref="ga68706eed82d782c279146d565bd55cec" args="(const TLine2D &amp;r1, const TLine2D &amp;r2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::getAngle </td>
          <td>(</td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>r2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the angle between two 2D lines or segments (implicit constructor will be used if passing a segment instead of a line). </p>

</div>
</div>
<a class="anchor" id="ga81505df2cba76f0399244d46096da571"></a><!-- doxytag: member="mrpt::math::getAngleBisector" ref="ga81505df2cba76f0399244d46096da571" args="(const TLine2D &amp;l1, const TLine2D &amp;l2, TLine2D &amp;bis)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::getAngleBisector </td>
          <td>(</td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>l1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>l2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine2D &amp;&#160;</td>
          <td class="paramname"><em>bis</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the bisector of two lines or segments (implicit constructor will be used if necessary) </p>

</div>
</div>
<a class="anchor" id="ga00dea7e409f8bd9d6a2e6b98f868a0ce"></a><!-- doxytag: member="mrpt::math::getAngleBisector" ref="ga00dea7e409f8bd9d6a2e6b98f868a0ce" args="(const TLine3D &amp;l1, const TLine3D &amp;l2, TLine3D &amp;bis)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::getAngleBisector </td>
          <td>(</td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>l1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>l2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine3D &amp;&#160;</td>
          <td class="paramname"><em>bis</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the bisector of two lines or segments (implicit constructor will be used if necessary) </p>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classstd_1_1logic__error.html" title="STL class.">std::logic_error</a></td><td>if the lines do not fit in a single plane. </td></tr>
  </table>
  </dd>
</dl>

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

<p>Gets the value of the geometric epsilon. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#ga1c443a200f0be17fb54bfc78c62acf45" title="Global epsilon to overcome small precision errors.">geometryEpsilon</a>,<a class="el" href="group__geometry__grp.html#ga6ee56196af1534bb1c408eb5fedbc64a" title="Changes the value of the geometric epsilon.">setEpsilon</a> </dd></dl>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00716">716</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga1c443a200f0be17fb54bfc78c62acf45">mrpt::math::geometryEpsilon</a>.</p>

</div>
</div>
<a class="anchor" id="ga772fe8216ba10a88dd6d4b261a53feaa"></a><!-- doxytag: member="mrpt::math::getPrismBounds" ref="ga772fe8216ba10a88dd6d4b261a53feaa" args="(const std::vector&lt; TPoint3D &gt; &amp;poly, TPoint3D &amp;pMin, TPoint3D &amp;pMax)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::getPrismBounds </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>poly</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPoint3D &amp;&#160;</td>
          <td class="paramname"><em>pMin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPoint3D &amp;&#160;</td>
          <td class="paramname"><em>pMax</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the prism bounds of a 3D polygon or set of 3D points. </p>

</div>
</div>
<a class="anchor" id="ga4f4ff8f3ab7f6d609beb2e9c602cbc28"></a><!-- doxytag: member="mrpt::math::getRectangleBounds" ref="ga4f4ff8f3ab7f6d609beb2e9c602cbc28" args="(const std::vector&lt; TPoint2D &gt; &amp;poly, TPoint2D &amp;pMin, TPoint2D &amp;pMax)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::getRectangleBounds </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint2D &gt; &amp;&#160;</td>
          <td class="paramname"><em>poly</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPoint2D &amp;&#160;</td>
          <td class="paramname"><em>pMin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPoint2D &amp;&#160;</td>
          <td class="paramname"><em>pMax</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the rectangular bounds of a 2D polygon or set of 2D points. </p>

</div>
</div>
<a class="anchor" id="ga7c40628072431c08a126bef3bb2b9a27"></a><!-- doxytag: member="mrpt::math::getRegressionLine" ref="ga7c40628072431c08a126bef3bb2b9a27" args="(const std::vector&lt; TPoint2D &gt; &amp;points, TLine2D &amp;line)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::getRegressionLine </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint2D &gt; &amp;&#160;</td>
          <td class="paramname"><em>points</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine2D &amp;&#160;</td>
          <td class="paramname"><em>line</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Using eigenvalues, gets the best fitting line for a set of 2D points. </p>
<p>Returns an estimation of the error. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__interpolation__grp.html#gadab1f3df3e592268d89214b345f7f816" title="Interpolates the value of a function in a point &quot;t&quot; given 4 SORTED points where &quot;t&quot; is between the tw...">spline</a>, <a class="el" href="group__interpolation__grp.html#ga1e31a6d4b982eee16bab9ae66c0ee042" title="Interpolates or extrapolates using a least-square linear fit of the set of values &quot;x&quot; and &quot;y&quot;...">leastSquareLinearFit</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga22e1e2c2ed24415e715aefdcad488484"></a><!-- doxytag: member="mrpt::math::getRegressionLine" ref="ga22e1e2c2ed24415e715aefdcad488484" args="(const std::vector&lt; TPoint3D &gt; &amp;points, TLine3D &amp;line)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::getRegressionLine </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>points</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine3D &amp;&#160;</td>
          <td class="paramname"><em>line</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Using eigenvalues, gets the best fitting line for a set of 3D points. </p>
<p>Returns an estimation of the error. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__interpolation__grp.html#gadab1f3df3e592268d89214b345f7f816" title="Interpolates the value of a function in a point &quot;t&quot; given 4 SORTED points where &quot;t&quot; is between the tw...">spline</a>, <a class="el" href="group__interpolation__grp.html#ga1e31a6d4b982eee16bab9ae66c0ee042" title="Interpolates or extrapolates using a least-square linear fit of the set of values &quot;x&quot; and &quot;y&quot;...">leastSquareLinearFit</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga14d21b4e5b6277e7c0ea4f00b2eb2b3e"></a><!-- doxytag: member="mrpt::math::getRegressionPlane" ref="ga14d21b4e5b6277e7c0ea4f00b2eb2b3e" args="(const std::vector&lt; TPoint3D &gt; &amp;points, TPlane &amp;plane)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::getRegressionPlane </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPoint3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>points</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPlane &amp;&#160;</td>
          <td class="paramname"><em>plane</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Using eigenvalues, gets the best fitting plane for a set of 3D points. </p>
<p>Returns an estimation of the error. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__interpolation__grp.html#gadab1f3df3e592268d89214b345f7f816" title="Interpolates the value of a function in a point &quot;t&quot; given 4 SORTED points where &quot;t&quot; is between the tw...">spline</a>, <a class="el" href="group__interpolation__grp.html#ga1e31a6d4b982eee16bab9ae66c0ee042" title="Interpolates or extrapolates using a least-square linear fit of the set of values &quot;x&quot; and &quot;y&quot;...">leastSquareLinearFit</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gac104a1bc6eb508467389666e7cc20c2e"></a><!-- doxytag: member="mrpt::math::getSegmentBisector" ref="gac104a1bc6eb508467389666e7cc20c2e" args="(const TSegment2D &amp;sgm, TLine2D &amp;bis)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::getSegmentBisector </td>
          <td>(</td>
          <td class="paramtype">const TSegment2D &amp;&#160;</td>
          <td class="paramname"><em>sgm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine2D &amp;&#160;</td>
          <td class="paramname"><em>bis</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the bisector of a 2D segment. </p>

</div>
</div>
<a class="anchor" id="ga73c52bb85ac39cc29e4fe46f93f446f3"></a><!-- doxytag: member="mrpt::math::getSegmentBisector" ref="ga73c52bb85ac39cc29e4fe46f93f446f3" args="(const TSegment3D &amp;sgm, TPlane &amp;bis)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::getSegmentBisector </td>
          <td>(</td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>sgm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPlane &amp;&#160;</td>
          <td class="paramname"><em>bis</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the bisector of a 3D segment. </p>

</div>
</div>
<a class="anchor" id="ga096194319b696aecf5ab9337a2f60c44"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga096194319b696aecf5ab9337a2f60c44" args="(const TSegment3D &amp;s1, const TSegment3D &amp;s2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>s2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between two 3D segments. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

<p>Referenced by <a class="el" href="_c_polyhedron_8h_source.html#l00700">mrpt::opengl::CPolyhedron::getIntersection()</a>, and <a class="el" href="geometry_8h_source.html#l00128">mrpt::math::intersect()</a>.</p>

</div>
</div>
<a class="anchor" id="gaf3dacfd63aa769727ea020d61e082e09"></a><!-- doxytag: member="mrpt::math::intersect" ref="gaf3dacfd63aa769727ea020d61e082e09" args="(const TSegment3D &amp;s1, const TPlane &amp;p2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a 3D segment and a plane. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga20eb28ba649c6b5a08e0a1bbf8725d31"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga20eb28ba649c6b5a08e0a1bbf8725d31" args="(const TSegment3D &amp;s1, const TLine3D &amp;r2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a 3D segment and a 3D line. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga5578db841cf79d522bbe330e8af74b37"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga5578db841cf79d522bbe330e8af74b37" args="(const TPlane &amp;p1, const TSegment3D &amp;s2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>s2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a plane and a 3D segment. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00128">128</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga096194319b696aecf5ab9337a2f60c44">mrpt::math::intersect()</a>.</p>

</div>
</div>
<a class="anchor" id="ga909e63792323a7862885aa8b4e34766a"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga909e63792323a7862885aa8b4e34766a" args="(const TPlane &amp;p1, const TPlane &amp;p2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between two planes. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga172f48d9c8d9cd23d74edacb4dc254ef"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga172f48d9c8d9cd23d74edacb4dc254ef" args="(const TPlane &amp;p1, const TLine3D &amp;p2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a plane and a 3D line. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga2213e727c993392fe8a6ff82bd4a1ed2"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga2213e727c993392fe8a6ff82bd4a1ed2" args="(const TLine3D &amp;r1, const TSegment3D &amp;s2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>s2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a 3D line and a 3D segment. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00145">145</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga096194319b696aecf5ab9337a2f60c44">mrpt::math::intersect()</a>.</p>

</div>
</div>
<a class="anchor" id="ga95f158cb50fb69c1d79243f48385409e"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga95f158cb50fb69c1d79243f48385409e" args="(const TLine3D &amp;r1, const TPlane &amp;p2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a 3D line and a plane. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00152">152</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga096194319b696aecf5ab9337a2f60c44">mrpt::math::intersect()</a>.</p>

</div>
</div>
<a class="anchor" id="ga69430d142e4fe3306f572738b4411397"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga69430d142e4fe3306f572738b4411397" args="(const TLine3D &amp;r1, const TLine3D &amp;r2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between two 3D lines. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gab960cce02b692c8897dfc36d9c6f0914"></a><!-- doxytag: member="mrpt::math::intersect" ref="gab960cce02b692c8897dfc36d9c6f0914" args="(const TLine2D &amp;r1, const TLine2D &amp;r2, TObject2D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>r2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject2D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between two 2D lines. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gab474b7d5539df394ad1ee48000657500"></a><!-- doxytag: member="mrpt::math::intersect" ref="gab474b7d5539df394ad1ee48000657500" args="(const TLine2D &amp;r1, const TSegment2D &amp;s2, TObject2D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TSegment2D &amp;&#160;</td>
          <td class="paramname"><em>s2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject2D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a 2D line and a 2D segment. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga7f0d0dba6bacd14ccd3c518dbfe76000"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga7f0d0dba6bacd14ccd3c518dbfe76000" args="(const TSegment2D &amp;s1, const TLine2D &amp;r2, TObject2D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TSegment2D &amp;&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>r2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject2D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a 2D line and a 2D segment. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> </dd></dl>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00174">174</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga096194319b696aecf5ab9337a2f60c44">mrpt::math::intersect()</a>.</p>

</div>
</div>
<a class="anchor" id="ga2478dd9095e36422ba33a8a9af817d66"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga2478dd9095e36422ba33a8a9af817d66" args="(const TSegment2D &amp;s1, const TSegment2D &amp;s2, TObject2D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TSegment2D &amp;&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TSegment2D &amp;&#160;</td>
          <td class="paramname"><em>s2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject2D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between two 2D segments. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga7e513f8e21eac854239e425224d9a4c2"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga7e513f8e21eac854239e425224d9a4c2" args="(const TPolygon2D &amp;p1, const TSegment2D &amp;s2, TObject2D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TPolygon2D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TSegment2D &amp;&#160;</td>
          <td class="paramname"><em>s2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject2D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a 2D polygon and a 2D segment. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga1a7a58052efcbd9ebcee2f345798ee8b"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga1a7a58052efcbd9ebcee2f345798ee8b" args="(const TPolygon2D &amp;p1, const TLine2D &amp;r2, TObject2D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TPolygon2D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>r2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject2D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a 2D polygon and a 2D line. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gaa0628efe1d7ead5ea49fb481d454821e"></a><!-- doxytag: member="mrpt::math::intersect" ref="gaa0628efe1d7ead5ea49fb481d454821e" args="(const TPolygon2D &amp;p1, const TPolygon2D &amp;p2, TObject2D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TPolygon2D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPolygon2D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject2D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between two 2D polygons. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga5f241d690d1dc369584ab9894e1403aa"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga5f241d690d1dc369584ab9894e1403aa" args="(const TSegment2D &amp;s1, const TPolygon2D &amp;p2, TObject2D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TSegment2D &amp;&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPolygon2D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject2D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a 2D segment and a 2D polygon. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> </dd></dl>

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

<p>References <a class="el" href="group__geometry__grp.html#ga096194319b696aecf5ab9337a2f60c44">mrpt::math::intersect()</a>.</p>

</div>
</div>
<a class="anchor" id="ga498ab42b7016f46dfd864e6603983e79"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga498ab42b7016f46dfd864e6603983e79" args="(const TLine2D &amp;r1, const TPolygon2D &amp;p2, TObject2D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPolygon2D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject2D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a 2D line and a 2D polygon. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> </dd></dl>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00435">435</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga096194319b696aecf5ab9337a2f60c44">mrpt::math::intersect()</a>.</p>

</div>
</div>
<a class="anchor" id="ga33f131008c3dba6ec3938f4c69cd5ac8"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga33f131008c3dba6ec3938f4c69cd5ac8" args="(const TPolygon3D &amp;p1, const TSegment3D &amp;s2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>s2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a 3D polygon and a 3D segment. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga7e235b2e688b049bbc430a0eedff3ecb"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga7e235b2e688b049bbc430a0eedff3ecb" args="(const TPolygon3D &amp;p1, const TLine3D &amp;r2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a 3D polygon and a 3D line. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga64b074d139e3902d313795dda99e9c1e"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga64b074d139e3902d313795dda99e9c1e" args="(const TPolygon3D &amp;p1, const TPlane &amp;p2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a 3D polygon and a plane. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gad771ff8e451fd7072ca8506ee634109e"></a><!-- doxytag: member="mrpt::math::intersect" ref="gad771ff8e451fd7072ca8506ee634109e" args="(const TPolygon3D &amp;p1, const TPolygon3D &amp;p2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between two 3D polygons. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gae54fcad3a2754529817b16dbd387a6e2"></a><!-- doxytag: member="mrpt::math::intersect" ref="gae54fcad3a2754529817b16dbd387a6e2" args="(const TSegment3D &amp;s1, const TPolygon3D &amp;p2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a 3D segment and a 3D polygon. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00462">462</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga096194319b696aecf5ab9337a2f60c44">mrpt::math::intersect()</a>.</p>

</div>
</div>
<a class="anchor" id="gaa2686f4f203380a19184ee8bcfa5db35"></a><!-- doxytag: member="mrpt::math::intersect" ref="gaa2686f4f203380a19184ee8bcfa5db35" args="(const TLine3D &amp;r1, const TPolygon3D &amp;p2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a 3D line and a 3D polygon. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00469">469</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga096194319b696aecf5ab9337a2f60c44">mrpt::math::intersect()</a>.</p>

</div>
</div>
<a class="anchor" id="gac0867b77fa033682044a131e1872ed3c"></a><!-- doxytag: member="mrpt::math::intersect" ref="gac0867b77fa033682044a131e1872ed3c" args="(const TPlane &amp;p1, const TPolygon3D &amp;p2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between a plane and a 3D polygon. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00476">476</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga096194319b696aecf5ab9337a2f60c44">mrpt::math::intersect()</a>.</p>

</div>
</div>
<a class="anchor" id="ga75d7208a372e289cde4157fb8f2efa16"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga75d7208a372e289cde4157fb8f2efa16" args="(const std::vector&lt; TPolygon3D &gt; &amp;v1, const std::vector&lt; TPolygon3D &gt; &amp;v2, CSparseMatrixTemplate&lt; TObject3D &gt; &amp;objs)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPolygon3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>v1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPolygon3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>v2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CSparseMatrixTemplate&lt; TObject3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>objs</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between two sets of 3D polygons. </p>
<p>The intersection is returned as an sparse matrix with each pair of polygons' intersections, and the return value is the amount of intersections found. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a>,<a class="el" href="classmrpt_1_1math_1_1_c_sparse_matrix_template.html" title="A sparse matrix container (with cells of any type), with iterators.">CSparseMatrixTemplate</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga457946ad03d05ed2698b203ccb9ec67d"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga457946ad03d05ed2698b203ccb9ec67d" args="(const std::vector&lt; TPolygon3D &gt; &amp;v1, const std::vector&lt; TPolygon3D &gt; &amp;v2, std::vector&lt; TObject3D &gt; &amp;objs)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPolygon3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>v1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; TPolygon3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>v2</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; TObject3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>objs</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between two sets of 3D polygons. </p>
<p>The intersection is returned as a vector with every intersection found, and the return value is the amount of intersections found. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gaa1f06d8e0612780e9a4adf91377e9cbc"></a><!-- doxytag: member="mrpt::math::intersect" ref="gaa1f06d8e0612780e9a4adf91377e9cbc" args="(const std::vector&lt; T &gt; &amp;v1, const std::vector&lt; U &gt; &amp;v2, CSparseMatrixTemplate&lt; O &gt; &amp;objs)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , class U , class O &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">size_t mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>v1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; U &gt; &amp;&#160;</td>
          <td class="paramname"><em>v2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CSparseMatrixTemplate&lt; O &gt; &amp;&#160;</td>
          <td class="paramname"><em>objs</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between vectors of geometric objects and returns it in a sparse matrix of either <a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> or <a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a>,<a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a>,<a class="el" href="classmrpt_1_1math_1_1_c_sparse_matrix.html" title="A sparse matrix capable of efficient math operations (a wrapper around the CSparse library) The type ...">CSparseMatrix</a> </dd></dl>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00500">500</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="_c_sparse_matrix_template_8h_source.html#l00336">mrpt::math::CSparseMatrixTemplate::clear()</a>, <a class="el" href="_c_sparse_matrix_template_8h_source.html#l00259">mrpt::math::CSparseMatrixTemplate::resize()</a>, <a class="el" href="group__geometry__grp.html#ga096194319b696aecf5ab9337a2f60c44">mrpt::math::intersect()</a>, and <a class="el" href="_c_sparse_matrix_template_8h_source.html#l00301">mrpt::math::CSparseMatrixTemplate::getNonNullElements()</a>.</p>

</div>
</div>
<a class="anchor" id="ga8c9938ba7a1666b258ad3d487df9af68"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga8c9938ba7a1666b258ad3d487df9af68" args="(const std::vector&lt; T &gt; &amp;v1, const std::vector&lt; U &gt; &amp;v2, std::vector&lt; O &gt; objs)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , class U , class O &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">size_t mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>v1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; U &gt; &amp;&#160;</td>
          <td class="paramname"><em>v2</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; O &gt;&#160;</td>
          <td class="paramname"><em>objs</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between vectors of geometric objects and returns it in a vector of either <a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> or <a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a>,<a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00513">513</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga096194319b696aecf5ab9337a2f60c44">mrpt::math::intersect()</a>.</p>

</div>
</div>
<a class="anchor" id="gad06a48e9be050230c6db6bf76f27666a"></a><!-- doxytag: member="mrpt::math::intersect" ref="gad06a48e9be050230c6db6bf76f27666a" args="(const TObject2D &amp;o1, const TObject2D &amp;o2, TObject2D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TObject2D &amp;&#160;</td>
          <td class="paramname"><em>o1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TObject2D &amp;&#160;</td>
          <td class="paramname"><em>o2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject2D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between any pair of 2D objects. </p>

</div>
</div>
<a class="anchor" id="ga6692d50e9510d1df456d55ea7ce63fcd"></a><!-- doxytag: member="mrpt::math::intersect" ref="ga6692d50e9510d1df456d55ea7ce63fcd" args="(const TObject3D &amp;o1, const TObject3D &amp;o2, TObject3D &amp;obj)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::intersect </td>
          <td>(</td>
          <td class="paramtype">const TObject3D &amp;&#160;</td>
          <td class="paramname"><em>o1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TObject3D &amp;&#160;</td>
          <td class="paramname"><em>o2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the intersection between any pair of 3D objects. </p>

</div>
</div>
<a class="anchor" id="ga65cdc0ef2b5080fbd70b5c8019da00dc"></a><!-- doxytag: member="mrpt::math::minDistBetweenLines" ref="ga65cdc0ef2b5080fbd70b5c8019da00dc" args="(const double &amp;p1_x, const double &amp;p1_y, const double &amp;p1_z, const double &amp;p2_x, const double &amp;p2_y, const double &amp;p2_z, const double &amp;p3_x, const double &amp;p3_y, const double &amp;p3_z, const double &amp;p4_x, const double &amp;p4_y, const double &amp;p4_z, double &amp;x, double &amp;y, double &amp;z, double &amp;dist)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::minDistBetweenLines </td>
          <td>(</td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>p1_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>p1_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>p1_z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>p2_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>p2_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>p2_z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>p3_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>p3_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>p3_z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>p4_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>p4_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>p4_z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>dist</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Calculates the minimum distance between a pair of lines. </p>
<p>The lines are given by:</p>
<ul>
<li>Line 1 = P1 + f (P2-P1)</li>
<li>Line 2 = P3 + f (P4-P3) The Euclidean distance is returned in "dist", and the mid point between the lines in (x,y,z) <dl class="return"><dt><b>Returns:</b></dt><dd>It returns false if there is no solution, i.e. lines are (almost, up to EPS) parallel. </dd></dl>
</li>
</ul>

</div>
</div>
<a class="anchor" id="gad9aef76403111b275219b248ef857f0d"></a><!-- doxytag: member="mrpt::math::minimumDistanceFromPointToSegment" ref="gad9aef76403111b275219b248ef857f0d" args="(const double &amp;Px, const double &amp;Py, const double &amp;x1, const double &amp;y1, const double &amp;x2, const double &amp;y2, double &amp;out_x, double &amp;out_y)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::minimumDistanceFromPointToSegment </td>
          <td>(</td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>Px</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>Py</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>out_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>out_y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the closest point from a given point to a segment, and returns that minimum distance. </p>

</div>
</div>
<a class="anchor" id="gaa1f65418a798a5c7cc0570ea311ad596"></a><!-- doxytag: member="mrpt::math::minimumDistanceFromPointToSegment" ref="gaa1f65418a798a5c7cc0570ea311ad596" args="(const double &amp;Px, const double &amp;Py, const double &amp;x1, const double &amp;y1, const double &amp;x2, const double &amp;y2, float &amp;out_x, float &amp;out_y)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP mrpt::math::minimumDistanceFromPointToSegment </td>
          <td>(</td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>Px</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>Py</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y2</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>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the closest point from a given point to a segment, and returns that minimum distance. </p>

</div>
</div>
<a class="anchor" id="ga30e184e42686c929b057a782c5420381"></a><!-- doxytag: member="mrpt::math::operator!=" ref="ga30e184e42686c929b057a782c5420381" args="(const TPoint2D &amp;p1, const TPoint2D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::operator!= </td>
          <td>(</td>
          <td class="paramtype">const TPoint2D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPoint2D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Exact comparison between 2D points. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l00597">597</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00076">mrpt::math::TPoint2D::x</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00080">mrpt::math::TPoint2D::y</a>.</p>

</div>
</div>
<a class="anchor" id="ga0ce1351e12712693cfbe5318fb8acae1"></a><!-- doxytag: member="mrpt::math::operator!=" ref="ga0ce1351e12712693cfbe5318fb8acae1" args="(const TPoint3D &amp;p1, const TPoint3D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::operator!= </td>
          <td>(</td>
          <td class="paramtype">const TPoint3D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPoint3D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Exact comparison between 3D points. </p>

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

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00293">mrpt::math::TPoint3D::x</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00294">mrpt::math::TPoint3D::y</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00295">mrpt::math::TPoint3D::z</a>.</p>

</div>
</div>
<a class="anchor" id="gaf6339aa7f1cdc6c0a7049756f9417d2b"></a><!-- doxytag: member="mrpt::math::operator!=" ref="gaf6339aa7f1cdc6c0a7049756f9417d2b" args="(const TPose2D &amp;p1, const TPose2D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::operator!= </td>
          <td>(</td>
          <td class="paramtype">const TPose2D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPose2D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Exact comparison between 2D poses, taking possible cycles into account. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l00621">621</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00203">mrpt::math::TPose2D::x</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00207">mrpt::math::TPose2D::y</a>, <a class="el" href="base_2include_2mrpt_2math_2utils_8h_source.html#l00177">mrpt::math::wrapTo2Pi()</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00211">mrpt::math::TPose2D::phi</a>.</p>

</div>
</div>
<a class="anchor" id="ga2696598ea83b926010a0457c53bfe285"></a><!-- doxytag: member="mrpt::math::operator!=" ref="ga2696598ea83b926010a0457c53bfe285" args="(const TPose3D &amp;p1, const TPose3D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::operator!= </td>
          <td>(</td>
          <td class="paramtype">const TPose3D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPose3D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Exact comparison between 3D poses, taking possible cycles into account. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l00633">633</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00435">mrpt::math::TPose3D::x</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00439">mrpt::math::TPose3D::y</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00443">mrpt::math::TPose3D::z</a>, <a class="el" href="base_2include_2mrpt_2math_2utils_8h_source.html#l00177">mrpt::math::wrapTo2Pi()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00447">mrpt::math::TPose3D::yaw</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00451">mrpt::math::TPose3D::pitch</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00455">mrpt::math::TPose3D::roll</a>.</p>

</div>
</div>
<a class="anchor" id="gac847cd29b920a25d160d642afc1ca5f5"></a><!-- doxytag: member="mrpt::math::operator!=" ref="gac847cd29b920a25d160d642afc1ca5f5" args="(const TSegment2D &amp;s1, const TSegment2D &amp;s2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::operator!= </td>
          <td>(</td>
          <td class="paramtype">const TSegment2D &amp;&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TSegment2D &amp;&#160;</td>
          <td class="paramname"><em>s2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l00785">785</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00653">mrpt::math::TSegment2D::point1</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00657">mrpt::math::TSegment2D::point2</a>.</p>

</div>
</div>
<a class="anchor" id="ga3e99b3d8a2aa7739c50ee0c6e33d5556"></a><!-- doxytag: member="mrpt::math::operator!=" ref="ga3e99b3d8a2aa7739c50ee0c6e33d5556" args="(const TSegment3D &amp;s1, const TSegment3D &amp;s2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::operator!= </td>
          <td>(</td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>s2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l00793">793</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00721">mrpt::math::TSegment3D::point1</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00725">mrpt::math::TSegment3D::point2</a>.</p>

</div>
</div>
<a class="anchor" id="ga41dd79738f6a27f4b63ee22080eec843"></a><!-- doxytag: member="mrpt::math::operator&#45;" ref="ga41dd79738f6a27f4b63ee22080eec843" args="(const TPoint3D &amp;p1)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TPoint3D mrpt::math::operator- </td>
          <td>(</td>
          <td class="paramtype">const TPoint3D &amp;&#160;</td>
          <td class="paramname"><em>p1</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Unary minus operator for 3D points. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l00585">585</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00293">mrpt::math::TPoint3D::x</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00294">mrpt::math::TPoint3D::y</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00295">mrpt::math::TPoint3D::z</a>.</p>

</div>
</div>
<a class="anchor" id="ga04abf9e51a93d1d57a9f1b27236a5a36"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="ga04abf9e51a93d1d57a9f1b27236a5a36" args="(std::ostream &amp;o, const TPoint2D &amp;p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1ostream.html">std::ostream</a> BASE_IMPEXP&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classstd_1_1ostream.html">std::ostream</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPoint2D &amp;&#160;</td>
          <td class="paramname"><em>p</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="ga25910d350b648105056f0c99924495d8"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="ga25910d350b648105056f0c99924495d8" args="(std::ostream &amp;o, const TPoint3D &amp;p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1ostream.html">std::ostream</a> BASE_IMPEXP&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classstd_1_1ostream.html">std::ostream</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPoint3D &amp;&#160;</td>
          <td class="paramname"><em>p</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="gabda36a51966b0da6fb748d92231bd6e5"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="gabda36a51966b0da6fb748d92231bd6e5" args="(std::ostream &amp;o, const TPose2D &amp;p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1ostream.html">std::ostream</a> BASE_IMPEXP&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classstd_1_1ostream.html">std::ostream</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPose2D &amp;&#160;</td>
          <td class="paramname"><em>p</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="ga2a0758646c7d422056b1cb5a258be780"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="ga2a0758646c7d422056b1cb5a258be780" args="(std::ostream &amp;o, const TPose3D &amp;p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1ostream.html">std::ostream</a> BASE_IMPEXP&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classstd_1_1ostream.html">std::ostream</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPose3D &amp;&#160;</td>
          <td class="paramname"><em>p</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="ga0ec73b99ad8c2f70f43ad553d6273ff9"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="ga0ec73b99ad8c2f70f43ad553d6273ff9" args="(std::ostream &amp;o, const TPose3DQuat &amp;p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1ostream.html">std::ostream</a> BASE_IMPEXP&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classstd_1_1ostream.html">std::ostream</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPose3DQuat &amp;&#160;</td>
          <td class="paramname"><em>p</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="gae1eec8f42f8048fe5b297184d8b9e68f"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="gae1eec8f42f8048fe5b297184d8b9e68f" args="(mrpt::utils::CStream &amp;out, const mrpt::math::TPoint2D &amp;o)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">mrpt::math::TPoint2D</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html" title="Lightweight 2D point.">TPoint2D</a> binary output. </p>

</div>
</div>
<a class="anchor" id="ga3e63e6e21e74b03a90540c14369d97e0"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="ga3e63e6e21e74b03a90540c14369d97e0" args="(mrpt::utils::CStream &amp;out, const mrpt::math::TPoint3D &amp;o)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">mrpt::math::TPoint3D</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html" title="Lightweight 3D point.">TPoint3D</a> binary output. </p>

</div>
</div>
<a class="anchor" id="ga811ddc08eef0b66a222a81ee00c3d47d"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="ga811ddc08eef0b66a222a81ee00c3d47d" args="(mrpt::utils::CStream &amp;out, const mrpt::math::TPose2D &amp;o)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">mrpt::math::TPose2D</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html" title="Lightweight 2D pose.">TPose2D</a> binary output. </p>

</div>
</div>
<a class="anchor" id="ga0c3554dda0fa4b62abc4432e736fb5b1"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="ga0c3554dda0fa4b62abc4432e736fb5b1" args="(mrpt::utils::CStream &amp;out, const mrpt::math::TPose3D &amp;o)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_pose3_d.html">mrpt::math::TPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_pose3_d.html" title="Lightweight 3D pose (three spatial coordinates, plus three angular coordinates).">TPose3D</a> binary output. </p>

</div>
</div>
<a class="anchor" id="ga0c679646ca7bf18ad88f7d74bf8c4051"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="ga0c679646ca7bf18ad88f7d74bf8c4051" args="(mrpt::utils::CStream &amp;out, const mrpt::math::TSegment2D &amp;s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_segment2_d.html">mrpt::math::TSegment2D</a> &amp;&#160;</td>
          <td class="paramname"><em>s</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_segment2_d.html" title="2D segment, consisting of two points.">TSegment2D</a> binary output. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l02358">2358</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00653">mrpt::math::TSegment2D::point1</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00657">mrpt::math::TSegment2D::point2</a>.</p>

</div>
</div>
<a class="anchor" id="gafa318a04ca6d1d96394319b1d59f4a6a"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="gafa318a04ca6d1d96394319b1d59f4a6a" args="(mrpt::utils::CStream &amp;out, const mrpt::math::TLine2D &amp;l)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_line2_d.html">mrpt::math::TLine2D</a> &amp;&#160;</td>
          <td class="paramname"><em>l</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_line2_d.html" title="2D line without bounds, represented by its equation .">TLine2D</a> binary output. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l02371">2371</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00806">mrpt::math::TLine2D::coefs</a>.</p>

</div>
</div>
<a class="anchor" id="gafae1cfc0c7af142d9d049edd71de12db"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="gafae1cfc0c7af142d9d049edd71de12db" args="(mrpt::utils::CStream &amp;out, const mrpt::math::TObject2D &amp;o)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html">mrpt::math::TObject2D</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> binary input. </p>

</div>
</div>
<a class="anchor" id="ga94641e5a5230bd42caaf02587af63240"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="ga94641e5a5230bd42caaf02587af63240" args="(mrpt::utils::CStream &amp;out, const mrpt::math::TSegment3D &amp;s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_segment3_d.html">mrpt::math::TSegment3D</a> &amp;&#160;</td>
          <td class="paramname"><em>s</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_segment3_d.html" title="3D segment, consisting of two points.">TSegment3D</a> binary output. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l02393">2393</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00721">mrpt::math::TSegment3D::point1</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00725">mrpt::math::TSegment3D::point2</a>.</p>

</div>
</div>
<a class="anchor" id="ga432e65f2a9cab4461b8fd8bba7bd596b"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="ga432e65f2a9cab4461b8fd8bba7bd596b" args="(mrpt::utils::CStream &amp;out, const mrpt::math::TLine3D &amp;l)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_line3_d.html">mrpt::math::TLine3D</a> &amp;&#160;</td>
          <td class="paramname"><em>l</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_line3_d.html" title="3D line, represented by a base point and a director vector.">TLine3D</a> binary output. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l02406">2406</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00901">mrpt::math::TLine3D::pBase</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00905">mrpt::math::TLine3D::director</a>.</p>

</div>
</div>
<a class="anchor" id="ga8c6491eb156942e441020308912a82eb"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="ga8c6491eb156942e441020308912a82eb" args="(mrpt::utils::CStream &amp;out, const mrpt::math::TPlane &amp;p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_plane.html">mrpt::math::TPlane</a> &amp;&#160;</td>
          <td class="paramname"><em>p</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_plane.html" title="3D Plane, represented by its equation ">TPlane</a> binary output. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l02419">2419</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00966">mrpt::math::TPlane::coefs</a>.</p>

</div>
</div>
<a class="anchor" id="ga9c7d341ffd1d26b0c71a34d51702bef0"></a><!-- doxytag: member="mrpt::math::operator&lt;&lt;" ref="ga9c7d341ffd1d26b0c71a34d51702bef0" args="(mrpt::utils::CStream &amp;out, const mrpt::math::TObject3D &amp;o)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html">mrpt::math::TObject3D</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> binary output. </p>

</div>
</div>
<a class="anchor" id="gaef7a1b4acfd8df1780f54ccf2725bec6"></a><!-- doxytag: member="mrpt::math::operator==" ref="gaef7a1b4acfd8df1780f54ccf2725bec6" args="(const TPoint2D &amp;p1, const TPoint2D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::operator== </td>
          <td>(</td>
          <td class="paramtype">const TPoint2D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPoint2D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Exact comparison between 2D points. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l00591">591</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00076">mrpt::math::TPoint2D::x</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00080">mrpt::math::TPoint2D::y</a>.</p>

</div>
</div>
<a class="anchor" id="ga3d8fa05b84f5283269f4f4d06f0136bd"></a><!-- doxytag: member="mrpt::math::operator==" ref="ga3d8fa05b84f5283269f4f4d06f0136bd" args="(const TPoint3D &amp;p1, const TPoint3D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::operator== </td>
          <td>(</td>
          <td class="paramtype">const TPoint3D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPoint3D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Exact comparison between 3D points. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l00603">603</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00293">mrpt::math::TPoint3D::x</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00294">mrpt::math::TPoint3D::y</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00295">mrpt::math::TPoint3D::z</a>.</p>

</div>
</div>
<a class="anchor" id="ga3b0d2c0eb8f001423ccd854814a92187"></a><!-- doxytag: member="mrpt::math::operator==" ref="ga3b0d2c0eb8f001423ccd854814a92187" args="(const TPose2D &amp;p1, const TPose2D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::operator== </td>
          <td>(</td>
          <td class="paramtype">const TPose2D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPose2D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Exact comparison between 2D poses, taking possible cycles into account. </p>

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

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00203">mrpt::math::TPose2D::x</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00207">mrpt::math::TPose2D::y</a>, <a class="el" href="base_2include_2mrpt_2math_2utils_8h_source.html#l00177">mrpt::math::wrapTo2Pi()</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00211">mrpt::math::TPose2D::phi</a>.</p>

</div>
</div>
<a class="anchor" id="ga315107e68e10847038343a6bb609e49d"></a><!-- doxytag: member="mrpt::math::operator==" ref="ga315107e68e10847038343a6bb609e49d" args="(const TPose3D &amp;p1, const TPose3D &amp;p2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::operator== </td>
          <td>(</td>
          <td class="paramtype">const TPose3D &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPose3D &amp;&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Exact comparison between 3D poses, taking possible cycles into account. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l00627">627</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00435">mrpt::math::TPose3D::x</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00439">mrpt::math::TPose3D::y</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00443">mrpt::math::TPose3D::z</a>, <a class="el" href="base_2include_2mrpt_2math_2utils_8h_source.html#l00177">mrpt::math::wrapTo2Pi()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00447">mrpt::math::TPose3D::yaw</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00451">mrpt::math::TPose3D::pitch</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00455">mrpt::math::TPose3D::roll</a>.</p>

</div>
</div>
<a class="anchor" id="gaf6b5b50bad9ca722909c044f785589aa"></a><!-- doxytag: member="mrpt::math::operator==" ref="gaf6b5b50bad9ca722909c044f785589aa" args="(const TSegment2D &amp;s1, const TSegment2D &amp;s2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::operator== </td>
          <td>(</td>
          <td class="paramtype">const TSegment2D &amp;&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TSegment2D &amp;&#160;</td>
          <td class="paramname"><em>s2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l00781">781</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00653">mrpt::math::TSegment2D::point1</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00657">mrpt::math::TSegment2D::point2</a>.</p>

</div>
</div>
<a class="anchor" id="ga0759bd5ff55164037663876bb5c589e5"></a><!-- doxytag: member="mrpt::math::operator==" ref="ga0759bd5ff55164037663876bb5c589e5" args="(const TSegment3D &amp;s1, const TSegment3D &amp;s2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::operator== </td>
          <td>(</td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>s2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l00789">789</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00721">mrpt::math::TSegment3D::point1</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00725">mrpt::math::TSegment3D::point2</a>.</p>

</div>
</div>
<a class="anchor" id="gae2ba309dec96d95778cb7d7fc54c0e9e"></a><!-- doxytag: member="mrpt::math::operator&gt;&gt;" ref="gae2ba309dec96d95778cb7d7fc54c0e9e" args="(mrpt::utils::CStream &amp;in, mrpt::math::TPoint2D &amp;o)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&gt;&gt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>in</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">mrpt::math::TPoint2D</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html" title="Lightweight 2D point.">TPoint2D</a> binary input. </p>

</div>
</div>
<a class="anchor" id="ga9dd424846338d9d1eafbb6ab1c86f401"></a><!-- doxytag: member="mrpt::math::operator&gt;&gt;" ref="ga9dd424846338d9d1eafbb6ab1c86f401" args="(mrpt::utils::CStream &amp;in, mrpt::math::TPoint3D &amp;o)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&gt;&gt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>in</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">mrpt::math::TPoint3D</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html" title="Lightweight 3D point.">TPoint3D</a> binary input. </p>

</div>
</div>
<a class="anchor" id="ga19aac3a7c0fca1a67d9f9e8864b279ec"></a><!-- doxytag: member="mrpt::math::operator&gt;&gt;" ref="ga19aac3a7c0fca1a67d9f9e8864b279ec" args="(mrpt::utils::CStream &amp;in, mrpt::math::TPose2D &amp;o)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&gt;&gt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">mrpt::math::TPose2D</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html" title="Lightweight 2D pose.">TPose2D</a> binary input. </p>

</div>
</div>
<a class="anchor" id="ga623673e345fd4d4943432cd57cab368f"></a><!-- doxytag: member="mrpt::math::operator&gt;&gt;" ref="ga623673e345fd4d4943432cd57cab368f" args="(mrpt::utils::CStream &amp;in, mrpt::math::TPose3D &amp;o)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&gt;&gt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_pose3_d.html">mrpt::math::TPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_pose3_d.html" title="Lightweight 3D pose (three spatial coordinates, plus three angular coordinates).">TPose3D</a> binary input. </p>

</div>
</div>
<a class="anchor" id="ga8d71c9fdf214a7b85d32eac48a0ac633"></a><!-- doxytag: member="mrpt::math::operator&gt;&gt;" ref="ga8d71c9fdf214a7b85d32eac48a0ac633" args="(mrpt::utils::CStream &amp;in, mrpt::math::TSegment2D &amp;s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&gt;&gt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_segment2_d.html">mrpt::math::TSegment2D</a> &amp;&#160;</td>
          <td class="paramname"><em>s</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_segment2_d.html" title="2D segment, consisting of two points.">TSegment2D</a> binary input. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l02352">2352</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00653">mrpt::math::TSegment2D::point1</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00657">mrpt::math::TSegment2D::point2</a>.</p>

</div>
</div>
<a class="anchor" id="gaefdce466c1d15aa5f9a15d780e16a0cd"></a><!-- doxytag: member="mrpt::math::operator&gt;&gt;" ref="gaefdce466c1d15aa5f9a15d780e16a0cd" args="(mrpt::utils::CStream &amp;in, mrpt::math::TLine2D &amp;l)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&gt;&gt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_line2_d.html">mrpt::math::TLine2D</a> &amp;&#160;</td>
          <td class="paramname"><em>l</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_line2_d.html" title="2D line without bounds, represented by its equation .">TLine2D</a> binary input. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l02365">2365</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00806">mrpt::math::TLine2D::coefs</a>.</p>

</div>
</div>
<a class="anchor" id="ga3e1a5b74258e9922ff982ef3f40c6533"></a><!-- doxytag: member="mrpt::math::operator&gt;&gt;" ref="ga3e1a5b74258e9922ff982ef3f40c6533" args="(mrpt::utils::CStream &amp;in, mrpt::math::TObject2D &amp;o)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&gt;&gt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html">mrpt::math::TObject2D</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> binary input. </p>

</div>
</div>
<a class="anchor" id="ga252014f7c27f09c8098b7a1285e2aba5"></a><!-- doxytag: member="mrpt::math::operator&gt;&gt;" ref="ga252014f7c27f09c8098b7a1285e2aba5" args="(mrpt::utils::CStream &amp;in, mrpt::math::TSegment3D &amp;s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&gt;&gt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_segment3_d.html">mrpt::math::TSegment3D</a> &amp;&#160;</td>
          <td class="paramname"><em>s</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_segment3_d.html" title="3D segment, consisting of two points.">TSegment3D</a> binary input. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l02387">2387</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00721">mrpt::math::TSegment3D::point1</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00725">mrpt::math::TSegment3D::point2</a>.</p>

</div>
</div>
<a class="anchor" id="ga904a984edb7f67f274b002e36dc0f685"></a><!-- doxytag: member="mrpt::math::operator&gt;&gt;" ref="ga904a984edb7f67f274b002e36dc0f685" args="(mrpt::utils::CStream &amp;in, mrpt::math::TLine3D &amp;l)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&gt;&gt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_line3_d.html">mrpt::math::TLine3D</a> &amp;&#160;</td>
          <td class="paramname"><em>l</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_line3_d.html" title="3D line, represented by a base point and a director vector.">TLine3D</a> binary input. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l02400">2400</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00901">mrpt::math::TLine3D::pBase</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00905">mrpt::math::TLine3D::director</a>.</p>

</div>
</div>
<a class="anchor" id="gaff141872fd7b9cca804e19cb72a4149f"></a><!-- doxytag: member="mrpt::math::operator&gt;&gt;" ref="gaff141872fd7b9cca804e19cb72a4149f" args="(mrpt::utils::CStream &amp;in, mrpt::math::TPlane &amp;p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&gt;&gt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_plane.html">mrpt::math::TPlane</a> &amp;&#160;</td>
          <td class="paramname"><em>p</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_plane.html" title="3D Plane, represented by its equation ">TPlane</a> binary input. </p>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l02413">2413</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00966">mrpt::math::TPlane::coefs</a>.</p>

</div>
</div>
<a class="anchor" id="ga098f170d53e02052fd8854d55498e92b"></a><!-- doxytag: member="mrpt::math::operator&gt;&gt;" ref="ga098f170d53e02052fd8854d55498e92b" args="(mrpt::utils::CStream &amp;in, mrpt::math::TObject3D &amp;o)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BASE_IMPEXP <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a>&amp; mrpt::math::operator&gt;&gt; </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html">mrpt::math::TObject3D</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> binary input. </p>

</div>
</div>
<a class="anchor" id="ga2d3279e82ce6d2c47c8152079a3ef281"></a><!-- doxytag: member="mrpt::math::pointIntoPolygon2D" ref="ga2d3279e82ce6d2c47c8152079a3ef281" args="(const double &amp;px, const double &amp;py, unsigned int polyEdges, const double *poly_xs, const double *poly_ys)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::pointIntoPolygon2D </td>
          <td>(</td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>px</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>py</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>polyEdges</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>poly_xs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>poly_ys</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns true if the 2D point (px,py) falls INTO the given polygon. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#ga7a045689c27da5ed560fb9c0da6afece" title="Specialized method to check whether a point (x,y) falls into a quadrangle.">pointIntoQuadrangle</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga7a045689c27da5ed560fb9c0da6afece"></a><!-- doxytag: member="mrpt::math::pointIntoQuadrangle" ref="ga7a045689c27da5ed560fb9c0da6afece" args="(T x, T y, T v1x, T v1y, T v2x, T v2y, T v3x, T v3y, T v4x, T v4y)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::pointIntoQuadrangle </td>
          <td>(</td>
          <td class="paramtype">T&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T&#160;</td>
          <td class="paramname"><em>v1x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T&#160;</td>
          <td class="paramname"><em>v1y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T&#160;</td>
          <td class="paramname"><em>v2x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T&#160;</td>
          <td class="paramname"><em>v2y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T&#160;</td>
          <td class="paramname"><em>v3x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T&#160;</td>
          <td class="paramname"><em>v3y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T&#160;</td>
          <td class="paramname"><em>v4x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T&#160;</td>
          <td class="paramname"><em>v4y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Specialized method to check whether a point (x,y) falls into a quadrangle. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#ga2d3279e82ce6d2c47c8152079a3ef281" title="Returns true if the 2D point (px,py) falls INTO the given polygon.">pointIntoPolygon2D</a> </dd></dl>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00987">987</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="bits_8h_source.html#l00105">mrpt::utils::sign()</a>, and <a class="el" href="base_2include_2mrpt_2math_2utils_8h_source.html#l00188">mrpt::math::wrapToPi()</a>.</p>

</div>
</div>
<a class="anchor" id="ga01a5878f7437f17ed3603a31e6190339"></a><!-- doxytag: member="mrpt::math::project2D" ref="ga01a5878f7437f17ed3603a31e6190339" args="(const TPoint2D &amp;point, const CPose2D &amp;newXpose, TPoint2D &amp;newPoint)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::project2D </td>
          <td>(</td>
          <td class="paramtype">const TPoint2D &amp;&#160;</td>
          <td class="paramname"><em>point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> &amp;&#160;</td>
          <td class="paramname"><em>newXpose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPoint2D &amp;&#160;</td>
          <td class="paramname"><em>newPoint</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Uses the given pose 2D to project a point into a new base. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00353">353</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>Referenced by <a class="el" href="geometry_8h_source.html#l00359">mrpt::math::project2D()</a>.</p>

</div>
</div>
<a class="anchor" id="gaea53914830f34b117463dee1594a1d9f"></a><!-- doxytag: member="mrpt::math::project2D" ref="gaea53914830f34b117463dee1594a1d9f" args="(const TSegment2D &amp;segment, const CPose2D &amp;newXpose, TSegment2D &amp;newSegment)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::project2D </td>
          <td>(</td>
          <td class="paramtype">const TSegment2D &amp;&#160;</td>
          <td class="paramname"><em>segment</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> &amp;&#160;</td>
          <td class="paramname"><em>newXpose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TSegment2D &amp;&#160;</td>
          <td class="paramname"><em>newSegment</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Uses the given pose 2D to project a segment into a new base. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00359">359</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="geometry_8h_source.html#l00353">mrpt::math::project2D()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00653">mrpt::math::TSegment2D::point1</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00657">mrpt::math::TSegment2D::point2</a>.</p>

</div>
</div>
<a class="anchor" id="ga510c78e42b44f5db84acd113f597c532"></a><!-- doxytag: member="mrpt::math::project2D" ref="ga510c78e42b44f5db84acd113f597c532" args="(const TLine2D &amp;line, const CPose2D &amp;newXpose, TLine2D &amp;newLine)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::project2D </td>
          <td>(</td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>line</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> &amp;&#160;</td>
          <td class="paramname"><em>newXpose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine2D &amp;&#160;</td>
          <td class="paramname"><em>newLine</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Uses the given pose 2D to project a line into a new base. </p>

</div>
</div>
<a class="anchor" id="ga6229a4b11127c6fcebede49fd2d2933d"></a><!-- doxytag: member="mrpt::math::project2D" ref="ga6229a4b11127c6fcebede49fd2d2933d" args="(const TPolygon2D &amp;polygon, const CPose2D &amp;newXpose, TPolygon2D &amp;newPolygon)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::project2D </td>
          <td>(</td>
          <td class="paramtype">const TPolygon2D &amp;&#160;</td>
          <td class="paramname"><em>polygon</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> &amp;&#160;</td>
          <td class="paramname"><em>newXpose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPolygon2D &amp;&#160;</td>
          <td class="paramname"><em>newPolygon</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Uses the given pose 2D to project a polygon into a new base. </p>

</div>
</div>
<a class="anchor" id="gaff16bd12ca2eeaf65f9357af22bc7a9b"></a><!-- doxytag: member="mrpt::math::project2D" ref="gaff16bd12ca2eeaf65f9357af22bc7a9b" args="(const TObject2D &amp;object, const CPose2D &amp;newXpose, TObject2D &amp;newObject)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::project2D </td>
          <td>(</td>
          <td class="paramtype">const TObject2D &amp;&#160;</td>
          <td class="paramname"><em>object</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> &amp;&#160;</td>
          <td class="paramname"><em>newXpose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject2D &amp;&#160;</td>
          <td class="paramname"><em>newObject</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Uses the given pose 2D to project any 2D object into a new base. </p>

</div>
</div>
<a class="anchor" id="ga4fc38e90d8d9d8d13db114369d4f6e6b"></a><!-- doxytag: member="mrpt::math::project2D" ref="ga4fc38e90d8d9d8d13db114369d4f6e6b" args="(const T &amp;obj, const TLine2D &amp;newXLine, T &amp;newObj)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::project2D </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>newXLine</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T &amp;&#160;</td>
          <td class="paramname"><em>newObj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Projects any 2D object into the line's base, using its inverse pose. </p>
<p>If the object is exactly inside the line, this projection will zero its Y coordinate. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00380">380</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="structmrpt_1_1math_1_1_t_line2_d.html#a767eb25907e3bbfc9d61fad6f6406ac5">mrpt::math::TLine2D::getAsPose2D()</a>, and <a class="el" href="geometry_8h_source.html#l00353">mrpt::math::project2D()</a>.</p>

</div>
</div>
<a class="anchor" id="ga25fd57667837bb516e82539d86802f8b"></a><!-- doxytag: member="mrpt::math::project2D" ref="ga25fd57667837bb516e82539d86802f8b" args="(const T &amp;obj, const TLine2D &amp;newXLine, const TPoint2D &amp;newOrigin, T &amp;newObj)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::project2D </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TLine2D &amp;&#160;</td>
          <td class="paramname"><em>newXLine</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPoint2D &amp;&#160;</td>
          <td class="paramname"><em>newOrigin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T &amp;&#160;</td>
          <td class="paramname"><em>newObj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Projects any 2D object into the line's base, using its inverse pose and forcing the position of the new coordinate origin. </p>
<p>If the object is exactly inside the line, this projection will zero its Y coordinate. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00389">389</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="structmrpt_1_1math_1_1_t_line2_d.html#a7b269f5d3576790080d75674d2aaa75e">mrpt::math::TLine2D::getAsPose2DForcingOrigin()</a>, and <a class="el" href="geometry_8h_source.html#l00353">mrpt::math::project2D()</a>.</p>

</div>
</div>
<a class="anchor" id="gac1bbf25c63766b9ca0ed82167bf7961a"></a><!-- doxytag: member="mrpt::math::project2D" ref="gac1bbf25c63766b9ca0ed82167bf7961a" args="(const std::vector&lt; T &gt; &amp;objs, const CPose2D &amp;newXpose, std::vector&lt; T &gt; &amp;newObjs)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::project2D </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>objs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> &amp;&#160;</td>
          <td class="paramname"><em>newXpose</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; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>newObjs</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Projects a set of 2D objects into the line's base. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00398">398</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="geometry_8h_source.html#l00353">mrpt::math::project2D()</a>.</p>

</div>
</div>
<a class="anchor" id="gabc1ba0f4ffbfb1070b19923471fbd5ac"></a><!-- doxytag: member="mrpt::math::project3D" ref="gabc1ba0f4ffbfb1070b19923471fbd5ac" args="(const TPoint3D &amp;point, const CPose3D &amp;newXYpose, TPoint3D &amp;newPoint)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::project3D </td>
          <td>(</td>
          <td class="paramtype">const TPoint3D &amp;&#160;</td>
          <td class="paramname"><em>point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>newXYpose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPoint3D &amp;&#160;</td>
          <td class="paramname"><em>newPoint</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Uses the given pose 3D to project a point into a new base. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00295">295</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aaabe44aa147e5391009051b49a6d524e">mrpt::poses::CPose3D::composePoint()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00293">mrpt::math::TPoint3D::x</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00294">mrpt::math::TPoint3D::y</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00295">mrpt::math::TPoint3D::z</a>.</p>

<p>Referenced by <a class="el" href="geometry_8h_source.html#l00301">mrpt::math::project3D()</a>.</p>

</div>
</div>
<a class="anchor" id="gafa9a1277ee17ec0beacdab848984ed29"></a><!-- doxytag: member="mrpt::math::project3D" ref="gafa9a1277ee17ec0beacdab848984ed29" args="(const TSegment3D &amp;segment, const CPose3D &amp;newXYpose, TSegment3D &amp;newSegment)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::project3D </td>
          <td>(</td>
          <td class="paramtype">const TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>segment</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>newXYpose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TSegment3D &amp;&#160;</td>
          <td class="paramname"><em>newSegment</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Uses the given pose 3D to project a segment into a new base. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00301">301</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="geometry_8h_source.html#l00295">mrpt::math::project3D()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00721">mrpt::math::TSegment3D::point1</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l00725">mrpt::math::TSegment3D::point2</a>.</p>

</div>
</div>
<a class="anchor" id="ga1d06b4f6527d1386f58b0a350f979cf8"></a><!-- doxytag: member="mrpt::math::project3D" ref="ga1d06b4f6527d1386f58b0a350f979cf8" args="(const TLine3D &amp;line, const CPose3D &amp;newXYpose, TLine3D &amp;newLine)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::project3D </td>
          <td>(</td>
          <td class="paramtype">const TLine3D &amp;&#160;</td>
          <td class="paramname"><em>line</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>newXYpose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TLine3D &amp;&#160;</td>
          <td class="paramname"><em>newLine</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Uses the given pose 3D to project a line into a new base. </p>

</div>
</div>
<a class="anchor" id="gacee968e4646c0be6681c65d6121ce42f"></a><!-- doxytag: member="mrpt::math::project3D" ref="gacee968e4646c0be6681c65d6121ce42f" args="(const TPlane &amp;plane, const CPose3D &amp;newXYpose, TPlane &amp;newPlane)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::project3D </td>
          <td>(</td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>plane</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>newXYpose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPlane &amp;&#160;</td>
          <td class="paramname"><em>newPlane</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Uses the given pose 3D to project a plane into a new base. </p>

</div>
</div>
<a class="anchor" id="ga7d963823e9beb0e850453bba63197378"></a><!-- doxytag: member="mrpt::math::project3D" ref="ga7d963823e9beb0e850453bba63197378" args="(const TPolygon3D &amp;polygon, const CPose3D &amp;newXYpose, TPolygon3D &amp;newPolygon)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::project3D </td>
          <td>(</td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>polygon</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>newXYpose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>newPolygon</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Uses the given pose 3D to project a polygon into a new base. </p>

</div>
</div>
<a class="anchor" id="gac61924cf2848a569533dd9a4bf6eb9c2"></a><!-- doxytag: member="mrpt::math::project3D" ref="gac61924cf2848a569533dd9a4bf6eb9c2" args="(const TObject3D &amp;object, const CPose3D &amp;newXYPose, TObject3D &amp;newObject)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::project3D </td>
          <td>(</td>
          <td class="paramtype">const TObject3D &amp;&#160;</td>
          <td class="paramname"><em>object</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>newXYPose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TObject3D &amp;&#160;</td>
          <td class="paramname"><em>newObject</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Uses the given pose 3D to project any 3D object into a new base. </p>

</div>
</div>
<a class="anchor" id="ga3a8703f7747d7d472704621ea44c7021"></a><!-- doxytag: member="mrpt::math::project3D" ref="ga3a8703f7747d7d472704621ea44c7021" args="(const T &amp;obj, const TPlane &amp;newXYPlane, T &amp;newObj)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::project3D </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>newXYPlane</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T &amp;&#160;</td>
          <td class="paramname"><em>newObj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Projects any 3D object into the plane's base, using its inverse pose. </p>
<p>If the object is exactly inside the plane, this projection will zero its Z coordinates. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00325">325</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="structmrpt_1_1math_1_1_t_plane.html#a84a6723ba59a4095d77c60e6f281223c">mrpt::math::TPlane::getAsPose3D()</a>, and <a class="el" href="geometry_8h_source.html#l00295">mrpt::math::project3D()</a>.</p>

</div>
</div>
<a class="anchor" id="gaa777931620bc326748391967ef724568"></a><!-- doxytag: member="mrpt::math::project3D" ref="gaa777931620bc326748391967ef724568" args="(const T &amp;obj, const TPlane &amp;newXYPlane, const TPoint3D &amp;newOrigin, T &amp;newObj)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::project3D </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPlane &amp;&#160;</td>
          <td class="paramname"><em>newXYPlane</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TPoint3D &amp;&#160;</td>
          <td class="paramname"><em>newOrigin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T &amp;&#160;</td>
          <td class="paramname"><em>newObj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Projects any 3D object into the plane's base, using its inverse pose and forcing the position of the new coordinates origin. </p>
<p>If the object is exactly inside the plane, this projection will zero its Z coordinates. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00334">334</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="structmrpt_1_1math_1_1_t_plane.html#a84a6723ba59a4095d77c60e6f281223c">mrpt::math::TPlane::getAsPose3D()</a>, and <a class="el" href="geometry_8h_source.html#l00295">mrpt::math::project3D()</a>.</p>

</div>
</div>
<a class="anchor" id="gaa9f2fbd99fc5b7aa02f8ca7291e8dd18"></a><!-- doxytag: member="mrpt::math::project3D" ref="gaa9f2fbd99fc5b7aa02f8ca7291e8dd18" args="(const std::vector&lt; T &gt; &amp;objs, const CPose3D &amp;newXYpose, std::vector&lt; T &gt; &amp;newObjs)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::project3D </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>objs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>newXYpose</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; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>newObjs</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Projects a set of 3D objects into the plane's base. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00344">344</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="geometry_8h_source.html#l00295">mrpt::math::project3D()</a>.</p>

</div>
</div>
<a class="anchor" id="ga47a389f6645848187e5b8490d20c6bf0"></a><!-- doxytag: member="mrpt::math::RectanglesIntersection" ref="ga47a389f6645848187e5b8490d20c6bf0" args="(const double &amp;R1_x_min, const double &amp;R1_x_max, const double &amp;R1_y_min, const double &amp;R1_y_max, const double &amp;R2_x_min, const double &amp;R2_x_max, const double &amp;R2_y_min, const double &amp;R2_y_max, const double &amp;R2_pose_x, const double &amp;R2_pose_y, const double &amp;R2_pose_phi)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::RectanglesIntersection </td>
          <td>(</td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>R1_x_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>R1_x_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>R1_y_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>R1_y_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>R2_x_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>R2_x_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>R2_y_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>R2_y_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>R2_pose_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>R2_pose_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>R2_pose_phi</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns wether two rotated rectangles intersect. </p>
<p>The first rectangle is not rotated and given by (R1_x_min,R1_x_max)-(R1_y_min,R1_y_max). The second rectangle is given is a similar way, but it is internally rotated according to the given coordinates translation (R2_pose_x,R2_pose_y,R2_pose_phi(radians)), relative to the coordinates system of rectangle 1. </p>

</div>
</div>
<a class="anchor" id="gac093231a869a1c120f56f8f661b11cc4"></a><!-- doxytag: member="mrpt::math::rodrigues_so3_exp" ref="gac093231a869a1c120f56f8f661b11cc4" args="(const VECTOR_LIKE &amp;w, const Precision A, const Precision B, MATRIX_LIKE &amp;R)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename VECTOR_LIKE , typename Precision , typename MATRIX_LIKE &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::rodrigues_so3_exp </td>
          <td>(</td>
          <td class="paramtype">const VECTOR_LIKE &amp;&#160;</td>
          <td class="paramname"><em>w</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Precision&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Precision&#160;</td>
          <td class="paramname"><em>B</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MATRIX_LIKE &amp;&#160;</td>
          <td class="paramname"><em>R</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compute a rotation exponential using the Rodrigues Formula. </p>
<p>The rotation axis is given by <img class="formulaInl" alt="$\vec{w}$" src="form_20.png"/>, and the rotation angle must be computed using <img class="formulaInl" alt="$ \theta = |\vec{w}|$" src="form_21.png"/>. This is provided as a separate function primarily to allow fast and rough matrix exponentials using fast and rough approximations to <em>A</em> and <em>B</em>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">w</td><td>Vector about which to rotate. </td></tr>
    <tr><td class="paramname">A</td><td><img class="formulaInl" alt="$\frac{\sin \theta}{\theta}$" src="form_22.png"/> </td></tr>
    <tr><td class="paramname">B</td><td><img class="formulaInl" alt="$\frac{1 - \cos \theta}{\theta^2}$" src="form_23.png"/> </td></tr>
    <tr><td class="paramname">R</td><td>Matrix to hold the return value. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd>CPose3D </dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>Method from TooN (C) Tom Drummond (GNU GPL) </dd></dl>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l01134">1134</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="mrpt__macros_8h_source.html#l00285">ASSERT_EQUAL_</a>.</p>

</div>
</div>
<a class="anchor" id="gae1e629aecd4f3ef90c946f7922f628d2"></a><!-- doxytag: member="mrpt::math::SegmentsIntersection" ref="gae1e629aecd4f3ef90c946f7922f628d2" args="(const double &amp;x1, const double &amp;y1, const double &amp;x2, const double &amp;y2, const double &amp;x3, const double &amp;y3, const double &amp;x4, const double &amp;y4, double &amp;ix, double &amp;iy)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::SegmentsIntersection </td>
          <td>(</td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x3</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y3</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x4</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y4</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>ix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>iy</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the intersection point, and if it exists, between two segments. </p>

</div>
</div>
<a class="anchor" id="ga78b43ed0140e819f4d736e0f1b89a9b6"></a><!-- doxytag: member="mrpt::math::SegmentsIntersection" ref="ga78b43ed0140e819f4d736e0f1b89a9b6" args="(const double &amp;x1, const double &amp;y1, const double &amp;x2, const double &amp;y2, const double &amp;x3, const double &amp;y3, const double &amp;x4, const double &amp;y4, float &amp;ix, float &amp;iy)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::SegmentsIntersection </td>
          <td>(</td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x3</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y3</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>x4</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double &amp;&#160;</td>
          <td class="paramname"><em>y4</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>ix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>iy</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the intersection point, and if it exists, between two segments. </p>

</div>
</div>
<a class="anchor" id="ga6ee56196af1534bb1c408eb5fedbc64a"></a><!-- doxytag: member="mrpt::math::setEpsilon" ref="ga6ee56196af1534bb1c408eb5fedbc64a" args="(double nE)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::setEpsilon </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>nE</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Changes the value of the geometric epsilon. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__geometry__grp.html#ga1c443a200f0be17fb54bfc78c62acf45" title="Global epsilon to overcome small precision errors.">geometryEpsilon</a>,<a class="el" href="group__geometry__grp.html#gac164dcd4d3f3b2a46fd098cae08bfc7f" title="Gets the value of the geometric epsilon.">getEpsilon</a> </dd></dl>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00709">709</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga1c443a200f0be17fb54bfc78c62acf45">mrpt::math::geometryEpsilon</a>.</p>

</div>
</div>
<a class="anchor" id="ga1d062ce80412bd12f853b032f7822edb"></a><!-- doxytag: member="mrpt::math::skew_symmetric3" ref="ga1d062ce80412bd12f853b032f7822edb" args="(const VECTOR &amp;v, MATRIX &amp;M)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class VECTOR , class MATRIX &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::skew_symmetric3 </td>
          <td>(</td>
          <td class="paramtype">const VECTOR &amp;&#160;</td>
          <td class="paramname"><em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MATRIX &amp;&#160;</td>
          <td class="paramname"><em>M</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the 3x3 skew symmetric matrix from a 3-vector or 3-array: </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ M([x ~ y ~ z]^\top) = \left( \begin{array}{c c c} 0 &amp; -z &amp; y \\ z &amp; 0 &amp; -x \\ -y &amp; x &amp; 0 \end{array} \right) \]" src="form_11.png"/>
</p>
<p>. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00816">816</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="mrpt__macros_8h_source.html#l00282">ASSERT_</a>.</p>

<p>Referenced by <a class="el" href="geometry_8h_source.html#l00825">mrpt::math::skew_symmetric3()</a>.</p>

</div>
</div>
<a class="anchor" id="ga885c8e7de7ba80f5d314d4ec0a161d02"></a><!-- doxytag: member="mrpt::math::skew_symmetric3" ref="ga885c8e7de7ba80f5d314d4ec0a161d02" args="(const VECTOR &amp;v)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class VECTOR &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">mrpt::math::CMatrixDouble33</a> mrpt::math::skew_symmetric3 </td>
          <td>(</td>
          <td class="paramtype">const VECTOR &amp;&#160;</td>
          <td class="paramname"><em>v</em></td><td>)</td>
          <td><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="geometry_8h_source.html#l00825">825</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="math__frwds_8h_source.html#l00102">mrpt::math::UNINITIALIZED_MATRIX</a>, and <a class="el" href="geometry_8h_source.html#l00816">mrpt::math::skew_symmetric3()</a>.</p>

</div>
</div>
<a class="anchor" id="gaa6594f63ac8850608581cbda8c2425c9"></a><!-- doxytag: member="mrpt::math::skew_symmetric3_neg" ref="gaa6594f63ac8850608581cbda8c2425c9" args="(const VECTOR &amp;v, MATRIX &amp;M)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class VECTOR , class MATRIX &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::skew_symmetric3_neg </td>
          <td>(</td>
          <td class="paramtype">const VECTOR &amp;&#160;</td>
          <td class="paramname"><em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">MATRIX &amp;&#160;</td>
          <td class="paramname"><em>M</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the negative version of a 3x3 skew symmetric matrix from a 3-vector or 3-array: </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ -M([x ~ y ~ z]^\top) = \left( \begin{array}{c c c} 0 &amp; z &amp; -y \\ -z &amp; 0 &amp; x \\ y &amp; -x &amp; 0 \end{array} \right) \]" src="form_12.png"/>
</p>
<p>. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00841">841</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="mrpt__macros_8h_source.html#l00282">ASSERT_</a>.</p>

<p>Referenced by <a class="el" href="geometry_8h_source.html#l00850">mrpt::math::skew_symmetric3_neg()</a>.</p>

</div>
</div>
<a class="anchor" id="ga88a1a74aa8e47de309e4b00dfb1b2d9b"></a><!-- doxytag: member="mrpt::math::skew_symmetric3_neg" ref="ga88a1a74aa8e47de309e4b00dfb1b2d9b" args="(const VECTOR &amp;v)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class VECTOR &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">mrpt::math::CMatrixDouble33</a> mrpt::math::skew_symmetric3_neg </td>
          <td>(</td>
          <td class="paramtype">const VECTOR &amp;&#160;</td>
          <td class="paramname"><em>v</em></td><td>)</td>
          <td><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="geometry_8h_source.html#l00850">850</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="math__frwds_8h_source.html#l00102">mrpt::math::UNINITIALIZED_MATRIX</a>, and <a class="el" href="geometry_8h_source.html#l00841">mrpt::math::skew_symmetric3_neg()</a>.</p>

</div>
</div>
<a class="anchor" id="ga3e9a5920971ffc3caa6649159bc5a156"></a><!-- doxytag: member="mrpt::math::slerp" ref="ga3e9a5920971ffc3caa6649159bc5a156" args="(const CQuaternion&lt; T &gt; &amp;q0, const CQuaternion&lt; T &gt; &amp;q1, const double t, CQuaternion&lt; T &gt; &amp;q)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::math::slerp </td>
          <td>(</td>
          <td class="paramtype">const CQuaternion&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>q0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const CQuaternion&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>q1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CQuaternion&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>q</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>SLERP interpolation between two quaternions. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">q0</td><td>The quaternion for t=0 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">q1</td><td>The quaternion for t=1 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">t</td><td>A "time" parameter, in the range [0,1]. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">q</td><td>The output, interpolated quaternion. </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Template Parameters:</b></dt><dd>
  <table class="">
    <tr><td class="paramname">T</td><td>The type of the quaternion (e.g. float, double). </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classstd_1_1exception.html" title="STL class.">std::exception</a></td><td>Only in Debug, if t is not in the valid range. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a href="http://en.wikipedia.org/wiki/Slerp">http://en.wikipedia.org/wiki/Slerp</a> </dd></dl>

<p>Definition at line <a class="el" href="slerp_8h_source.html#l00057">57</a> of file <a class="el" href="slerp_8h_source.html">slerp.h</a>.</p>

<p>References <a class="el" href="mrpt__macros_8h_source.html#l00304">ASSERTDEB_</a>, <a class="el" href="nanoflann_8hpp_source.html#l00214">nanoflann::abs()</a>, and <a class="el" href="bits_8h_source.html#l00161">mrpt::utils::square()</a>.</p>

</div>
</div>
<a class="anchor" id="ga6518fde1921c7113e333e5abb1d3728c"></a><!-- doxytag: member="mrpt::math::slerp" ref="ga6518fde1921c7113e333e5abb1d3728c" args="(const CPose3D &amp;q0, const CPose3D &amp;q1, const double t, CPose3D &amp;p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::slerp </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>q0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>q1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>p</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>SLERP interpolation between two 6D poses - like <a class="el" href="group__geometry__grp.html#ga3e9a5920971ffc3caa6649159bc5a156" title="SLERP interpolation between two quaternions.">mrpt::math::slerp</a> for quaternions, but interpolates the [X,Y,Z] coordinates as well. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p0</td><td>The pose for t=0 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p1</td><td>The pose for t=1 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">t</td><td>A "time" parameter, in the range [0,1]. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">p</td><td>The output, interpolated pose. </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classstd_1_1exception.html" title="STL class.">std::exception</a></td><td>Only in Debug, if t is not in the valid range. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga1b4ce76cc8f3b03289875af202272ab8"></a><!-- doxytag: member="mrpt::math::slerp" ref="ga1b4ce76cc8f3b03289875af202272ab8" args="(const CPose3DQuat &amp;q0, const CPose3DQuat &amp;q1, const double t, CPose3DQuat &amp;p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BASE_IMPEXP mrpt::math::slerp </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_quat.html">CPose3DQuat</a> &amp;&#160;</td>
          <td class="paramname"><em>q0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_quat.html">CPose3DQuat</a> &amp;&#160;</td>
          <td class="paramname"><em>q1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_quat.html">CPose3DQuat</a> &amp;&#160;</td>
          <td class="paramname"><em>p</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></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>

</div>
</div>
<a class="anchor" id="ga765a2078a3e24f5a172b14b0a5e8edcf"></a><!-- doxytag: member="mrpt::math::splitInConvexComponents" ref="ga765a2078a3e24f5a172b14b0a5e8edcf" args="(const TPolygon2D &amp;poly, vector&lt; TPolygon2D &gt; &amp;components)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::splitInConvexComponents </td>
          <td>(</td>
          <td class="paramtype">const TPolygon2D &amp;&#160;</td>
          <td class="paramname"><em>poly</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">vector&lt; TPolygon2D &gt; &amp;&#160;</td>
          <td class="paramname"><em>components</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Splits a 2D polygon into convex components. </p>

</div>
</div>
<a class="anchor" id="ga450bca4f9e960756f29c65167f4824c1"></a><!-- doxytag: member="mrpt::math::splitInConvexComponents" ref="ga450bca4f9e960756f29c65167f4824c1" args="(const TPolygon3D &amp;poly, vector&lt; TPolygon3D &gt; &amp;components)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::splitInConvexComponents </td>
          <td>(</td>
          <td class="paramtype">const TPolygon3D &amp;&#160;</td>
          <td class="paramname"><em>poly</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">vector&lt; TPolygon3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>components</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Splits a 3D polygon into convex components. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classstd_1_1logic__error.html" title="STL class.">std::logic_error</a></td><td>if the polygon can't be fit into a plane. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga363e00600f9c000dd774e6c721faba7d"></a><!-- doxytag: member="mrpt::math::traceRay" ref="ga363e00600f9c000dd774e6c721faba7d" args="(const vector&lt; TPolygonWithPlane &gt; &amp;vec, const mrpt::poses::CPose3D &amp;pose, double &amp;dist)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool BASE_IMPEXP mrpt::math::traceRay </td>
          <td>(</td>
          <td class="paramtype">const vector&lt; TPolygonWithPlane &gt; &amp;&#160;</td>
          <td class="paramname"><em>vec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">mrpt::poses::CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>pose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>dist</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Fast ray tracing method using polygons' properties. </p>
<dl class="see"><dt><b>See also:</b></dt><dd>CRenderizable::rayTrace </dd></dl>

<p>Referenced by <a class="el" href="geometry_8h_source.html#l00757">mrpt::math::traceRay()</a>.</p>

</div>
</div>
<a class="anchor" id="gad3a55044d9f2abb347c7221e3e58d45e"></a><!-- doxytag: member="mrpt::math::traceRay" ref="gad3a55044d9f2abb347c7221e3e58d45e" args="(const vector&lt; TPolygon3D &gt; &amp;vec, const mrpt::poses::CPose3D &amp;pose, double &amp;dist)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::traceRay </td>
          <td>(</td>
          <td class="paramtype">const vector&lt; TPolygon3D &gt; &amp;&#160;</td>
          <td class="paramname"><em>vec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">mrpt::poses::CPose3D</a> &amp;&#160;</td>
          <td class="paramname"><em>pose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>dist</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Fast ray tracing method using polygons' properties. </p>
<dl class="see"><dt><b>See also:</b></dt><dd>CRenderizable::rayTrace </dd></dl>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00757">757</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="classmrpt_1_1math_1_1_t_polygon_with_plane.html#a9f32edbe0deaeeac5cb84be188a792f8">mrpt::math::TPolygonWithPlane::getPlanes()</a>, and <a class="el" href="group__geometry__grp.html#ga363e00600f9c000dd774e6c721faba7d">mrpt::math::traceRay()</a>.</p>

</div>
</div>
<a class="anchor" id="ga02898caca2e86295b143fddb35be2d02"></a><!-- doxytag: member="mrpt::math::vectorsAreParallel2D" ref="ga02898caca2e86295b143fddb35be2d02" args="(const T &amp;v1, const U &amp;v2)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , class U &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::vectorsAreParallel2D </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>v1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const U &amp;&#160;</td>
          <td class="paramname"><em>v2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns true if two 2D vectors are parallel. </p>
<p>The arguments may be points, arrays, etc. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00860">860</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="nanoflann_8hpp_source.html#l00214">nanoflann::abs()</a>, and <a class="el" href="group__geometry__grp.html#ga1c443a200f0be17fb54bfc78c62acf45">mrpt::math::geometryEpsilon</a>.</p>

</div>
</div>
<a class="anchor" id="ga8e6c754edead58282fc8bc2fe030a28f"></a><!-- doxytag: member="mrpt::math::vectorsAreParallel3D" ref="ga8e6c754edead58282fc8bc2fe030a28f" args="(const T &amp;v1, const U &amp;v2)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , class U &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::math::vectorsAreParallel3D </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>v1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const U &amp;&#160;</td>
          <td class="paramname"><em>v2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns true if two 3D vectors are parallel. </p>
<p>The arguments may be points, arrays, etc. </p>

<p>Definition at line <a class="el" href="geometry_8h_source.html#l00868">868</a> of file <a class="el" href="geometry_8h_source.html">geometry.h</a>.</p>

<p>References <a class="el" href="nanoflann_8hpp_source.html#l00214">nanoflann::abs()</a>, and <a class="el" href="group__geometry__grp.html#ga1c443a200f0be17fb54bfc78c62acf45">mrpt::math::geometryEpsilon</a>.</p>

</div>
</div>
<hr/><h2>Variable Documentation</h2>
<a class="anchor" id="ga39c624c65577d653fdd4959db170f99e"></a><!-- doxytag: member="mrpt::math::GEOMETRIC_TYPE_LINE" ref="ga39c624c65577d653fdd4959db170f99e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const unsigned char <a class="el" href="group__geometry__grp.html#ga39c624c65577d653fdd4959db170f99e">mrpt::math::GEOMETRIC_TYPE_LINE</a> = 2</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Object type identifier for <a class="el" href="structmrpt_1_1math_1_1_t_line2_d.html" title="2D line without bounds, represented by its equation .">TLine2D</a> or <a class="el" href="structmrpt_1_1math_1_1_t_line3_d.html" title="3D line, represented by a base point and a director vector.">TLine3D</a>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a>,<a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l01236">1236</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>Referenced by <a class="el" href="lightweight__geom__data_8h_source.html#l01872">mrpt::math::TObject2D::isLine()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l01926">mrpt::math::TObject2D::operator=()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l02102">mrpt::math::TObject3D::isLine()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l02171">mrpt::math::TObject3D::operator=()</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l02240">mrpt::math::TObject3D::generate2DObject()</a>.</p>

</div>
</div>
<a class="anchor" id="gaf25b3e2c558bc58ce4f5251cc62ac2cd"></a><!-- doxytag: member="mrpt::math::GEOMETRIC_TYPE_PLANE" ref="gaf25b3e2c558bc58ce4f5251cc62ac2cd" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const unsigned char <a class="el" href="group__geometry__grp.html#gaf25b3e2c558bc58ce4f5251cc62ac2cd">mrpt::math::GEOMETRIC_TYPE_PLANE</a> = 4</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Object type identifier for <a class="el" href="structmrpt_1_1math_1_1_t_plane.html" title="3D Plane, represented by its equation ">TPlane</a>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l01246">1246</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>Referenced by <a class="el" href="lightweight__geom__data_8h_source.html#l02114">mrpt::math::TObject3D::isPlane()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l02171">mrpt::math::TObject3D::operator=()</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l02240">mrpt::math::TObject3D::generate2DObject()</a>.</p>

</div>
</div>
<a class="anchor" id="ga2dbf1225dd78e1ae2cb5e7d0b7ddea52"></a><!-- doxytag: member="mrpt::math::GEOMETRIC_TYPE_POINT" ref="ga2dbf1225dd78e1ae2cb5e7d0b7ddea52" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const unsigned char <a class="el" href="group__geometry__grp.html#ga2dbf1225dd78e1ae2cb5e7d0b7ddea52">mrpt::math::GEOMETRIC_TYPE_POINT</a> = 0</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Object type identifier for <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html" title="Lightweight 2D point.">TPoint2D</a> or <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html" title="Lightweight 3D point.">TPoint3D</a>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a>,<a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l01226">1226</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>Referenced by <a class="el" href="lightweight__geom__data_8h_source.html#l01860">mrpt::math::TObject2D::isPoint()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l01926">mrpt::math::TObject2D::operator=()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l02090">mrpt::math::TObject3D::isPoint()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l02171">mrpt::math::TObject3D::operator=()</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l02240">mrpt::math::TObject3D::generate2DObject()</a>.</p>

</div>
</div>
<a class="anchor" id="ga8a10a9c561cb5d704d17328857b4eb64"></a><!-- doxytag: member="mrpt::math::GEOMETRIC_TYPE_POLYGON" ref="ga8a10a9c561cb5d704d17328857b4eb64" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const unsigned char <a class="el" href="group__geometry__grp.html#ga8a10a9c561cb5d704d17328857b4eb64">mrpt::math::GEOMETRIC_TYPE_POLYGON</a> = 3</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Object type identifier for <a class="el" href="classmrpt_1_1math_1_1_t_polygon2_d.html" title="2D polygon, inheriting from std::vector&lt;TPoint2D&gt;.">TPolygon2D</a> or <a class="el" href="classmrpt_1_1math_1_1_t_polygon3_d.html" title="3D polygon, inheriting from std::vector&lt;TPoint3D&gt;">TPolygon3D</a>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a>,<a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l01241">1241</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>Referenced by <a class="el" href="lightweight__geom__data_8h_source.html#l01818">mrpt::math::TObject2D::destroy()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l01878">mrpt::math::TObject2D::isPolygon()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l01926">mrpt::math::TObject2D::operator=()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l02042">mrpt::math::TObject3D::destroy()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l02108">mrpt::math::TObject3D::isPolygon()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l02171">mrpt::math::TObject3D::operator=()</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l02240">mrpt::math::TObject3D::generate2DObject()</a>.</p>

</div>
</div>
<a class="anchor" id="gabdfe15c4a3eebe6168b00dd3a64224fc"></a><!-- doxytag: member="mrpt::math::GEOMETRIC_TYPE_SEGMENT" ref="gabdfe15c4a3eebe6168b00dd3a64224fc" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const unsigned char <a class="el" href="group__geometry__grp.html#gabdfe15c4a3eebe6168b00dd3a64224fc">mrpt::math::GEOMETRIC_TYPE_SEGMENT</a> = 1</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Object type identifier for <a class="el" href="structmrpt_1_1math_1_1_t_segment2_d.html" title="2D segment, consisting of two points.">TSegment2D</a> or <a class="el" href="structmrpt_1_1math_1_1_t_segment3_d.html" title="3D segment, consisting of two points.">TSegment3D</a>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a>,<a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l01231">1231</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>Referenced by <a class="el" href="lightweight__geom__data_8h_source.html#l01866">mrpt::math::TObject2D::isSegment()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l01926">mrpt::math::TObject2D::operator=()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l02096">mrpt::math::TObject3D::isSegment()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l02171">mrpt::math::TObject3D::operator=()</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l02240">mrpt::math::TObject3D::generate2DObject()</a>.</p>

</div>
</div>
<a class="anchor" id="ga6fb47c39fe7b701f2ad23f02787ec63a"></a><!-- doxytag: member="mrpt::math::GEOMETRIC_TYPE_UNDEFINED" ref="ga6fb47c39fe7b701f2ad23f02787ec63a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const unsigned char <a class="el" href="group__geometry__grp.html#ga6fb47c39fe7b701f2ad23f02787ec63a">mrpt::math::GEOMETRIC_TYPE_UNDEFINED</a> = 255</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Object type identifier for empty <a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a> or <a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a>. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="structmrpt_1_1math_1_1_t_object2_d.html" title="Standard type for storing any lightweight 2D type.">TObject2D</a>,<a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html" title="Standard object for storing any 3D lightweight object.">TObject3D</a> </dd></dl>

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l01251">1251</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>Referenced by <a class="el" href="lightweight__geom__data_8h_source.html#l01818">mrpt::math::TObject2D::destroy()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l02042">mrpt::math::TObject3D::destroy()</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l02171">mrpt::math::TObject3D::operator=()</a>.</p>

</div>
</div>
<a class="anchor" id="ga1c443a200f0be17fb54bfc78c62acf45"></a><!-- doxytag: member="mrpt::math::geometryEpsilon" ref="ga1c443a200f0be17fb54bfc78c62acf45" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double BASE_IMPEXP <a class="el" href="group__geometry__grp.html#ga1c443a200f0be17fb54bfc78c62acf45">mrpt::math::geometryEpsilon</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Global epsilon to overcome small precision errors. </p>

<p>Referenced by <a class="el" href="geometry_8h_source.html#l00709">mrpt::math::setEpsilon()</a>, <a class="el" href="geometry_8h_source.html#l00716">mrpt::math::getEpsilon()</a>, <a class="el" href="geometry_8h_source.html#l00860">mrpt::math::vectorsAreParallel2D()</a>, and <a class="el" href="geometry_8h_source.html#l00868">mrpt::math::vectorsAreParallel3D()</a>.</p>

</div>
</div>
<a class="anchor" id="gac4f838c4ff28e24b60032903f9a87339"></a><!-- doxytag: member="mrpt::math::TLine3D" ref="gac4f838c4ff28e24b60032903f9a87339" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct BASE_IMPEXP <a class="el" href="structmrpt_1_1math_1_1_t_line3_d.html">mrpt::math::TLine3D</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l00638">638</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga621fd9d87c2da1ad022a4192779adfef"></a><!-- doxytag: member="mrpt::math::TObject3D" ref="ga621fd9d87c2da1ad022a4192779adfef" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct BASE_IMPEXP <a class="el" href="structmrpt_1_1math_1_1_t_object3_d.html">mrpt::math::TObject3D</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

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

</div>
</div>
<a class="anchor" id="gac96724117d963fde72380a079deaea23"></a><!-- doxytag: member="mrpt::math::TPolygon3D" ref="gac96724117d963fde72380a079deaea23" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">class BASE_IMPEXP <a class="el" href="classmrpt_1_1math_1_1_t_polygon3_d.html">mrpt::math::TPolygon3D</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l00639">639</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>Referenced by <a class="el" href="lightweight__geom__data_8h_source.html#l02068">mrpt::math::TObject3D::TObject3D()</a>, and <a class="el" href="lightweight__geom__data_8h_source.html#l02171">mrpt::math::TObject3D::operator=()</a>.</p>

</div>
</div>
<a class="anchor" id="ga6062a8844f75e4a2efd63d7027237b5a"></a><!-- doxytag: member="mrpt::math::TSegment3D" ref="ga6062a8844f75e4a2efd63d7027237b5a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct BASE_IMPEXP <a class="el" href="structmrpt_1_1math_1_1_t_segment3_d.html">mrpt::math::TSegment3D</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="lightweight__geom__data_8h_source.html#l00637">637</a> of file <a class="el" href="lightweight__geom__data_8h_source.html">lightweight_geom_data.h</a>.</p>

<p>Referenced by <a class="el" href="_c_set_of_lines_8h_source.html#l00096">mrpt::opengl::CSetOfLines::appendLine()</a>, and <a class="el" href="_c_set_of_lines_8h_source.html#l00155">mrpt::opengl::CSetOfLines::setLineByIndex()</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>