Sophie

Sophie

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

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>mrpt::poses::CPose3D Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<div align="left"><a href="http://www.mrpt.org/">Main MRPT website</a> &gt; <b>C++ reference</b> </div>
<div align="right">
<a href="index.html"><img border="0" src="mrpt_logo.png" alt="MRPT logo"></a>
</div>
<!-- Generated by Doxygen 1.7.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
          <div class="left">
            <form id="FSearchBox" action="search.php" method="get">
              <img id="MSearchSelect" src="search/mag.png" alt=""/>
              <input type="text" id="MSearchField" name="query" value="Search" size="20" accesskey="S" 
                     onfocus="searchBox.OnSearchFieldFocus(true)" 
                     onblur="searchBox.OnSearchFieldFocus(false)"/>
            </form>
          </div><div class="right"></div>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="namespacemrpt.html">mrpt</a>      </li>
      <li class="navelem"><a class="el" href="namespacemrpt_1_1poses.html">poses</a>      </li>
      <li class="navelem"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a>  </div>
  <div class="headertitle">
<div class="title">mrpt::poses::CPose3D Class Reference<div class="ingroups"><a class="el" href="group__poses__grp.html">2D/3D points and poses</a></div></div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="mrpt::poses::CPose3D" --><!-- doxytag: inherits="CPose&lt; CPose3D &gt;,mrpt::utils::CSerializable" --><hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>A class used to store a 3D pose (a 3D translation + a rotation in 3D). </p>
<p>The 6D transformation in SE(3) stored in this class is kept in two separate containers: a 3-array for the translation, and a 3x3 rotation matrix.</p>
<p>The 6D pose is parameterized as a 6-vector: [x y z yaw pitch roll]. Note however, that the yaw/pitch/roll angles are only computed (on-demand and transparently) when the user requests them. Normally, rotations are handled via the 3x3 rotation matrix only.</p>
<p>For a complete descriptionan of Points/Poses, see <a class="el" href="classmrpt_1_1poses_1_1_c_pose_or_point.html" title="The base template class for 2D &amp; 3D points and poses.">mrpt::poses::CPoseOrPoint</a>, or refer to the <a href="http://www.mrpt.org/2D_3D_Geometry">2D/3D Geometry tutorial</a> in the wiki.</p>
<p>To change the individual components of the pose, use <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aa1559dfb9d3ee88046933d1bc21bab98" title="Set the pose from a 3D position (meters) and yaw/pitch/roll angles (radians) - This method recomputes...">CPose3D::setFromValues</a>. This class assures that the internal 3x3 rotation matrix is always up-to-date with the "yaw pitch roll" members.</p>
<p>Rotations in 3D can be also represented by quaternions. See <a class="el" href="classmrpt_1_1math_1_1_c_quaternion.html" title="A quaternion, which can represent a 3D rotation as pair , with a real part &quot;r&quot; and a 3D vector ...">mrpt::math::CQuaternion</a>, and method <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a31e4434ffbcf84c2675abcc131a51abf" title="Returns the quaternion associated to the rotation of this object (NOTE: XYZ translation is ignored)  ...">CPose3D::getAsQuaternion</a>.</p>
<p>This class and <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_quat.html" title="A class used to store a 3D pose as a translation (x,y,z) and a quaternion (qr,qx,qy,qz).">CPose3DQuat</a> are very similar, and they can be converted to the each other automatically via transformation constructors.</p>
<p>There are Lie algebra methods: <em>exp</em> and <em>ln</em> (see the methods for documentation).</p>
<div align="center"> <div class="image">
<img src="CPose3D.gif" alt="CPose3D.gif"/>
</div>
 </div><dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose_or_point.html" title="The base template class for 2D &amp; 3D points and poses.">CPoseOrPoint</a>,<a class="el" href="classmrpt_1_1poses_1_1_c_point3_d.html" title="A class used to store a 3D point.">CPoint3D</a>, <a class="el" href="classmrpt_1_1math_1_1_c_quaternion.html" title="A quaternion, which can represent a 3D rotation as pair , with a real part &quot;r&quot; and a 3D vector ...">mrpt::math::CQuaternion</a> </dd></dl>
