14 #include <mrpt/opengl/CSetOfLines.h> 
   15 #include <mrpt/opengl/CSetOfObjects.h> 
   16 #include <mrpt/opengl/CTexturedPlane.h> 
   17 #include <mrpt/serialization/CArchive.h> 
   18 #include <mrpt/serialization/stl_serialization.h> 
   38     const auto readVersion = in.ReadAs<uint8_t>();
 
   47     mrpt::serialization::CArchive& 
out, 
const Pairings& obj)
 
   54     mrpt::serialization::CArchive& in, 
Pairings& obj)
 
   63     using mrpt::math::TPoint3D;
 
   72     const double wcPoints = 1.0 / (nPt2Pt - outliers.
point2point.size());
 
   76     TPoint3D ct_local(0, 0, 0), ct_global(0, 0, 0);
 
   79         auto        it_next_outlier = outliers.
point2point.begin();
 
   83             if (it_next_outlier != outliers.
point2point.end() && i == *it_next_outlier)
 
   90             ct_global += pair.global;
 
   91             ct_local += pair.local;
 
   95         ASSERT_EQUAL_(cnt, nPt2Pt - outliers.
point2point.size());
 
   98         ct_global *= wcPoints;
 
  101     return {ct_local, ct_global};
 
  104 template <
typename T>
 
  107     me.insert(me.end(), o.begin(), o.end());
 
  109 template <
typename T>
 
  112     me.insert(me.end(), std::make_move_iterator(o.begin()), std::make_move_iterator(o.end()));
 
  141 template <
typename CONTAINER>
 
  144     using namespace std::string_literals;
 
  146     if (c.empty()) 
return;
 
  147     if (!ret.empty()) ret += 
", "s;
 
  148     ret += std::to_string(c.size()) + 
" "s + name;
 
  153     using namespace std::string_literals;
 
  155     if (
empty()) 
return {
"none"s};
 
  170     -> std::shared_ptr<mrpt::opengl::CSetOfObjects>
 
  173     auto o = mrpt::opengl::CSetOfObjects::Create();
 
  184     mrpt::opengl::CSetOfObjects& o, 
const mrpt::poses::CPose3D& localWrtGlobal,
 
  189     auto lns = mrpt::opengl::CSetOfLines::Create();
 
  190     lns->setColor_u8(p.
color);
 
  195         const auto ptLocalTf = localWrtGlobal.composePoint(pair.local);
 
  196         lns->appendLine(ptLocalTf, pair.global);
 
  203     mrpt::opengl::CSetOfObjects& o, 
const mrpt::poses::CPose3D& localWrtGlobal,
 
  208     auto lns = mrpt::opengl::CSetOfLines::Create();
 
  215         const auto globalPlanePose = mrpt::poses::CPose3D(
 
  216             pair.pl_global.plane.getAsPose3DForcingOrigin(pair.pl_global.centroid));
 
  218         const auto ptLocal   = pair.pt_local;
 
  219         const auto ptLocalTf = localWrtGlobal.composePoint(ptLocal);
 
  222         lns->appendLine(ptLocalTf, globalPlanePose.translation());
 
  225         auto glPlane = mrpt::opengl::CTexturedPlane::Create();
 
  226         glPlane->setPlaneCorners(-L, L, -L, L);
 
  229         glPlane->setPose(globalPlanePose);
 
  238     mrpt::opengl::CSetOfObjects& o, 
const mrpt::poses::CPose3D& localWrtGlobal,
 
  243     auto pairingLines = mrpt::opengl::CSetOfLines::Create();
 
  246     auto globalLines = mrpt::opengl::CSetOfLines::Create();
 
  253         const auto& globalLine = pair.ln_global;
 
  255         const auto ptLocal   = pair.pt_local;
 
  256         const auto ptLocalTf = localWrtGlobal.composePoint(ptLocal);
 
  259         pairingLines->appendLine(ptLocalTf, globalLine.pBase);
 
  262         globalLines->appendLine(
 
  263             globalLine.pBase - globalLine.director * L, globalLine.pBase + globalLine.director * L);
 
  266     o.insert(pairingLines);
 
  267     o.insert(globalLines);
 
  274     out.WriteAs<uint8_t>(0);
 
  283     in.ReadAs<uint8_t>();
 
  291     out.WriteAs<uint8_t>(0);
 
  298     in.ReadAs<uint8_t>();
 
  306     out.WriteAs<uint8_t>(0);
 
  313     in.ReadAs<uint8_t>();
 
  321     out.WriteAs<uint8_t>(0);
 
  328     in.ReadAs<uint8_t>();