</div>
<p><code>#include &lt;<a class="el" href="_c_pose3_d_8h_source.html">mrpt/poses/CPose3D.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for mrpt::poses::CPose3D:</div>
<div class="dyncontent">
<div class="center"><img src="classmrpt_1_1poses_1_1_c_pose3_d__inherit__graph.png" border="0" usemap="#mrpt_1_1poses_1_1_c_pose3_d_inherit__map" alt="Inheritance graph"/></div>
<map name="mrpt_1_1poses_1_1_c_pose3_d_inherit__map" id="mrpt_1_1poses_1_1_c_pose3_d_inherit__map">
<area shape="rect" id="node2" href="classmrpt_1_1poses_1_1_c_pose.html" title="mrpt::poses::CPose\&lt; CPose3D \&gt;" alt="" coords="51,264,271,291"/><area shape="rect" id="node4" href="classmrpt_1_1poses_1_1_c_pose.html" title="A base class for representing a pose in 2D or 3D." alt="" coords="92,173,231,200"/><area shape="rect" id="node6" href="classmrpt_1_1poses_1_1_c_pose_or_point.html" title="mrpt::poses::CPoseOrPoint\&lt; DERIVEDCLASS \&gt;" alt="" coords="5,96,317,123"/><area shape="rect" id="node8" href="classmrpt_1_1poses_1_1_c_pose_or_point.html" title="The base template class for 2D &amp; 3D points and poses." alt="" coords="70,5,252,32"/><area shape="rect" id="node10" href="classmrpt_1_1utils_1_1_c_serializable.html" title="The virtual base class which provides a unified interface for all persistent objects in MRPT..." alt="" coords="296,264,460,291"/><area shape="rect" id="node12" href="classmrpt_1_1utils_1_1_c_object.html" title="The virtual base class of all MRPT classes with a unified RTTI system." alt="" coords="311,173,445,200"/></map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="classmrpt_1_1poses_1_1_c_pose3_d-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a394e2a642190e43d1eb268e2e70e53f2a5012cf5fc292528fbc0e69005acf5575">is_3D_val</a> =  1
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ac66027644c05d47595076f339ea1f2f4a8fff27ddcd69881cd9bceb069d13f267">rotation_dimensions</a> =  3
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a67b629d161f9a8d195e296d80919658ea871ec113d2723d04b7bb906c3ddb8ce5">is_PDF_val</a> =  0
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a1c4d407c9e8c212bdcc073ea35a54346">type_value</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Used to emulate <a class="el" href="classmrpt_1_1poses_1_1_c_pose_p_d_f.html" title="Declares a class that represents a probability density function (pdf) of a 2D pose (x...">CPosePDF</a> types, for example, in <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html" title="A directed graph of pose constraints, with edges being the relative pose between pairs of nodes inden...">mrpt::graphs::CNetworkOfPoses</a>.  <a href="#a1c4d407c9e8c212bdcc073ea35a54346"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a1c4d407c9e8c212bdcc073ea35a54346">type_value</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a6aeff154d8769aaa8ac951ba77c826f6">getPoseMean</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a1c4d407c9e8c212bdcc073ea35a54346">type_value</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a06e76192ed6f9c6a50a38db01def382b">getPoseMean</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_object_ptr.html">mrpt::utils::CObjectPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_object.html#a534695890364f4b916bba07dad311bcf">duplicateGetSmartPtr</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer).  <a href="#a534695890364f4b916bba07dad311bcf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_object.html">CObject</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_object.html#a9ef7857a0b36059c078e195a0a65ac00">clone</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Cloning interface for smart pointers.  <a href="#a9ef7857a0b36059c078e195a0a65ac00"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Constructors</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#adf32c0aaa8c28156bba2d5a68c6f61a0">CPose3D</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor, with all the coordinates set to zero.  <a href="#adf32c0aaa8c28156bba2d5a68c6f61a0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a5509e8a071ee1dd95c1aec0918c037af">CPose3D</a> (const double x, const double y, const double z, const double yaw=0, const double pitch=0, const double roll=0)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor with initilization of the pose; (remember that angles are always given in radians!)  <a href="#a5509e8a071ee1dd95c1aec0918c037af"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a41ec052cb073bb206be09b58d60ac50e">CPose3D</a> (const <a class="el" href="namespacemrpt_1_1math.html#a3814c2b868f059d6a7ab0d8ecd2311d6">math::CMatrixDouble</a> &amp;m)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor from a 4x4 homogeneous matrix - the passed matrix can be actually of any size larger than or equal 3x4, since only those first values are used (the last row of a homogeneous 4x4 matrix are always fixed).  <a href="#a41ec052cb073bb206be09b58d60ac50e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a1fc960bd3f5c1af797a2e803a966046e">CPose3D</a> (const <a class="el" href="namespacemrpt_1_1math.html#a25a1ba39a478a66d24a4ecfb9c585c79">math::CMatrixDouble44</a> &amp;m)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor from a 4x4 homogeneous matrix:  <a href="#a1fc960bd3f5c1af797a2e803a966046e"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class MATRIX33 , class VECTOR3 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a5ee4cb6013f742cdc2bf7f71ee43e2b2">CPose3D</a> (const MATRIX33 &amp;rot, const VECTOR3 &amp;xyz)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor from a 3x3 rotation matrix and a the translation given as a 3-vector, a 3-array, a <a class="el" href="classmrpt_1_1poses_1_1_c_point3_d.html" title="A class used to store a 3D point.">CPoint3D</a> or a TPoint3D.  <a href="#a5ee4cb6013f742cdc2bf7f71ee43e2b2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a45334da03ae59d776f5b9ebde4b49b3f">CPose3D</a> (const <a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">CMatrixDouble33</a> &amp;rot, const <a class="el" href="classmrpt_1_1math_1_1_c_array_double.html">CArrayDouble</a>&lt; 3 &gt; &amp;xyz)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a0f93ba8b66bb4c7a601588f1150a0f9e">CPose3D</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> &amp;)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor from a <a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html" title="A class used to store a 2D pose.">CPose2D</a> object.  <a href="#a0f93ba8b66bb4c7a601588f1150a0f9e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#adbea91121e81471ed3a3e5ca945cc26d">CPose3D</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_point3_d.html">CPoint3D</a> &amp;)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor from a <a class="el" href="classmrpt_1_1poses_1_1_c_point3_d.html" title="A class used to store a 3D point.">CPoint3D</a> object.  <a href="#adbea91121e81471ed3a3e5ca945cc26d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a219a871719d3b0abd6ba79f2fb67137b">CPose3D</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_pose3_d.html">mrpt::math::TPose3D</a> &amp;)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor from lightweight object.  <a href="#a219a871719d3b0abd6ba79f2fb67137b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a9bdf854450473a40fa787758ebf88eb5">CPose3D</a> (const <a class="el" href="namespacemrpt_1_1math.html#ad0af3f20fa3e963153e6135431d597e3">mrpt::math::CQuaternionDouble</a> &amp;q, const double x, const double y, const double z)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor from a quaternion (which only represents the 3D rotation part) and a 3D displacement.  <a href="#a9bdf854450473a40fa787758ebf88eb5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a02708d7a2aa08b7d1a9749ea7f4e244c">CPose3D</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_quat.html">CPose3DQuat</a> &amp;)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor from a <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_quat.html" title="A class used to store a 3D pose as a translation (x,y,z) and a quaternion (qr,qx,qy,qz).">CPose3DQuat</a>.  <a href="#a02708d7a2aa08b7d1a9749ea7f4e244c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#af245a30779e1d574021933a3c9d5d6ce">CPose3D</a> (<a class="el" href="namespacemrpt_1_1poses.html#ac46e1fb95d438a441b6f396d9c79f430">TConstructorFlags_Poses</a> constructor_dummy_param)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Fast constructor that leaves all the data uninitialized - call with UNINITIALIZED_POSE as argument.  <a href="#af245a30779e1d574021933a3c9d5d6ce"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a59214f588539f5b584b2ba4e02d13c10">CPose3D</a> (const <a class="el" href="classmrpt_1_1math_1_1_c_array_double.html">CArrayDouble</a>&lt; 12 &gt; &amp;vec12)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor from an array with these 12 elements: [r11 r21 r31 r12 r22 r32 r13 r23 r33 tx ty tz] where r{ij} are the entries of the 3x3 rotation matrix and t{x,y,z} are the 3D translation of the pose.  <a href="#a59214f588539f5b584b2ba4e02d13c10"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Access 3x3 rotation and 4x4 homogeneous matrices</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a2d9680cfd637c142dcd0d5523815254a">getHomogeneousMatrix</a> (<a class="el" href="namespacemrpt_1_1math.html#a25a1ba39a478a66d24a4ecfb9c585c79">CMatrixDouble44</a> &amp;out_HM) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (translation+orientation).  <a href="#a2d9680cfd637c142dcd0d5523815254a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacemrpt_1_1math.html#a25a1ba39a478a66d24a4ecfb9c585c79">CMatrixDouble44</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aa0f69bb9174e66f3196420e53b97fbed">getHomogeneousMatrixVal</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a67131b7bf5250250cf37ed1f8acdf73e">getRotationMatrix</a> (<a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">mrpt::math::CMatrixDouble33</a> &amp;ROT) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the 3x3 rotation matrix.  <a href="#a67131b7bf5250250cf37ed1f8acdf73e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">mrpt::math::CMatrixDouble33</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a007521f8a1d6ac7c2f72dd4b014c00fa">getRotationMatrix</a> () const </td></tr>
<tr><td colspan="2"><div class="groupHeader">Pose-pose and pose-point compositions and operators</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a3ccd24581f78b116c1955ff621ceeae9">operator+</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;b) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The operator <img class="formulaInl" alt="$ a \oplus b $" src="form_59.png"/> is the pose compounding operator.  <a href="#a3ccd24581f78b116c1955ff621ceeae9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1poses_1_1_c_point3_d.html">CPoint3D</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a25e2e8bd59108011ef3d2e13a2fbb072">operator+</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_point3_d.html">CPoint3D</a> &amp;b) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The operator <img class="formulaInl" alt="$ a \oplus b $" src="form_59.png"/> is the pose compounding operator.  <a href="#a25e2e8bd59108011ef3d2e13a2fbb072"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1poses_1_1_c_point3_d.html">CPoint3D</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a800717a9f0f52f9b6fc3c994c2315bcf">operator+</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_point2_d.html">CPoint2D</a> &amp;b) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The operator <img class="formulaInl" alt="$ a \oplus b $" src="form_59.png"/> is the pose compounding operator.  <a href="#a800717a9f0f52f9b6fc3c994c2315bcf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a2a71edea2ca59fff342058c8ff1b344c">sphericalCoordinates</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a> &amp;point, double &amp;out_range, double &amp;out_yaw, double &amp;out_pitch) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the spherical coordinates of a 3D point as seen from the 6D pose specified by this object.  <a href="#a2a71edea2ca59fff342058c8ff1b344c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aaabe44aa147e5391009051b49a6d524e">composePoint</a> (double lx, double ly, double lz, double &amp;gx, double &amp;gy, double &amp;gz, <a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 3, 3 &gt; *out_jacobian_df_dpoint=NULL, <a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 3, 6 &gt; *out_jacobian_df_dpose=NULL, <a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 3, 6 &gt; *out_jacobian_df_dse3=NULL, bool use_small_rot_approx=false) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">An alternative, slightly more efficient way of doing <img class="formulaInl" alt="$ G = P \oplus L $" src="form_55.png"/> with G and L being 3D points and P this 6D pose.  <a href="#aaabe44aa147e5391009051b49a6d524e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a979861f7272eaa41953403e39588fe9e">composePoint</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a> local_point, <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a> &amp;global_point) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">An alternative, slightly more efficient way of doing <img class="formulaInl" alt="$ G = P \oplus L $" src="form_55.png"/> with G and L being 3D points and P this 6D pose.  <a href="#a979861f7272eaa41953403e39588fe9e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ab4cd48076205450895d0666c748bd983">composePoint</a> (double lx, double ly, double lz, float &amp;gx, float &amp;gy, float &amp;gz) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">An alternative, slightly more efficient way of doing <img class="formulaInl" alt="$ G = P \oplus L $" src="form_55.png"/> with G and L being 3D points and P this 6D pose.  <a href="#ab4cd48076205450895d0666c748bd983"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ab74dd377deb846d06d5bf91bc6d9682b">inverseComposePoint</a> (const double gx, const double gy, const double gz, double &amp;lx, double &amp;ly, double &amp;lz, <a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 3, 3 &gt; *out_jacobian_df_dpoint=NULL, <a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 3, 6 &gt; *out_jacobian_df_dpose=NULL, <a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 3, 6 &gt; *out_jacobian_df_dse3=NULL) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the 3D point L such as <img class="formulaInl" alt="$ L = G \ominus this $" src="form_60.png"/>.  <a href="#ab74dd377deb846d06d5bf91bc6d9682b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a88f72fa352303454295616213fc10c2d">composeFrom</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;A, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;B)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes "this = A (+) B"; this method is slightly more efficient than "this= A + B;" since it avoids the temporary object.  <a href="#a88f72fa352303454295616213fc10c2d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a01f67ad787fdf9db41cf6de00b8f7c25">operator+=</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;b)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Make <img class="formulaInl" alt="$ this = this \oplus b $" src="form_58.png"/> (<em>b</em> can be "this" without problems)  <a href="#a01f67ad787fdf9db41cf6de00b8f7c25"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a98f83d65d659a40fddff750983e5ed22">inverseComposeFrom</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;A, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;B)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes <img class="formulaInl" alt="$ this = A \ominus B $" src="form_56.png"/> this method is slightly more efficient than "this= A - B;" since it avoids the temporary object.  <a href="#a98f83d65d659a40fddff750983e5ed22"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aa96efca4ba4952c71a4eb8cf07f6ad20">operator-</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;b) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute <img class="formulaInl" alt="$ RET = this \oplus b $" src="form_57.png"/>.  <a href="#aa96efca4ba4952c71a4eb8cf07f6ad20"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ae4a77db2b922c9960c42cec8c7a993db">inverse</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert this pose into its inverse, saving the result in itself.  <a href="#ae4a77db2b922c9960c42cec8c7a993db"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a9739a039b36061413cdb85bbb41491bb">changeCoordinatesReference</a> (const <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">makes: this = p (+) this  <a href="#a9739a039b36061413cdb85bbb41491bb"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Access and modify contents</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a31dffe4a53feaebcc214e004f6d68dd4">addComponents</a> (const <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">Scalar sum of all 6 components: This is diferent from poses composition, which is implemented as "+" operators.  <a href="#a31dffe4a53feaebcc214e004f6d68dd4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a45ce0da437e2706ae7729d3107701ad4">normalizeAngles</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Rebuild the internal matrix &amp; update the yaw/pitch/roll angles within the ]-PI,PI] range (Must be called after using addComponents)  <a href="#a45ce0da437e2706ae7729d3107701ad4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a96b05d25ddc61d9c644f0f8352840dd6">operator*=</a> (const double s)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Scalar multiplication of x,y,z,yaw,pitch &amp; roll (angles will be wrapped to the ]-pi,pi] interval).  <a href="#a96b05d25ddc61d9c644f0f8352840dd6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aa1559dfb9d3ee88046933d1bc21bab98">setFromValues</a> (const double x0, const double y0, const double z0, const double yaw=0, const double pitch=0, const double roll=0)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the pose from a 3D position (meters) and yaw/pitch/roll angles (radians) - This method recomputes the internal rotation matrix.  <a href="#aa1559dfb9d3ee88046933d1bc21bab98"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename VECTORLIKE &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a349849154d1add656c936ad4323f28dd">setFromXYZQ</a> (const VECTORLIKE &amp;v, const size_t index_offset=0)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the pose from a 3D position (meters) and a quaternion, stored as [x y z qr qx qy qz] in a 7-element vector.  <a href="#a349849154d1add656c936ad4323f28dd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#acdd487677f00ab2378e3fa27d08ff651">setYawPitchRoll</a> (const double yaw_, const double pitch_, const double roll_)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the 3 angles of the 3D pose (in radians) - This method recomputes the internal rotation coordinates matrix.  <a href="#acdd487677f00ab2378e3fa27d08ff651"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class ARRAYORVECTOR &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a9c75a2bf26cc7ef56931497c900f8ab1">setFrom12Vector</a> (const ARRAYORVECTOR &amp;vec12)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set pose from an array with these 12 elements: [r11 r21 r31 r12 r22 r32 r13 r23 r33 tx ty tz] where r{ij} are the entries of the 3x3 rotation matrix and t{x,y,z} are the 3D translation of the pose.  <a href="#a9c75a2bf26cc7ef56931497c900f8ab1"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class ARRAYORVECTOR &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a5d3d820e9f85d64902c9d24e6bf3cff1">getAs12Vector</a> (ARRAYORVECTOR &amp;vec12) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the pose representation as an array with these 12 elements: [r11 r21 r31 r12 r22 r32 r13 r23 r33 tx ty tz] where r{ij} are the entries of the 3x3 rotation matrix and t{x,y,z} are the 3D translation of the pose.  <a href="#a5d3d820e9f85d64902c9d24e6bf3cff1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a2ff9b0a0edc5cf03fb51fffa451d4c2f">getYawPitchRoll</a> (double &amp;yaw, double &amp;pitch, double &amp;roll) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the three angles (yaw, pitch, roll), in radians, from the rotation matrix.  <a href="#a2ff9b0a0edc5cf03fb51fffa451d4c2f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ae6df3cca6719010c12d5d70f7059cb3f">yaw</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the YAW angle (in radians)  <a href="#ae6df3cca6719010c12d5d70f7059cb3f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#abed455c10a98c4b7463e49ca73dd1ac1">pitch</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the PITCH angle (in radians)  <a href="#abed455c10a98c4b7463e49ca73dd1ac1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a47c00788772e211ca9efa4a59153b19b">roll</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the ROLL angle (in radians)  <a href="#a47c00788772e211ca9efa4a59153b19b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ad4bdfa9e1f570bf922aa0a4216d3cff4">getAsVector</a> (<a class="el" href="namespacemrpt.html#a4a6aab2c98368ca6b554c04f8fe84cfb">vector_double</a> &amp;v) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a 1x6 vector with [x y z yaw pitch roll].  <a href="#ad4bdfa9e1f570bf922aa0a4216d3cff4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a31e4434ffbcf84c2675abcc131a51abf">getAsQuaternion</a> (<a class="el" href="namespacemrpt_1_1math.html#ad0af3f20fa3e963153e6135431d597e3">mrpt::math::CQuaternionDouble</a> &amp;q, <a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 4, 3 &gt; *out_dq_dr=NULL) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the quaternion associated to the rotation of this object (NOTE: XYZ translation is ignored) </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ \mathbf{q} = \left( \begin{array}{c} \cos (\phi /2) \cos (\theta /2) \cos (\psi /2) + \sin (\phi /2) \sin (\theta /2) \sin (\psi /2) \\ \sin (\phi /2) \cos (\theta /2) \cos (\psi /2) - \cos (\phi /2) \sin (\theta /2) \sin (\psi /2) \\ \cos (\phi /2) \sin (\theta /2) \cos (\psi /2) + \sin (\phi /2) \cos (\theta /2) \sin (\psi /2) \\ \cos (\phi /2) \cos (\theta /2) \sin (\psi /2) - \sin (\phi /2) \sin (\theta /2) \cos (\psi /2) \\ \end{array}\right) \]" src="form_24.png"/>
</p>
<p> With : <img class="formulaInl" alt="$ \phi = roll $" src="form_25.png"/>, <img class="formulaInl" alt="$ \theta = pitch $" src="form_26.png"/> and <img class="formulaInl" alt="$ \psi = yaw $" src="form_27.png"/>.  <a href="#a31e4434ffbcf84c2675abcc131a51abf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const double &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aa7783b4cf19e6c2f3a653a07159784e8">operator[]</a> (unsigned int i) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#afe62a83323312708b9820a56d940b8d2">asString</a> (<a class="el" href="classstd_1_1string.html">std::string</a> &amp;s) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a human-readable textual representation of the object (eg: "[x y z yaw pitch roll]", angles in degrees.)  <a href="#afe62a83323312708b9820a56d940b8d2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1string.html">std::string</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ab1f1e0b056ccc73e7746b65dab025a89">asString</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aaf6a240fec5da07b3eb8b6c5e45e1f3d">fromString</a> (const <a class="el" href="classstd_1_1string.html">std::string</a> &amp;s)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the current object value from a string generated by 'asString' (eg: "[x y z yaw pitch roll]", angles in deg.  <a href="#aaf6a240fec5da07b3eb8b6c5e45e1f3d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a6cd41bc62f7aaa11d969abe179a79599">isHorizontal</a> (const double tolerance=0) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if the 6D pose represents a Z axis almost exactly vertical (upwards or downwards), with a given tolerance (if set to 0 exact horizontality is tested).  <a href="#a6cd41bc62f7aaa11d969abe179a79599"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a2d7222d2e12cbcafc627aeeecd86e595">distanceEuclidean6D</a> (const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> &amp;o) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The euclidean distance between two poses taken as two 6-length vectors (angles in radians).  <a href="#a2d7222d2e12cbcafc627aeeecd86e595"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a81952d3f7366165f230f7daf1320150b">is_3D</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ac7cd59fb4a79b6e8a0096a46475d2e06">is_PDF</a> ()</td></tr>
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1math_1_1_c_array_double.html">CArrayDouble</a>&lt; 3 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ac30f085bf7693a5703af39ff3a28d4e8">m_coords</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The translation vector [x,y,z].  <a href="#ac30f085bf7693a5703af39ff3a28d4e8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">CMatrixDouble33</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a64f8c16d8bc0eb236f375b1be9b8dfb5">m_ROT</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The 3x3 rotation matrix.  <a href="#a64f8c16d8bc0eb236f375b1be9b8dfb5"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const <br class="typebreak"/>
<a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_object.html#acb51e4dd811d62c2696aee449d0a4715">classCObject</a></td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a3e750e144af17382e32e905f08a610d6">rebuildRotationMatrix</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Rebuild the homog matrix from the angles.  <a href="#a3e750e144af17382e32e905f08a610d6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ab8e1ad56668e9dff5a22185c7bc5adc5">updateYawPitchRoll</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates Yaw/pitch/roll members from the m_ROT.  <a href="#ab8e1ad56668e9dff5a22185c7bc5adc5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html#a0b6b801e67bca3d8e0d355e7035f8013">writeToStream</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;out, int *getVersion) const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Introduces a pure virtual method responsible for writing to a <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">CStream</a>.  <a href="#a0b6b801e67bca3d8e0d355e7035f8013"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html#a73ba83035a64939cdc3aa1c0dfed23ec">readFromStream</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;in, int version)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Introduces a pure virtual method responsible for loading from a <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">CStream</a> This can not be used directly be users, instead use "stream &gt;&gt; object;" for reading it from a stream or "stream &gt;&gt; object_ptr;" if the class is unknown apriori.  <a href="#a73ba83035a64939cdc3aa1c0dfed23ec"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a9dae99aa623dc99e280db22f5633bb17">m_ypr_uptodate</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether yaw/pitch/roll members are up-to-date since the last rotation matrix update.  <a href="#a9dae99aa623dc99e280db22f5633bb17"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a1f6071c84070cbcb8864616b945566fc">m_yaw</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a95ba8a35561cdd805550eae7b22f5b7e">m_pitch</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ade0203b8613ab04aac90ddd0555e6221">m_roll</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">These variables are updated every time that the object rotation matrix is modified (construction, loading from values, pose composition, etc )  <a href="#ade0203b8613ab04aac90ddd0555e6221"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
RTTI stuff</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structmrpt_1_1poses_1_1_c_pose3_d_ptr.html">CPose3DPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ae5cd379b52adb73ced744a4f8ef8f01f">SmartPtr</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structmrpt_1_1utils_1_1_c_l_a_s_s_i_n_i_t.html">mrpt::utils::CLASSINIT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a1810aef1121e739d1052f826431200f9">_init_CPose3D</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aee90ab60a5d4162127a48f27f9b0e67f">classCPose3D</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const <br class="typebreak"/>
<a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a755ba67cfa7b460ff7dd435a0d5eb2c9">classinfo</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const <br class="typebreak"/>
<a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#acffebab9e86e5c995e5a3ec86f7ddcbd">_GetBaseClass</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual const <br class="typebreak"/>
<a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a2571c700285f17e31ede3490586eed62">GetRuntimeClass</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns information about the class of an object in runtime.  <a href="#a2571c700285f17e31ede3490586eed62"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classmrpt_1_1utils_1_1_c_object.html">mrpt::utils::CObject</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ad10511d0f2da9bd690a92bf8b80bffaa">duplicate</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a copy of the object, indepently of its class.  <a href="#ad10511d0f2da9bd690a92bf8b80bffaa"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmrpt_1_1utils_1_1_c_object.html">mrpt::utils::CObject</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a96a49b5b412f7b1597631b540266464c">CreateObject</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structmrpt_1_1poses_1_1_c_pose3_d_ptr.html">CPose3DPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a87aba36281884724948222cb0cafddf0">Create</a> ()</td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Lie Algebra methods</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aaa3c171a7d2314b99fef5fa04027a974">ln</a> (<a class="el" href="classmrpt_1_1math_1_1_c_array_double.html">mrpt::math::CArrayDouble</a>&lt; 6 &gt; &amp;out_ln) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Take the logarithm of the 3x4 matrix defined by this pose, generating the corresponding vector in the SE(3) Lie Algebra.  <a href="#aaa3c171a7d2314b99fef5fa04027a974"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1math_1_1_c_array_double.html">mrpt::math::CArrayDouble</a>&lt; 6 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a11bb54f0ca1ccbdd6a8cd74d0ed223bc">ln</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a9f9835c3e8035ff2eb7cb28a0890c1c3">ln_jacob</a> (<a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 6, 12 &gt; &amp;J) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Jacobian of the logarithm of the 3x4 matrix defined by this pose.  <a href="#a9f9835c3e8035ff2eb7cb28a0890c1c3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1math_1_1_c_array_double.html">CArrayDouble</a>&lt; 3 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#af9cc8e84a1f1d4b66c180c20e728e19d">ln_rotation</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Take the logarithm of the 3x3 rotation matrix, generating the corresponding vector in the Lie Algebra.  <a href="#af9cc8e84a1f1d4b66c180c20e728e19d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a5a428183c43efbd6d11fdf1125900eb9">exp</a> (const <a class="el" href="classmrpt_1_1math_1_1_c_array_numeric.html">mrpt::math::CArrayNumeric</a>&lt; double, 6 &gt; &amp;vect)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Exponentiate a Vector in the SE(3) Lie Algebra to generate a new <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html" title="A class used to store a 3D pose (a 3D translation + a rotation in 3D).">CPose3D</a> (static method).  <a href="#a5a428183c43efbd6d11fdf1125900eb9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">CMatrixDouble33</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aebea2037150f53a2047c34cbca87a075">exp_rotation</a> (const <a class="el" href="classmrpt_1_1math_1_1_c_array_numeric.html">mrpt::math::CArrayNumeric</a>&lt; double, 3 &gt; &amp;vect)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Exponentiate a vector in the Lie algebra to generate a new SO(3) (a 3x3 rotation matrix).  <a href="#aebea2037150f53a2047c34cbca87a075"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#adf040f9a7647f846a346694d67e51158">ln_rot_jacob</a> (const <a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">CMatrixDouble33</a> &amp;R, <a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">CMatrixFixedNumeric</a>&lt; double, 3, 9 &gt; &amp;M)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Static function to compute the Jacobian of the SO(3) Logarithm function, evaluated at a given 3x3 rotation matrix R.  <a href="#adf040f9a7647f846a346694d67e51158"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
STL-like methods and typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ab33765aadfb6c5430f79797981818f17a0778fd43755c7c4b0dcbfdfdbae70c64">static_size</a> =  6
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aab4e20e77a678d2c1052b6bd247d1f15">value_type</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The type of the elements.  <a href="#aab4e20e77a678d2c1052b6bd247d1f15"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef double &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aa3444675d49735770c93fec4e629553a">reference</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef const double &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a85a132c3e8cc81c4278b0f2c81d42f45">const_reference</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a06e2fd1cec22470a92c6ac05f30bb081">size_type</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef std::ptrdiff_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a3bdad630aa1cb766cff54a03a2e836d9">difference_type</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a06e2fd1cec22470a92c6ac05f30bb081">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a3681727a91ff321244de2f0f48fdddb4">size</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a0f0b3e4038e5812e30e9da43e48c5c26">empty</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a06e2fd1cec22470a92c6ac05f30bb081">size_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ae0374ea77ba01589d29cd0f1c8218d4c">max_size</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a8f52c8785c46382346e516b6934eb949">resize</a> (const size_t n)</td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
RTTI stuff</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const <br class="typebreak"/>
<a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html#a28ec2a03d277a8469b8ecfc81892afdf">classCSerializable</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::utils::CStream</a></td></tr>
</table>
<hr/><h2>Member Typedef Documentation</h2>
<a class="anchor" id="a85a132c3e8cc81c4278b0f2c81d42f45"></a><!-- doxytag: member="mrpt::poses::CPose3D::const_reference" ref="a85a132c3e8cc81c4278b0f2c81d42f45" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef const double&amp; <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a85a132c3e8cc81c4278b0f2c81d42f45">mrpt::poses::CPose3D::const_reference</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00479">479</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a3bdad630aa1cb766cff54a03a2e836d9"></a><!-- doxytag: member="mrpt::poses::CPose3D::difference_type" ref="a3bdad630aa1cb766cff54a03a2e836d9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef std::ptrdiff_t <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a3bdad630aa1cb766cff54a03a2e836d9">mrpt::poses::CPose3D::difference_type</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00481">481</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa3444675d49735770c93fec4e629553a"></a><!-- doxytag: member="mrpt::poses::CPose3D::reference" ref="aa3444675d49735770c93fec4e629553a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef double&amp; <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aa3444675d49735770c93fec4e629553a">mrpt::poses::CPose3D::reference</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00478">478</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a06e2fd1cec22470a92c6ac05f30bb081"></a><!-- doxytag: member="mrpt::poses::CPose3D::size_type" ref="a06e2fd1cec22470a92c6ac05f30bb081" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef std::size_t <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a06e2fd1cec22470a92c6ac05f30bb081">mrpt::poses::CPose3D::size_type</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

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

</div>
</div>
<a class="anchor" id="ae5cd379b52adb73ced744a4f8ef8f01f"></a><!-- doxytag: member="mrpt::poses::CPose3D::SmartPtr" ref="ae5cd379b52adb73ced744a4f8ef8f01f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="structmrpt_1_1poses_1_1_c_pose3_d_ptr.html">CPose3DPtr</a> <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ae5cd379b52adb73ced744a4f8ef8f01f">mrpt::poses::CPose3D::SmartPtr</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>A typedef for the associated smart pointer </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00075">75</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a1c4d407c9e8c212bdcc073ea35a54346"></a><!-- doxytag: member="mrpt::poses::CPose3D::type_value" ref="a1c4d407c9e8c212bdcc073ea35a54346" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a1c4d407c9e8c212bdcc073ea35a54346">mrpt::poses::CPose3D::type_value</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Used to emulate <a class="el" href="classmrpt_1_1poses_1_1_c_pose_p_d_f.html" title="Declares a class that represents a probability density function (pdf) of a 2D pose (x...">CPosePDF</a> types, for example, in <a class="el" href="classmrpt_1_1graphs_1_1_c_network_of_poses.html" title="A directed graph of pose constraints, with edges being the relative pose between pairs of nodes inden...">mrpt::graphs::CNetworkOfPoses</a>. </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00465">465</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="aab4e20e77a678d2c1052b6bd247d1f15"></a><!-- doxytag: member="mrpt::poses::CPose3D::value_type" ref="aab4e20e77a678d2c1052b6bd247d1f15" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef double <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aab4e20e77a678d2c1052b6bd247d1f15">mrpt::poses::CPose3D::value_type</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The type of the elements. </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00477">477</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="a394e2a642190e43d1eb268e2e70e53f2"></a><!-- doxytag: member="mrpt::poses::CPose3D::@23" ref="a394e2a642190e43d1eb268e2e70e53f2" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="a394e2a642190e43d1eb268e2e70e53f2a5012cf5fc292528fbc0e69005acf5575"></a><!-- doxytag: member="is_3D_val" ref="a394e2a642190e43d1eb268e2e70e53f2a5012cf5fc292528fbc0e69005acf5575" args="" -->is_3D_val</em>&nbsp;</td><td>
</td></tr>
</table>
</dd>
</dl>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00466">466</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="ac66027644c05d47595076f339ea1f2f4"></a><!-- doxytag: member="mrpt::poses::CPose3D::@24" ref="ac66027644c05d47595076f339ea1f2f4" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="ac66027644c05d47595076f339ea1f2f4a8fff27ddcd69881cd9bceb069d13f267"></a><!-- doxytag: member="rotation_dimensions" ref="ac66027644c05d47595076f339ea1f2f4a8fff27ddcd69881cd9bceb069d13f267" args="" -->rotation_dimensions</em>&nbsp;</td><td>
</td></tr>
</table>
</dd>
</dl>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00468">468</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a67b629d161f9a8d195e296d80919658e"></a><!-- doxytag: member="mrpt::poses::CPose3D::@25" ref="a67b629d161f9a8d195e296d80919658e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="a67b629d161f9a8d195e296d80919658ea871ec113d2723d04b7bb906c3ddb8ce5"></a><!-- doxytag: member="is_PDF_val" ref="a67b629d161f9a8d195e296d80919658ea871ec113d2723d04b7bb906c3ddb8ce5" args="" -->is_PDF_val</em>&nbsp;</td><td>
</td></tr>
</table>
</dd>
</dl>

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

</div>
</div>
<a class="anchor" id="ab33765aadfb6c5430f79797981818f17"></a><!-- doxytag: member="mrpt::poses::CPose3D::@26" ref="ab33765aadfb6c5430f79797981818f17" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="ab33765aadfb6c5430f79797981818f17a0778fd43755c7c4b0dcbfdfdbae70c64"></a><!-- doxytag: member="static_size" ref="ab33765aadfb6c5430f79797981818f17a0778fd43755c7c4b0dcbfdfdbae70c64" args="" -->static_size</em>&nbsp;</td><td>
</td></tr>
</table>
</dd>
</dl>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00485">485</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="adf32c0aaa8c28156bba2d5a68c6f61a0"></a><!-- doxytag: member="mrpt::poses::CPose3D::CPose3D" ref="adf32c0aaa8c28156bba2d5a68c6f61a0" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::poses::CPose3D::CPose3D </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Default constructor, with all the coordinates set to zero. </p>

</div>
</div>
<a class="anchor" id="a5509e8a071ee1dd95c1aec0918c037af"></a><!-- doxytag: member="mrpt::poses::CPose3D::CPose3D" ref="a5509e8a071ee1dd95c1aec0918c037af" args="(const double x, const double y, const double z, const double yaw=0, const double pitch=0, const double roll=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::poses::CPose3D::CPose3D </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>yaw</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>pitch</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>roll</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor with initilization of the pose; (remember that angles are always given in radians!) </p>

</div>
</div>
<a class="anchor" id="a41ec052cb073bb206be09b58d60ac50e"></a><!-- doxytag: member="mrpt::poses::CPose3D::CPose3D" ref="a41ec052cb073bb206be09b58d60ac50e" args="(const math::CMatrixDouble &amp;m)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::poses::CPose3D::CPose3D </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacemrpt_1_1math.html#a3814c2b868f059d6a7ab0d8ecd2311d6">math::CMatrixDouble</a> &amp;&#160;</td>
          <td class="paramname"><em>m</em></td><td>)</td>
          <td><code> [explicit]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor from a 4x4 homogeneous matrix - the passed matrix can be actually of any size larger than or equal 3x4, since only those first values are used (the last row of a homogeneous 4x4 matrix are always fixed). </p>

</div>
</div>
<a class="anchor" id="a1fc960bd3f5c1af797a2e803a966046e"></a><!-- doxytag: member="mrpt::poses::CPose3D::CPose3D" ref="a1fc960bd3f5c1af797a2e803a966046e" args="(const math::CMatrixDouble44 &amp;m)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::poses::CPose3D::CPose3D </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacemrpt_1_1math.html#a25a1ba39a478a66d24a4ecfb9c585c79">math::CMatrixDouble44</a> &amp;&#160;</td>
          <td class="paramname"><em>m</em></td><td>)</td>
          <td><code> [explicit]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor from a 4x4 homogeneous matrix: </p>

</div>
</div>
<a class="anchor" id="a5ee4cb6013f742cdc2bf7f71ee43e2b2"></a><!-- doxytag: member="mrpt::poses::CPose3D::CPose3D" ref="a5ee4cb6013f742cdc2bf7f71ee43e2b2" args="(const MATRIX33 &amp;rot, const VECTOR3 &amp;xyz)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MATRIX33 , class VECTOR3 &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">mrpt::poses::CPose3D::CPose3D </td>
          <td>(</td>
          <td class="paramtype">const MATRIX33 &amp;&#160;</td>
          <td class="paramname"><em>rot</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const VECTOR3 &amp;&#160;</td>
          <td class="paramname"><em>xyz</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor from a 3x3 rotation matrix and a the translation given as a 3-vector, a 3-array, a <a class="el" href="classmrpt_1_1poses_1_1_c_point3_d.html" title="A class used to store a 3D point.">CPoint3D</a> or a TPoint3D. </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00109">109</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

<p>References <a class="el" href="mrpt__macros_8h_source.html#l00285">ASSERT_EQUAL_</a>, and <a class="el" href="bits_8h_source.html#l00065">mrpt::math::size()</a>.</p>

</div>
</div>
<a class="anchor" id="a45334da03ae59d776f5b9ebde4b49b3f"></a><!-- doxytag: member="mrpt::poses::CPose3D::CPose3D" ref="a45334da03ae59d776f5b9ebde4b49b3f" args="(const CMatrixDouble33 &amp;rot, const CArrayDouble&lt; 3 &gt; &amp;xyz)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::poses::CPose3D::CPose3D </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">CMatrixDouble33</a> &amp;&#160;</td>
          <td class="paramname"><em>rot</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1math_1_1_c_array_double.html">CArrayDouble</a>&lt; 3 &gt; &amp;&#160;</td>
          <td class="paramname"><em>xyz</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="_c_pose3_d_8h_source.html#l00118">118</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a0f93ba8b66bb4c7a601588f1150a0f9e"></a><!-- doxytag: member="mrpt::poses::CPose3D::CPose3D" ref="a0f93ba8b66bb4c7a601588f1150a0f9e" args="(const CPose2D &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::poses::CPose3D::CPose3D </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"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor from a <a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html" title="A class used to store a 2D pose.">CPose2D</a> object. </p>

</div>
</div>
<a class="anchor" id="adbea91121e81471ed3a3e5ca945cc26d"></a><!-- doxytag: member="mrpt::poses::CPose3D::CPose3D" ref="adbea91121e81471ed3a3e5ca945cc26d" args="(const CPoint3D &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::poses::CPose3D::CPose3D </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_point3_d.html">CPoint3D</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor from a <a class="el" href="classmrpt_1_1poses_1_1_c_point3_d.html" title="A class used to store a 3D point.">CPoint3D</a> object. </p>

</div>
</div>
<a class="anchor" id="a219a871719d3b0abd6ba79f2fb67137b"></a><!-- doxytag: member="mrpt::poses::CPose3D::CPose3D" ref="a219a871719d3b0abd6ba79f2fb67137b" args="(const mrpt::math::TPose3D &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::poses::CPose3D::CPose3D </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"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor from lightweight object. </p>

</div>
</div>
<a class="anchor" id="a9bdf854450473a40fa787758ebf88eb5"></a><!-- doxytag: member="mrpt::poses::CPose3D::CPose3D" ref="a9bdf854450473a40fa787758ebf88eb5" args="(const mrpt::math::CQuaternionDouble &amp;q, const double x, const double y, const double z)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::poses::CPose3D::CPose3D </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacemrpt_1_1math.html#ad0af3f20fa3e963153e6135431d597e3">mrpt::math::CQuaternionDouble</a> &amp;&#160;</td>
          <td class="paramname"><em>q</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor from a quaternion (which only represents the 3D rotation part) and a 3D displacement. </p>

</div>
</div>
<a class="anchor" id="a02708d7a2aa08b7d1a9749ea7f4e244c"></a><!-- doxytag: member="mrpt::poses::CPose3D::CPose3D" ref="a02708d7a2aa08b7d1a9749ea7f4e244c" args="(const CPose3DQuat &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::poses::CPose3D::CPose3D </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"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor from a <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_quat.html" title="A class used to store a 3D pose as a translation (x,y,z) and a quaternion (qr,qx,qy,qz).">CPose3DQuat</a>. </p>

</div>
</div>
<a class="anchor" id="af245a30779e1d574021933a3c9d5d6ce"></a><!-- doxytag: member="mrpt::poses::CPose3D::CPose3D" ref="af245a30779e1d574021933a3c9d5d6ce" args="(TConstructorFlags_Poses constructor_dummy_param)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::poses::CPose3D::CPose3D </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1poses.html#ac46e1fb95d438a441b6f396d9c79f430">TConstructorFlags_Poses</a>&#160;</td>
          <td class="paramname"><em>constructor_dummy_param</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Fast constructor that leaves all the data uninitialized - call with UNINITIALIZED_POSE as argument. </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00140">140</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a59214f588539f5b584b2ba4e02d13c10"></a><!-- doxytag: member="mrpt::poses::CPose3D::CPose3D" ref="a59214f588539f5b584b2ba4e02d13c10" args="(const CArrayDouble&lt; 12 &gt; &amp;vec12)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::poses::CPose3D::CPose3D </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1math_1_1_c_array_double.html">CArrayDouble</a>&lt; 12 &gt; &amp;&#160;</td>
          <td class="paramname"><em>vec12</em></td><td>)</td>
          <td><code> [inline, explicit]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor from an array with these 12 elements: [r11 r21 r31 r12 r22 r32 r13 r23 r33 tx ty tz] where r{ij} are the entries of the 3x3 rotation matrix and t{x,y,z} are the 3D translation of the pose. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a9c75a2bf26cc7ef56931497c900f8ab1" title="Set pose from an array with these 12 elements: [r11 r21 r31 r12 r22 r32 r13 r23 r33 tx ty tz] where r...">setFrom12Vector</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a5d3d820e9f85d64902c9d24e6bf3cff1" title="Get the pose representation as an array with these 12 elements: [r11 r21 r31 r12 r22 r32 r13 r23 r33 ...">getAs12Vector</a> </dd></dl>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00146">146</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="acffebab9e86e5c995e5a3ec86f7ddcbd"></a><!-- doxytag: member="mrpt::poses::CPose3D::_GetBaseClass" ref="acffebab9e86e5c995e5a3ec86f7ddcbd" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>* mrpt::poses::CPose3D::_GetBaseClass </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [static, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reimplemented from <a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html#a471a2d4e8bf14cdc749d43ffb8066a12">mrpt::utils::CSerializable</a>.</p>

</div>
</div>
<a class="anchor" id="a31dffe4a53feaebcc214e004f6d68dd4"></a><!-- doxytag: member="mrpt::poses::CPose3D::addComponents" ref="a31dffe4a53feaebcc214e004f6d68dd4" args="(const CPose3D &amp;p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::addComponents </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><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Scalar sum of all 6 components: This is diferent from poses composition, which is implemented as "+" operators. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a45ce0da437e2706ae7729d3107701ad4" title="Rebuild the internal matrix &amp; update the yaw/pitch/roll angles within the ]-PI,PI] range (Must be cal...">normalizeAngles</a> </dd></dl>

</div>
</div>
<a class="anchor" id="afe62a83323312708b9820a56d940b8d2"></a><!-- doxytag: member="mrpt::poses::CPose3D::asString" ref="afe62a83323312708b9820a56d940b8d2" args="(std::string &amp;s) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::asString </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classstd_1_1string.html">std::string</a> &amp;&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns a human-readable textual representation of the object (eg: "[x y z yaw pitch roll]", angles in degrees.) </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aaf6a240fec5da07b3eb8b6c5e45e1f3d" title="Set the current object value from a string generated by &#39;asString&#39; (eg: &quot;[x y z yaw pitch roll]&quot;...">fromString</a> </dd></dl>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00403">403</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

<p>References <a class="el" href="namespacemrpt.html#a3a27af794b658df5491e2b7678f8ccb8">mrpt::format()</a>, and <a class="el" href="bits_8h_source.html#l00092">mrpt::utils::RAD2DEG()</a>.</p>

</div>
</div>
<a class="anchor" id="ab1f1e0b056ccc73e7746b65dab025a89"></a><!-- doxytag: member="mrpt::poses::CPose3D::asString" ref="ab1f1e0b056ccc73e7746b65dab025a89" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1string.html">std::string</a> mrpt::poses::CPose3D::asString </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00404">404</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

<p>References <a class="el" href="_c_pose3_d_8h_source.html#l00404">asString()</a>.</p>

<p>Referenced by <a class="el" href="_c_pose3_d_8h_source.html#l00404">asString()</a>.</p>

</div>
</div>
<a class="anchor" id="a9739a039b36061413cdb85bbb41491bb"></a><!-- doxytag: member="mrpt::poses::CPose3D::changeCoordinatesReference" ref="a9739a039b36061413cdb85bbb41491bb" args="(const CPose3D &amp;p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::changeCoordinatesReference </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><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>makes: this = p (+) this </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00268">268</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a9ef7857a0b36059c078e195a0a65ac00"></a><!-- doxytag: member="mrpt::poses::CPose3D::clone" ref="a9ef7857a0b36059c078e195a0a65ac00" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_object.html">CObject</a>* mrpt::utils::CObject::clone </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Cloning interface for smart pointers. </p>

<p>Reimplemented in <a class="el" href="classmrpt_1_1opengl_1_1_c_renderizable.html#acb2597d6d93b406501d9f3530eb56adf">mrpt::opengl::CRenderizable</a>, and <a class="el" href="classmrpt_1_1opengl_1_1_c_renderizable_display_list.html#ac164cb1d2cf682778ce52967cbd56469">mrpt::opengl::CRenderizableDisplayList</a>.</p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00154">154</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="a88f72fa352303454295616213fc10c2d"></a><!-- doxytag: member="mrpt::poses::CPose3D::composeFrom" ref="a88f72fa352303454295616213fc10c2d" args="(const CPose3D &amp;A, const CPose3D &amp;B)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::composeFrom </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>A</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>B</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Makes "this = A (+) B"; this method is slightly more efficient than "this= A + B;" since it avoids the temporary object. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>A or B can be "this" without problems. </dd></dl>

<p>Referenced by <a class="el" href="_c_pose3_d_8h_source.html#l00181">operator+()</a>, <a class="el" href="_p_f__implementations_8h_source.html#l00427">mrpt::slam::PF_implementation::PF_SLAM_particlesEvaluator_AuxPFStandard()</a>, and <a class="el" href="_p_f__implementations_8h_source.html#l00859">mrpt::slam::PF_implementation::PF_SLAM_aux_perform_one_rejection_sampling_step()</a>.</p>

</div>
</div>
<a class="anchor" id="aaabe44aa147e5391009051b49a6d524e"></a><!-- doxytag: member="mrpt::poses::CPose3D::composePoint" ref="aaabe44aa147e5391009051b49a6d524e" args="(double lx, double ly, double lz, double &amp;gx, double &amp;gy, double &amp;gz, mrpt::math::CMatrixFixedNumeric&lt; double, 3, 3 &gt; *out_jacobian_df_dpoint=NULL, mrpt::math::CMatrixFixedNumeric&lt; double, 3, 6 &gt; *out_jacobian_df_dpose=NULL, mrpt::math::CMatrixFixedNumeric&lt; double, 3, 6 &gt; *out_jacobian_df_dse3=NULL, bool use_small_rot_approx=false) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::composePoint </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>lx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>ly</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>lz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>gx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>gy</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>gz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 3, 3 &gt; *&#160;</td>
          <td class="paramname"><em>out_jacobian_df_dpoint</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 3, 6 &gt; *&#160;</td>
          <td class="paramname"><em>out_jacobian_df_dpose</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 3, 6 &gt; *&#160;</td>
          <td class="paramname"><em>out_jacobian_df_dse3</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>use_small_rot_approx</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>An alternative, slightly more efficient way of doing <img class="formulaInl" alt="$ G = P \oplus L $" src="form_55.png"/> with G and L being 3D points and P this 6D pose. </p>
<p>If pointers are provided, the corresponding Jacobians are returned. "out_jacobian_df_dse3" stands for the Jacobian with respect to the 6D locally Euclidean vector in the tangent space of SE(3). See <a href="http://www.mrpt.org/6D_poses:equivalences_compositions_and_uncertainty">this report</a> for mathematical details. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">If</td><td>set to true, the Jacobian "out_jacobian_df_dpose" uses a fastest linearized appoximation (valid only for small rotations!). </td></tr>
  </table>
  </dd>
</dl>

<p>Referenced by <a class="el" href="geometry_8h_source.html#l00295">mrpt::math::project3D()</a>, and <a class="el" href="pinhole_8h_source.html#l00072">mrpt::vision::pinhole::projectPoint_no_distortion()</a>.</p>

</div>
</div>
<a class="anchor" id="a979861f7272eaa41953403e39588fe9e"></a><!-- doxytag: member="mrpt::poses::CPose3D::composePoint" ref="a979861f7272eaa41953403e39588fe9e" args="(const TPoint3D local_point, TPoint3D &amp;global_point) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::composePoint </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a>&#160;</td>
          <td class="paramname"><em>local_point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a> &amp;&#160;</td>
          <td class="paramname"><em>global_point</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>An alternative, slightly more efficient way of doing <img class="formulaInl" alt="$ G = P \oplus L $" src="form_55.png"/> with G and L being 3D points and P this 6D pose. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>local_point is passed by value to allow global and local point to be the same variable </dd></dl>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00216">216</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.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="ab4cd48076205450895d0666c748bd983"></a><!-- doxytag: member="mrpt::poses::CPose3D::composePoint" ref="ab4cd48076205450895d0666c748bd983" args="(double lx, double ly, double lz, float &amp;gx, float &amp;gy, float &amp;gz) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::composePoint </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>lx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>ly</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>lz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>gx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>gy</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>gz</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>An alternative, slightly more efficient way of doing <img class="formulaInl" alt="$ G = P \oplus L $" src="form_55.png"/> with G and L being 3D points and P this 6D pose. </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00221">221</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a87aba36281884724948222cb0cafddf0"></a><!-- doxytag: member="mrpt::poses::CPose3D::Create" ref="a87aba36281884724948222cb0cafddf0" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="structmrpt_1_1poses_1_1_c_pose3_d_ptr.html">CPose3DPtr</a> mrpt::poses::CPose3D::Create </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a96a49b5b412f7b1597631b540266464c"></a><!-- doxytag: member="mrpt::poses::CPose3D::CreateObject" ref="a96a49b5b412f7b1597631b540266464c" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="classmrpt_1_1utils_1_1_c_object.html">mrpt::utils::CObject</a>* mrpt::poses::CPose3D::CreateObject </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a2d7222d2e12cbcafc627aeeecd86e595"></a><!-- doxytag: member="mrpt::poses::CPose3D::distanceEuclidean6D" ref="a2d7222d2e12cbcafc627aeeecd86e595" args="(const CPose3D &amp;o) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double mrpt::poses::CPose3D::distanceEuclidean6D </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>o</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The euclidean distance between two poses taken as two 6-length vectors (angles in radians). </p>

</div>
</div>
<a class="anchor" id="ad10511d0f2da9bd690a92bf8b80bffaa"></a><!-- doxytag: member="mrpt::poses::CPose3D::duplicate" ref="ad10511d0f2da9bd690a92bf8b80bffaa" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classmrpt_1_1utils_1_1_c_object.html">mrpt::utils::CObject</a>* mrpt::poses::CPose3D::duplicate </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns a copy of the object, indepently of its class. </p>

<p>Implements <a class="el" href="classmrpt_1_1utils_1_1_c_object.html#aa1070e173c5f7e307b09c53f1fd256e2">mrpt::utils::CObject</a>.</p>

</div>
</div>
<a class="anchor" id="a534695890364f4b916bba07dad311bcf"></a><!-- doxytag: member="mrpt::poses::CPose3D::duplicateGetSmartPtr" ref="a534695890364f4b916bba07dad311bcf" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_object_ptr.html">mrpt::utils::CObjectPtr</a> mrpt::utils::CObject::duplicateGetSmartPtr </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer). </p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00151">151</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="a0f0b3e4038e5812e30e9da43e48c5c26"></a><!-- doxytag: member="mrpt::poses::CPose3D::empty" ref="a0f0b3e4038e5812e30e9da43e48c5c26" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool mrpt::poses::CPose3D::empty </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00487">487</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a5a428183c43efbd6d11fdf1125900eb9"></a><!-- doxytag: member="mrpt::poses::CPose3D::exp" ref="a5a428183c43efbd6d11fdf1125900eb9" args="(const mrpt::math::CArrayNumeric&lt; double, 6 &gt; &amp;vect)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> mrpt::poses::CPose3D::exp </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1math_1_1_c_array_numeric.html">mrpt::math::CArrayNumeric</a>&lt; double, 6 &gt; &amp;&#160;</td>
          <td class="paramname"><em>vect</em></td><td>)</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Exponentiate a Vector in the SE(3) Lie Algebra to generate a new <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html" title="A class used to store a 3D pose (a 3D translation + a rotation in 3D).">CPose3D</a> (static method). </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Method from TooN (C) Tom Drummond (GNU GPL) </dd></dl>

<p>Referenced by <a class="el" href="_s_e__traits_8h_source.html#l00056">mrpt::poses::SE_traits&lt; 3 &gt;::exp()</a>.</p>

</div>
</div>
<a class="anchor" id="aebea2037150f53a2047c34cbca87a075"></a><!-- doxytag: member="mrpt::poses::CPose3D::exp_rotation" ref="aebea2037150f53a2047c34cbca87a075" args="(const mrpt::math::CArrayNumeric&lt; double, 3 &gt; &amp;vect)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">CMatrixDouble33</a> mrpt::poses::CPose3D::exp_rotation </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1math_1_1_c_array_numeric.html">mrpt::math::CArrayNumeric</a>&lt; double, 3 &gt; &amp;&#160;</td>
          <td class="paramname"><em>vect</em></td><td>)</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Exponentiate a vector in the Lie algebra to generate a new SO(3) (a 3x3 rotation matrix). </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Method from TooN (C) Tom Drummond (GNU GPL) </dd></dl>

</div>
</div>
<a class="anchor" id="aaf6a240fec5da07b3eb8b6c5e45e1f3d"></a><!-- doxytag: member="mrpt::poses::CPose3D::fromString" ref="aaf6a240fec5da07b3eb8b6c5e45e1f3d" args="(const std::string &amp;s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::fromString </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1string.html">std::string</a> &amp;&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the current object value from a string generated by 'asString' (eg: "[x y z yaw pitch roll]", angles in deg. </p>
<p>) </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#afe62a83323312708b9820a56d940b8d2" title="Returns a human-readable textual representation of the object (eg: &quot;[x y z yaw pitch roll]&quot;...">asString</a> </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>On invalid format </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00410">410</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

<p>References <a class="el" href="mrpt__macros_8h_source.html#l00131">THROW_EXCEPTION</a>, <a class="el" href="mrpt__macros_8h_source.html#l00281">ASSERTMSG_</a>, <a class="el" href="bits_8h_source.html#l00065">mrpt::math::size()</a>, and <a class="el" href="bits_8h_source.html#l00086">mrpt::utils::DEG2RAD()</a>.</p>

</div>
</div>
<a class="anchor" id="a5d3d820e9f85d64902c9d24e6bf3cff1"></a><!-- doxytag: member="mrpt::poses::CPose3D::getAs12Vector" ref="a5d3d820e9f85d64902c9d24e6bf3cff1" args="(ARRAYORVECTOR &amp;vec12) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class ARRAYORVECTOR &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::getAs12Vector </td>
          <td>(</td>
          <td class="paramtype">ARRAYORVECTOR &amp;&#160;</td>
          <td class="paramname"><em>vec12</em></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the pose representation as an array with these 12 elements: [r11 r21 r31 r12 r22 r32 r13 r23 r33 tx ty tz] where r{ij} are the entries of the 3x3 rotation matrix and t{x,y,z} are the 3D translation of the pose. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a9c75a2bf26cc7ef56931497c900f8ab1" title="Set pose from an array with these 12 elements: [r11 r21 r31 r12 r22 r32 r13 r23 r33 tx ty tz] where r...">setFrom12Vector</a> </dd></dl>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00349">349</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a31e4434ffbcf84c2675abcc131a51abf"></a><!-- doxytag: member="mrpt::poses::CPose3D::getAsQuaternion" ref="a31e4434ffbcf84c2675abcc131a51abf" args="(mrpt::math::CQuaternionDouble &amp;q, mrpt::math::CMatrixFixedNumeric&lt; double, 4, 3 &gt; *out_dq_dr=NULL) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::getAsQuaternion </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1math.html#ad0af3f20fa3e963153e6135431d597e3">mrpt::math::CQuaternionDouble</a> &amp;&#160;</td>
          <td class="paramname"><em>q</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 4, 3 &gt; *&#160;</td>
          <td class="paramname"><em>out_dq_dr</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the quaternion associated to the rotation of this object (NOTE: XYZ translation is ignored) </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ \mathbf{q} = \left( \begin{array}{c} \cos (\phi /2) \cos (\theta /2) \cos (\psi /2) + \sin (\phi /2) \sin (\theta /2) \sin (\psi /2) \\ \sin (\phi /2) \cos (\theta /2) \cos (\psi /2) - \cos (\phi /2) \sin (\theta /2) \sin (\psi /2) \\ \cos (\phi /2) \sin (\theta /2) \cos (\psi /2) + \sin (\phi /2) \cos (\theta /2) \sin (\psi /2) \\ \cos (\phi /2) \cos (\theta /2) \sin (\psi /2) - \sin (\phi /2) \sin (\theta /2) \cos (\psi /2) \\ \end{array}\right) \]" src="form_24.png"/>
</p>
<p> With : <img class="formulaInl" alt="$ \phi = roll $" src="form_25.png"/>, <img class="formulaInl" alt="$ \theta = pitch $" src="form_26.png"/> and <img class="formulaInl" alt="$ \psi = yaw $" src="form_27.png"/>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">out_dq_dr</td><td>If provided, the 4x3 Jacobian of the transformation will be computed and stored here. It's the Jacobian of the transformation from (yaw pitch roll) to (qr qx qy qz). </td></tr>
  </table>
  </dd>
</dl>

<p>Referenced by <a class="el" href="jacobians_8h_source.html#l00056">mrpt::math::jacobians::jacob_quat_from_yawpitchroll()</a>.</p>

</div>
</div>
<a class="anchor" id="ad4bdfa9e1f570bf922aa0a4216d3cff4"></a><!-- doxytag: member="mrpt::poses::CPose3D::getAsVector" ref="ad4bdfa9e1f570bf922aa0a4216d3cff4" args="(vector_double &amp;v) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::getAsVector </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacemrpt.html#a4a6aab2c98368ca6b554c04f8fe84cfb">vector_double</a> &amp;&#160;</td>
          <td class="paramname"><em>v</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns a 1x6 vector with [x y z yaw pitch roll]. </p>

</div>
</div>
<a class="anchor" id="a2d9680cfd637c142dcd0d5523815254a"></a><!-- doxytag: member="mrpt::poses::CPose3D::getHomogeneousMatrix" ref="a2d9680cfd637c142dcd0d5523815254a" args="(CMatrixDouble44 &amp;out_HM) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::getHomogeneousMatrix </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1math.html#a25a1ba39a478a66d24a4ecfb9c585c79">CMatrixDouble44</a> &amp;&#160;</td>
          <td class="paramname"><em>out_HM</em></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (translation+orientation). </p>
<dl class="see"><dt><b>See also:</b></dt><dd>getInverseHomogeneousMatrix, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a67131b7bf5250250cf37ed1f8acdf73e" title="Get the 3x3 rotation matrix.">getRotationMatrix</a> </dd></dl>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00160">160</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa0f69bb9174e66f3196420e53b97fbed"></a><!-- doxytag: member="mrpt::poses::CPose3D::getHomogeneousMatrixVal" ref="aa0f69bb9174e66f3196420e53b97fbed" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacemrpt_1_1math.html#a25a1ba39a478a66d24a4ecfb9c585c79">CMatrixDouble44</a> mrpt::poses::CPose3D::getHomogeneousMatrixVal </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00167">167</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a6aeff154d8769aaa8ac951ba77c826f6"></a><!-- doxytag: member="mrpt::poses::CPose3D::getPoseMean" ref="a6aeff154d8769aaa8ac951ba77c826f6" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a1c4d407c9e8c212bdcc073ea35a54346">type_value</a>&amp; mrpt::poses::CPose3D::getPoseMean </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00472">472</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a06e76192ed6f9c6a50a38db01def382b"></a><!-- doxytag: member="mrpt::poses::CPose3D::getPoseMean" ref="a06e76192ed6f9c6a50a38db01def382b" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a1c4d407c9e8c212bdcc073ea35a54346">type_value</a>&amp; mrpt::poses::CPose3D::getPoseMean </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00473">473</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a67131b7bf5250250cf37ed1f8acdf73e"></a><!-- doxytag: member="mrpt::poses::CPose3D::getRotationMatrix" ref="a67131b7bf5250250cf37ed1f8acdf73e" args="(mrpt::math::CMatrixDouble33 &amp;ROT) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::getRotationMatrix </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">mrpt::math::CMatrixDouble33</a> &amp;&#160;</td>
          <td class="paramname"><em>ROT</em></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the 3x3 rotation matrix. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a2d9680cfd637c142dcd0d5523815254a" title="Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (t...">getHomogeneousMatrix</a> </dd></dl>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00170">170</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a007521f8a1d6ac7c2f72dd4b014c00fa"></a><!-- doxytag: member="mrpt::poses::CPose3D::getRotationMatrix" ref="a007521f8a1d6ac7c2f72dd4b014c00fa" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">mrpt::math::CMatrixDouble33</a>&amp; mrpt::poses::CPose3D::getRotationMatrix </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00172">172</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a2571c700285f17e31ede3490586eed62"></a><!-- doxytag: member="mrpt::poses::CPose3D::GetRuntimeClass" ref="a2571c700285f17e31ede3490586eed62" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>* mrpt::poses::CPose3D::GetRuntimeClass </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns information about the class of an object in runtime. </p>

<p>Reimplemented from <a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html#a6861b16159daafd1651d6e0d27f39c58">mrpt::utils::CSerializable</a>.</p>

</div>
</div>
<a class="anchor" id="a2ff9b0a0edc5cf03fb51fffa451d4c2f"></a><!-- doxytag: member="mrpt::poses::CPose3D::getYawPitchRoll" ref="a2ff9b0a0edc5cf03fb51fffa451d4c2f" args="(double &amp;yaw, double &amp;pitch, double &amp;roll) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::getYawPitchRoll </td>
          <td>(</td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>yaw</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>pitch</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>roll</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the three angles (yaw, pitch, roll), in radians, from the rotation matrix. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aa1559dfb9d3ee88046933d1bc21bab98" title="Set the pose from a 3D position (meters) and yaw/pitch/roll angles (radians) - This method recomputes...">setFromValues</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ae6df3cca6719010c12d5d70f7059cb3f" title="Get the YAW angle (in radians)">yaw</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#abed455c10a98c4b7463e49ca73dd1ac1" title="Get the PITCH angle (in radians)">pitch</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a47c00788772e211ca9efa4a59153b19b" title="Get the ROLL angle (in radians)">roll</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ae4a77db2b922c9960c42cec8c7a993db"></a><!-- doxytag: member="mrpt::poses::CPose3D::inverse" ref="ae4a77db2b922c9960c42cec8c7a993db" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::inverse </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert this pose into its inverse, saving the result in itself. </p>
<dl class="see"><dt><b>See also:</b></dt><dd>operator- </dd></dl>

</div>
</div>
<a class="anchor" id="a98f83d65d659a40fddff750983e5ed22"></a><!-- doxytag: member="mrpt::poses::CPose3D::inverseComposeFrom" ref="a98f83d65d659a40fddff750983e5ed22" args="(const CPose3D &amp;A, const CPose3D &amp;B)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::inverseComposeFrom </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>A</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>B</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Makes <img class="formulaInl" alt="$ this = A \ominus B $" src="form_56.png"/> this method is slightly more efficient than "this= A - B;" since it avoids the temporary object. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>A or B can be "this" without problems. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a88f72fa352303454295616213fc10c2d" title="Makes &quot;this = A (+) B&quot;; this method is slightly more efficient than &quot;this= A + B;&quot; since it avoids th...">composeFrom</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aaabe44aa147e5391009051b49a6d524e" title="An alternative, slightly more efficient way of doing  with G and L being 3D points and P this 6D pose...">composePoint</a> </dd></dl>

<p>Referenced by <a class="el" href="_c_pose3_d_8h_source.html#l00257">operator-()</a>.</p>

</div>
</div>
<a class="anchor" id="ab74dd377deb846d06d5bf91bc6d9682b"></a><!-- doxytag: member="mrpt::poses::CPose3D::inverseComposePoint" ref="ab74dd377deb846d06d5bf91bc6d9682b" args="(const double gx, const double gy, const double gz, double &amp;lx, double &amp;ly, double &amp;lz, mrpt::math::CMatrixFixedNumeric&lt; double, 3, 3 &gt; *out_jacobian_df_dpoint=NULL, mrpt::math::CMatrixFixedNumeric&lt; double, 3, 6 &gt; *out_jacobian_df_dpose=NULL, mrpt::math::CMatrixFixedNumeric&lt; double, 3, 6 &gt; *out_jacobian_df_dse3=NULL) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::inverseComposePoint </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>gx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>gy</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>gz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>lx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>ly</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>lz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 3, 3 &gt; *&#160;</td>
          <td class="paramname"><em>out_jacobian_df_dpoint</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 3, 6 &gt; *&#160;</td>
          <td class="paramname"><em>out_jacobian_df_dpose</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 3, 6 &gt; *&#160;</td>
          <td class="paramname"><em>out_jacobian_df_dse3</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the 3D point L such as <img class="formulaInl" alt="$ L = G \ominus this $" src="form_60.png"/>. </p>
<p>If pointers are provided, the corresponding Jacobians are returned. "out_jacobian_df_dse3" stands for the Jacobian with respect to the 6D locally Euclidean vector in the tangent space of SE(3). See <a href="http://www.mrpt.org/6D_poses:equivalences_compositions_and_uncertainty">this report</a> for mathematical details. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aaabe44aa147e5391009051b49a6d524e" title="An alternative, slightly more efficient way of doing  with G and L being 3D points and P this 6D pose...">composePoint</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a88f72fa352303454295616213fc10c2d" title="Makes &quot;this = A (+) B&quot;; this method is slightly more efficient than &quot;this= A + B;&quot; since it avoids th...">composeFrom</a> </dd></dl>

<p>Referenced by <a class="el" href="pinhole_8h_source.html#l00072">mrpt::vision::pinhole::projectPoint_no_distortion()</a>.</p>

</div>
</div>
<a class="anchor" id="a81952d3f7366165f230f7daf1320150b"></a><!-- doxytag: member="mrpt::poses::CPose3D::is_3D" ref="a81952d3f7366165f230f7daf1320150b" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool mrpt::poses::CPose3D::is_3D </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00467">467</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="ac7cd59fb4a79b6e8a0096a46475d2e06"></a><!-- doxytag: member="mrpt::poses::CPose3D::is_PDF" ref="ac7cd59fb4a79b6e8a0096a46475d2e06" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool mrpt::poses::CPose3D::is_PDF </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00470">470</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a6cd41bc62f7aaa11d969abe179a79599"></a><!-- doxytag: member="mrpt::poses::CPose3D::isHorizontal" ref="a6cd41bc62f7aaa11d969abe179a79599" args="(const double tolerance=0) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::poses::CPose3D::isHorizontal </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>tolerance</em> = <code>0</code></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return true if the 6D pose represents a Z axis almost exactly vertical (upwards or downwards), with a given tolerance (if set to 0 exact horizontality is tested). </p>

</div>
</div>
<a class="anchor" id="aaa3c171a7d2314b99fef5fa04027a974"></a><!-- doxytag: member="mrpt::poses::CPose3D::ln" ref="aaa3c171a7d2314b99fef5fa04027a974" args="(mrpt::math::CArrayDouble&lt; 6 &gt; &amp;out_ln) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::ln </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1math_1_1_c_array_double.html">mrpt::math::CArrayDouble</a>&lt; 6 &gt; &amp;&#160;</td>
          <td class="paramname"><em>out_ln</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Take the logarithm of the 3x4 matrix defined by this pose, generating the corresponding vector in the SE(3) Lie Algebra. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Method from TooN (C) Tom Drummond (GNU GPL) </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a9f9835c3e8035ff2eb7cb28a0890c1c3" title="Jacobian of the logarithm of the 3x4 matrix defined by this pose.">ln_jacob</a> </dd></dl>

<p>Referenced by <a class="el" href="_s_e__traits_8h_source.html#l00059">mrpt::poses::SE_traits&lt; 3 &gt;::ln()</a>.</p>

</div>
</div>
<a class="anchor" id="a11bb54f0ca1ccbdd6a8cd74d0ed223bc"></a><!-- doxytag: member="mrpt::poses::CPose3D::ln" ref="a11bb54f0ca1ccbdd6a8cd74d0ed223bc" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1math_1_1_c_array_double.html">mrpt::math::CArrayDouble</a>&lt;6&gt; mrpt::poses::CPose3D::ln </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00446">446</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

<p>References <a class="el" href="_c_pose3_d_8h_source.html#l00446">ln()</a>.</p>

<p>Referenced by <a class="el" href="_c_pose3_d_8h_source.html#l00446">ln()</a>.</p>

</div>
</div>
<a class="anchor" id="a9f9835c3e8035ff2eb7cb28a0890c1c3"></a><!-- doxytag: member="mrpt::poses::CPose3D::ln_jacob" ref="a9f9835c3e8035ff2eb7cb28a0890c1c3" args="(mrpt::math::CMatrixFixedNumeric&lt; double, 6, 12 &gt; &amp;J) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::ln_jacob </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">mrpt::math::CMatrixFixedNumeric</a>&lt; double, 6, 12 &gt; &amp;&#160;</td>
          <td class="paramname"><em>J</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Jacobian of the logarithm of the 3x4 matrix defined by this pose. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Method from TooN (C) Tom Drummond (GNU GPL) </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aaa3c171a7d2314b99fef5fa04027a974" title="Take the logarithm of the 3x4 matrix defined by this pose, generating the corresponding vector in the...">ln</a> </dd></dl>

</div>
</div>
<a class="anchor" id="adf040f9a7647f846a346694d67e51158"></a><!-- doxytag: member="mrpt::poses::CPose3D::ln_rot_jacob" ref="adf040f9a7647f846a346694d67e51158" args="(const CMatrixDouble33 &amp;R, CMatrixFixedNumeric&lt; double, 3, 9 &gt; &amp;M)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void mrpt::poses::CPose3D::ln_rot_jacob </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">CMatrixDouble33</a> &amp;&#160;</td>
          <td class="paramname"><em>R</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">CMatrixFixedNumeric</a>&lt; double, 3, 9 &gt; &amp;&#160;</td>
          <td class="paramname"><em>M</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Static function to compute the Jacobian of the SO(3) Logarithm function, evaluated at a given 3x3 rotation matrix R. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aaa3c171a7d2314b99fef5fa04027a974" title="Take the logarithm of the 3x4 matrix defined by this pose, generating the corresponding vector in the...">ln</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a9f9835c3e8035ff2eb7cb28a0890c1c3" title="Jacobian of the logarithm of the 3x4 matrix defined by this pose.">ln_jacob</a> </dd></dl>

</div>
</div>
<a class="anchor" id="af9cc8e84a1f1d4b66c180c20e728e19d"></a><!-- doxytag: member="mrpt::poses::CPose3D::ln_rotation" ref="af9cc8e84a1f1d4b66c180c20e728e19d" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1math_1_1_c_array_double.html">CArrayDouble</a>&lt;3&gt; mrpt::poses::CPose3D::ln_rotation </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Take the logarithm of the 3x3 rotation matrix, generating the corresponding vector in the Lie Algebra. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Method from TooN (C) Tom Drummond (GNU GPL) </dd></dl>

</div>
</div>
<a class="anchor" id="ae0374ea77ba01589d29cd0f1c8218d4c"></a><!-- doxytag: member="mrpt::poses::CPose3D::max_size" ref="ae0374ea77ba01589d29cd0f1c8218d4c" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a06e2fd1cec22470a92c6ac05f30bb081">size_type</a> mrpt::poses::CPose3D::max_size </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00488">488</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

<p>References <a class="el" href="eigen__plugins_8h_source.html#l00037">static_size</a>.</p>

</div>
</div>
<a class="anchor" id="a45ce0da437e2706ae7729d3107701ad4"></a><!-- doxytag: member="mrpt::poses::CPose3D::normalizeAngles" ref="a45ce0da437e2706ae7729d3107701ad4" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::normalizeAngles </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Rebuild the internal matrix &amp; update the yaw/pitch/roll angles within the ]-PI,PI] range (Must be called after using addComponents) </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a31dffe4a53feaebcc214e004f6d68dd4" title="Scalar sum of all 6 components: This is diferent from poses composition, which is implemented as &quot;+&quot; ...">addComponents</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a96b05d25ddc61d9c644f0f8352840dd6"></a><!-- doxytag: member="mrpt::poses::CPose3D::operator*=" ref="a96b05d25ddc61d9c644f0f8352840dd6" args="(const double s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::operator*= </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Scalar multiplication of x,y,z,yaw,pitch &amp; roll (angles will be wrapped to the ]-pi,pi] interval). </p>

</div>
</div>
<a class="anchor" id="a3ccd24581f78b116c1955ff621ceeae9"></a><!-- doxytag: member="mrpt::poses::CPose3D::operator+" ref="a3ccd24581f78b116c1955ff621ceeae9" args="(const CPose3D &amp;b) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> mrpt::poses::CPose3D::operator+ </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>b</em></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The operator <img class="formulaInl" alt="$ a \oplus b $" src="form_59.png"/> is the pose compounding operator. </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00181">181</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

<p>References <a class="el" href="_c_pose_or_point_8h_source.html#l00057">mrpt::poses::UNINITIALIZED_POSE</a>, and <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a88f72fa352303454295616213fc10c2d">composeFrom()</a>.</p>

</div>
</div>
<a class="anchor" id="a25e2e8bd59108011ef3d2e13a2fbb072"></a><!-- doxytag: member="mrpt::poses::CPose3D::operator+" ref="a25e2e8bd59108011ef3d2e13a2fbb072" args="(const CPoint3D &amp;b) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1poses_1_1_c_point3_d.html">CPoint3D</a> mrpt::poses::CPose3D::operator+ </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_point3_d.html">CPoint3D</a> &amp;&#160;</td>
          <td class="paramname"><em>b</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The operator <img class="formulaInl" alt="$ a \oplus b $" src="form_59.png"/> is the pose compounding operator. </p>

</div>
</div>
<a class="anchor" id="a800717a9f0f52f9b6fc3c994c2315bcf"></a><!-- doxytag: member="mrpt::poses::CPose3D::operator+" ref="a800717a9f0f52f9b6fc3c994c2315bcf" args="(const CPoint2D &amp;b) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1poses_1_1_c_point3_d.html">CPoint3D</a> mrpt::poses::CPose3D::operator+ </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_point2_d.html">CPoint2D</a> &amp;&#160;</td>
          <td class="paramname"><em>b</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The operator <img class="formulaInl" alt="$ a \oplus b $" src="form_59.png"/> is the pose compounding operator. </p>

</div>
</div>
<a class="anchor" id="a01f67ad787fdf9db41cf6de00b8f7c25"></a><!-- doxytag: member="mrpt::poses::CPose3D::operator+=" ref="a01f67ad787fdf9db41cf6de00b8f7c25" args="(const CPose3D &amp;b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a>&amp; mrpt::poses::CPose3D::operator+= </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>b</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Make <img class="formulaInl" alt="$ this = this \oplus b $" src="form_58.png"/> (<em>b</em> can be "this" without problems) </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00244">244</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa96efca4ba4952c71a4eb8cf07f6ad20"></a><!-- doxytag: member="mrpt::poses::CPose3D::operator&#45;" ref="aa96efca4ba4952c71a4eb8cf07f6ad20" args="(const CPose3D &amp;b) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html">CPose3D</a> mrpt::poses::CPose3D::operator- </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>b</em></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compute <img class="formulaInl" alt="$ RET = this \oplus b $" src="form_57.png"/>. </p>

<p>Reimplemented from <a class="el" href="classmrpt_1_1poses_1_1_c_pose.html#ac3f6fe9de1bf9a16b2f27013997e6b68">mrpt::poses::CPose&lt; CPose3D &gt;</a>.</p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00257">257</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

<p>References <a class="el" href="_c_pose_or_point_8h_source.html#l00057">mrpt::poses::UNINITIALIZED_POSE</a>, and <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a98f83d65d659a40fddff750983e5ed22">inverseComposeFrom()</a>.</p>

</div>
</div>
<a class="anchor" id="aa7783b4cf19e6c2f3a653a07159784e8"></a><!-- doxytag: member="mrpt::poses::CPose3D::operator[]" ref="aa7783b4cf19e6c2f3a653a07159784e8" args="(unsigned int i) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const double&amp; mrpt::poses::CPose3D::operator[] </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>i</em></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00381">381</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

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

<p>Get the PITCH angle (in radians) </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aa1559dfb9d3ee88046933d1bc21bab98" title="Set the pose from a 3D position (meters) and yaw/pitch/roll angles (radians) - This method recomputes...">setFromValues</a> </dd></dl>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00365">365</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

<p>Referenced by <a class="el" href="_c_network_of_poses__impl_8h_source.html#l00072">mrpt::graphs::detail::graph_ops::write_VERTEX_line()</a>, <a class="el" href="_c_network_of_poses__impl_8h_source.html#l00090">mrpt::graphs::detail::graph_ops::write_EDGE_line()</a>, and <a class="el" href="_c_network_of_poses__impl_8h_source.html#l00543">mrpt::graphs::detail::graph_ops::auxEuclid2Dist()</a>.</p>

</div>
</div>
<a class="anchor" id="a73ba83035a64939cdc3aa1c0dfed23ec"></a><!-- doxytag: member="mrpt::poses::CPose3D::readFromStream" ref="a73ba83035a64939cdc3aa1c0dfed23ec" args="(mrpt::utils::CStream &amp;in, int version)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void mrpt::utils::CSerializable::readFromStream </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">int&#160;</td>
          <td class="paramname"><em>version</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [protected, pure virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Introduces a pure virtual method responsible for loading from a <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">CStream</a> This can not be used directly be users, instead use "stream &gt;&gt; object;" for reading it from a stream or "stream &gt;&gt; object_ptr;" if the class is unknown apriori. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">in</td><td>The input binary stream where the object data must read from. </td></tr>
    <tr><td class="paramname">version</td><td>The version of the object stored in the stream: use this version number in your code to know how to read the incoming data. </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>On any error, see <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html#a1b8cd3d084b5a95a3f65c6eed6e7cc6d" title="Reads a block of bytes from the stream into Buffer On any error, or if ZERO bytes are read...">CStream::ReadBuffer</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">CStream</a> </dd></dl>

<p>Implemented in <a class="el" href="classmrpt_1_1math_1_1_c_matrix_d.html#a0194e57ec48c1dfc6aa00c23d3409143">mrpt::math::CMatrixD</a>, and <a class="el" href="classmrpt_1_1math_1_1_c_matrix.html#a12db95e8c32d48d2d2483936dec516a7">mrpt::math::CMatrix</a>.</p>

</div>
</div>
<a class="anchor" id="a3e750e144af17382e32e905f08a610d6"></a><!-- doxytag: member="mrpt::poses::CPose3D::rebuildRotationMatrix" ref="a3e750e144af17382e32e905f08a610d6" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::rebuildRotationMatrix </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Rebuild the homog matrix from the angles. </p>

</div>
</div>
<a class="anchor" id="a8f52c8785c46382346e516b6934eb949"></a><!-- doxytag: member="mrpt::poses::CPose3D::resize" ref="a8f52c8785c46382346e516b6934eb949" args="(const size_t n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void mrpt::poses::CPose3D::resize </td>
          <td>(</td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>n</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00489">489</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

<p>References <a class="el" href="eigen__plugins_8h_source.html#l00037">static_size</a>, and <a class="el" href="namespacemrpt.html#a3a27af794b658df5491e2b7678f8ccb8">mrpt::format()</a>.</p>

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

<p>Get the ROLL angle (in radians) </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aa1559dfb9d3ee88046933d1bc21bab98" title="Set the pose from a 3D position (meters) and yaw/pitch/roll angles (radians) - This method recomputes...">setFromValues</a> </dd></dl>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00366">366</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

<p>Referenced by <a class="el" href="_c_network_of_poses__impl_8h_source.html#l00072">mrpt::graphs::detail::graph_ops::write_VERTEX_line()</a>, <a class="el" href="_c_network_of_poses__impl_8h_source.html#l00090">mrpt::graphs::detail::graph_ops::write_EDGE_line()</a>, and <a class="el" href="_c_network_of_poses__impl_8h_source.html#l00543">mrpt::graphs::detail::graph_ops::auxEuclid2Dist()</a>.</p>

</div>
</div>
<a class="anchor" id="a9c75a2bf26cc7ef56931497c900f8ab1"></a><!-- doxytag: member="mrpt::poses::CPose3D::setFrom12Vector" ref="a9c75a2bf26cc7ef56931497c900f8ab1" args="(const ARRAYORVECTOR &amp;vec12)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class ARRAYORVECTOR &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::setFrom12Vector </td>
          <td>(</td>
          <td class="paramtype">const ARRAYORVECTOR &amp;&#160;</td>
          <td class="paramname"><em>vec12</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set pose from an array with these 12 elements: [r11 r21 r31 r12 r22 r32 r13 r23 r33 tx ty tz] where r{ij} are the entries of the 3x3 rotation matrix and t{x,y,z} are the 3D translation of the pose. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a5d3d820e9f85d64902c9d24e6bf3cff1" title="Get the pose representation as an array with these 12 elements: [r11 r21 r31 r12 r22 r32 r13 r23 r33 ...">getAs12Vector</a> </dd></dl>

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

</div>
</div>
<a class="anchor" id="aa1559dfb9d3ee88046933d1bc21bab98"></a><!-- doxytag: member="mrpt::poses::CPose3D::setFromValues" ref="aa1559dfb9d3ee88046933d1bc21bab98" args="(const double x0, const double y0, const double z0, const double yaw=0, const double pitch=0, const double roll=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::setFromValues </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>x0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>y0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>z0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>yaw</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>pitch</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>roll</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the pose from a 3D position (meters) and yaw/pitch/roll angles (radians) - This method recomputes the internal rotation matrix. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a2ff9b0a0edc5cf03fb51fffa451d4c2f" title="Returns the three angles (yaw, pitch, roll), in radians, from the rotation matrix.">getYawPitchRoll</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#acdd487677f00ab2378e3fa27d08ff651" title="Set the 3 angles of the 3D pose (in radians) - This method recomputes the internal rotation coordinat...">setYawPitchRoll</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a349849154d1add656c936ad4323f28dd"></a><!-- doxytag: member="mrpt::poses::CPose3D::setFromXYZQ" ref="a349849154d1add656c936ad4323f28dd" args="(const VECTORLIKE &amp;v, const size_t index_offset=0)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename VECTORLIKE &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::setFromXYZQ </td>
          <td>(</td>
          <td class="paramtype">const VECTORLIKE &amp;&#160;</td>
          <td class="paramname"><em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>index_offset</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the pose from a 3D position (meters) and a quaternion, stored as [x y z qr qx qy qz] in a 7-element vector. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aa1559dfb9d3ee88046933d1bc21bab98" title="Set the pose from a 3D position (meters) and yaw/pitch/roll angles (radians) - This method recomputes...">setFromValues</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a2ff9b0a0edc5cf03fb51fffa451d4c2f" title="Returns the three angles (yaw, pitch, roll), in radians, from the rotation matrix.">getYawPitchRoll</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#acdd487677f00ab2378e3fa27d08ff651" title="Set the 3 angles of the 3D pose (in radians) - This method recomputes the internal rotation coordinat...">setYawPitchRoll</a>, CQuaternion, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a31e4434ffbcf84c2675abcc131a51abf" title="Returns the quaternion associated to the rotation of this object (NOTE: XYZ translation is ignored)  ...">getAsQuaternion</a> </dd></dl>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00304">304</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

<p>References <a class="el" href="mrpt__macros_8h_source.html#l00290">ASSERT_ABOVEEQ_</a>.</p>

</div>
</div>
<a class="anchor" id="acdd487677f00ab2378e3fa27d08ff651"></a><!-- doxytag: member="mrpt::poses::CPose3D::setYawPitchRoll" ref="acdd487677f00ab2378e3fa27d08ff651" args="(const double yaw_, const double pitch_, const double roll_)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::setYawPitchRoll </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>yaw_</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>pitch_</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>roll_</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the 3 angles of the 3D pose (in radians) - This method recomputes the internal rotation coordinates matrix. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a2ff9b0a0edc5cf03fb51fffa451d4c2f" title="Returns the three angles (yaw, pitch, roll), in radians, from the rotation matrix.">getYawPitchRoll</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aa1559dfb9d3ee88046933d1bc21bab98" title="Set the pose from a 3D position (meters) and yaw/pitch/roll angles (radians) - This method recomputes...">setFromValues</a> </dd></dl>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00321">321</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

<p>References <a class="el" href="_core_source.html#l00604">Eigen::internal::y</a>.</p>

</div>
</div>
<a class="anchor" id="a3681727a91ff321244de2f0f48fdddb4"></a><!-- doxytag: member="mrpt::poses::CPose3D::size" ref="a3681727a91ff321244de2f0f48fdddb4" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a06e2fd1cec22470a92c6ac05f30bb081">size_type</a> mrpt::poses::CPose3D::size </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00486">486</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

<p>References <a class="el" href="eigen__plugins_8h_source.html#l00037">static_size</a>.</p>

</div>
</div>
<a class="anchor" id="a2a71edea2ca59fff342058c8ff1b344c"></a><!-- doxytag: member="mrpt::poses::CPose3D::sphericalCoordinates" ref="a2a71edea2ca59fff342058c8ff1b344c" args="(const TPoint3D &amp;point, double &amp;out_range, double &amp;out_yaw, double &amp;out_pitch) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::poses::CPose3D::sphericalCoordinates </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_point3_d.html">TPoint3D</a> &amp;&#160;</td>
          <td class="paramname"><em>point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>out_range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>out_yaw</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>out_pitch</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the spherical coordinates of a 3D point as seen from the 6D pose specified by this object. </p>
<p>For the coordinate system see the top of this page. </p>

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

<p>Updates Yaw/pitch/roll members from the m_ROT. </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00089">89</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a0b6b801e67bca3d8e0d355e7035f8013"></a><!-- doxytag: member="mrpt::poses::CPose3D::writeToStream" ref="a0b6b801e67bca3d8e0d355e7035f8013" args="(mrpt::utils::CStream &amp;out, int *getVersion) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void mrpt::utils::CSerializable::writeToStream </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">int *&#160;</td>
          <td class="paramname"><em>getVersion</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [protected, pure virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Introduces a pure virtual method responsible for writing to a <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">CStream</a>. </p>
<p>This can not be used directly be users, instead use "stream &lt;&lt; object;" for writing it to a stream. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">out</td><td>The output binary stream where object must be dumped. </td></tr>
    <tr><td class="paramname">getVersion</td><td>If NULL, the object must be dumped. If not, only the version of the object dump must be returned in this pointer. This enables the versioning of objects dumping and backward compatibility with previously stored data. </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>On any error, see <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html#a276005e7110c9de74ff3277b3f7bf621" title="Writes a block of bytes to the stream from Buffer.">CStream::WriteBuffer</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">CStream</a> </dd></dl>

<p>Implemented in <a class="el" href="classmrpt_1_1math_1_1_c_matrix_d.html#a767e787b52208ab4dd46ba7f5e2fd224">mrpt::math::CMatrixD</a>, and <a class="el" href="classmrpt_1_1math_1_1_c_matrix.html#a059d7eaf80dab9c7435154146d2b7dbf">mrpt::math::CMatrix</a>.</p>

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

<p>Get the YAW angle (in radians) </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aa1559dfb9d3ee88046933d1bc21bab98" title="Set the pose from a 3D position (meters) and yaw/pitch/roll angles (radians) - This method recomputes...">setFromValues</a> </dd></dl>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00364">364</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

<p>Referenced by <a class="el" href="_c_network_of_poses__impl_8h_source.html#l00072">mrpt::graphs::detail::graph_ops::write_VERTEX_line()</a>, <a class="el" href="_c_network_of_poses__impl_8h_source.html#l00090">mrpt::graphs::detail::graph_ops::write_EDGE_line()</a>, and <a class="el" href="_c_network_of_poses__impl_8h_source.html#l00543">mrpt::graphs::detail::graph_ops::auxEuclid2Dist()</a>.</p>

</div>
</div>
<hr/><h2>Friends And Related Function Documentation</h2>
<a class="anchor" id="a6fec28a53e20dfc1c4d046c26f9f7b48"></a><!-- doxytag: member="mrpt::poses::CPose3D::mrpt::utils::CStream" ref="a6fec28a53e20dfc1c4d046c26f9f7b48" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">friend class <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a><code> [friend, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reimplemented in <a class="el" href="classmrpt_1_1slam_1_1_c_random_field_grid_map2_d.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::slam::CRandomFieldGridMap2D</a>, <a class="el" href="classmrpt_1_1slam_1_1_c_points_map.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::slam::CPointsMap</a>, <a class="el" href="classmrpt_1_1slam_1_1_c_observation.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::slam::CObservation</a>, <a class="el" href="classmrpt_1_1slam_1_1_c_metric_map.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::slam::CMetricMap</a>, <a class="el" href="classmrpt_1_1opengl_1_1_c_renderizable.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::opengl::CRenderizable</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_quat_p_d_f.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::poses::CPose3DQuatPDF</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::poses::CPointPDF</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_p_d_f.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::poses::CPose3DPDF</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose_p_d_f.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::poses::CPosePDF</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_point2_d_p_d_f.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::poses::CPoint2DPDF</a>, <a class="el" href="classmrpt_1_1opengl_1_1_c_renderizable_display_list.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::opengl::CRenderizableDisplayList</a>, <a class="el" href="classmrpt_1_1slam_1_1_c_action.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::slam::CAction</a>, <a class="el" href="classmrpt_1_1detectors_1_1_c_detectable_object.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::detectors::CDetectableObject</a>, <a class="el" href="classmrpt_1_1opengl_1_1_c_textured_object.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::opengl::CTexturedObject</a>, and <a class="el" href="classmrpt_1_1reactivenav_1_1_c_holonomic_log_file_record.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::reactivenav::CHolonomicLogFileRecord</a>.</p>

<p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00056">56</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="a1810aef1121e739d1052f826431200f9"></a><!-- doxytag: member="mrpt::poses::CPose3D::_init_CPose3D" ref="a1810aef1121e739d1052f826431200f9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmrpt_1_1utils_1_1_c_l_a_s_s_i_n_i_t.html">mrpt::utils::CLASSINIT</a> <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a1810aef1121e739d1052f826431200f9">mrpt::poses::CPose3D::_init_CPose3D</a><code> [static, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00075">75</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="acb51e4dd811d62c2696aee449d0a4715"></a><!-- doxytag: member="mrpt::poses::CPose3D::classCObject" ref="acb51e4dd811d62c2696aee449d0a4715" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a> <a class="el" href="classmrpt_1_1utils_1_1_c_object.html#acb51e4dd811d62c2696aee449d0a4715">mrpt::utils::CObject::classCObject</a><code> [static, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00139">139</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="aee90ab60a5d4162127a48f27f9b0e67f"></a><!-- doxytag: member="mrpt::poses::CPose3D::classCPose3D" ref="aee90ab60a5d4162127a48f27f9b0e67f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a> <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#aee90ab60a5d4162127a48f27f9b0e67f">mrpt::poses::CPose3D::classCPose3D</a><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00075">75</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a28ec2a03d277a8469b8ecfc81892afdf"></a><!-- doxytag: member="mrpt::poses::CPose3D::classCSerializable" ref="a28ec2a03d277a8469b8ecfc81892afdf" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a> <a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html#a28ec2a03d277a8469b8ecfc81892afdf">mrpt::utils::CSerializable::classCSerializable</a><code> [static, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00056">56</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p>

</div>
</div>
<a class="anchor" id="a755ba67cfa7b460ff7dd435a0d5eb2c9"></a><!-- doxytag: member="mrpt::poses::CPose3D::classinfo" ref="a755ba67cfa7b460ff7dd435a0d5eb2c9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>* <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a755ba67cfa7b460ff7dd435a0d5eb2c9">mrpt::poses::CPose3D::classinfo</a><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00075">75</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="ac30f085bf7693a5703af39ff3a28d4e8"></a><!-- doxytag: member="mrpt::poses::CPose3D::m_coords" ref="ac30f085bf7693a5703af39ff3a28d4e8" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1math_1_1_c_array_double.html">CArrayDouble</a>&lt;3&gt; <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ac30f085bf7693a5703af39ff3a28d4e8">mrpt::poses::CPose3D::m_coords</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The translation vector [x,y,z]. </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00078">78</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a95ba8a35561cdd805550eae7b22f5b7e"></a><!-- doxytag: member="mrpt::poses::CPose3D::m_pitch" ref="a95ba8a35561cdd805550eae7b22f5b7e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a95ba8a35561cdd805550eae7b22f5b7e">mrpt::poses::CPose3D::m_pitch</a><code> [mutable, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00083">83</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="ade0203b8613ab04aac90ddd0555e6221"></a><!-- doxytag: member="mrpt::poses::CPose3D::m_roll" ref="ade0203b8613ab04aac90ddd0555e6221" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#ade0203b8613ab04aac90ddd0555e6221">mrpt::poses::CPose3D::m_roll</a><code> [mutable, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>These variables are updated every time that the object rotation matrix is modified (construction, loading from values, pose composition, etc ) </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00083">83</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a64f8c16d8bc0eb236f375b1be9b8dfb5"></a><!-- doxytag: member="mrpt::poses::CPose3D::m_ROT" ref="a64f8c16d8bc0eb236f375b1be9b8dfb5" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">CMatrixDouble33</a> <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a64f8c16d8bc0eb236f375b1be9b8dfb5">mrpt::poses::CPose3D::m_ROT</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The 3x3 rotation matrix. </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00079">79</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a1f6071c84070cbcb8864616b945566fc"></a><!-- doxytag: member="mrpt::poses::CPose3D::m_yaw" ref="a1f6071c84070cbcb8864616b945566fc" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a1f6071c84070cbcb8864616b945566fc">mrpt::poses::CPose3D::m_yaw</a><code> [mutable, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00083">83</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</a>.</p>

</div>
</div>
<a class="anchor" id="a9dae99aa623dc99e280db22f5633bb17"></a><!-- doxytag: member="mrpt::poses::CPose3D::m_ypr_uptodate" ref="a9dae99aa623dc99e280db22f5633bb17" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d.html#a9dae99aa623dc99e280db22f5633bb17">mrpt::poses::CPose3D::m_ypr_uptodate</a><code> [mutable, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Whether yaw/pitch/roll members are up-to-date since the last rotation matrix update. </p>

<p>Definition at line <a class="el" href="_c_pose3_d_8h_source.html#l00082">82</a> of file <a class="el" href="_c_pose3_d_8h_source.html">CPose3D.h</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>