MRPT  2.0.1
CEllipsoidInverseDepth3D.cpp
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | https://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2020, Individual contributors, see AUTHORS file |
6  | See: https://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See: https://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #include "opengl-precomp.h" // Precompiled header
11 
14 
15 using namespace mrpt;
16 using namespace mrpt::opengl;
17 using namespace mrpt::math;
18 using namespace std;
19 
22 
23 /*---------------------------------------------------------------
24  transformFromParameterSpace
25  ---------------------------------------------------------------*/
27  const std::vector<BASE::array_parameter_t>& in_pts,
28  std::vector<BASE::array_point_t>& out_pts) const
29 {
31 
32  // (inv_range,yaw,pitch) --> (x,y,z)
33  const size_t N = in_pts.size();
34  out_pts.resize(N);
35  for (size_t i = 0; i < N; i++)
36  {
37  const float inv_range = in_pts[i][0];
38  const float yaw = in_pts[i][1];
39  const float pitch = in_pts[i][2];
40 
41  const float range = inv_range < 0
42  ? m_underflowMaxRange
43  : (inv_range != 0 ? 1.f / inv_range : 0);
44 
45  out_pts[i][0] = range * cosf(yaw) * cosf(pitch);
46  out_pts[i][1] = range * sinf(yaw) * cosf(pitch);
47  out_pts[i][2] = -range * sinf(pitch);
48  }
49 
50  MRPT_END
51 }
52 
53 uint8_t CEllipsoidInverseDepth3D::serializeGetVersion() const { return 0; }
56 {
57  writeToStreamRender(out);
58  BASE::thisclass_writeToStream(out);
59 
60  out << m_underflowMaxRange;
61 }
62 
64  mrpt::serialization::CArchive& in, uint8_t version)
65 {
66  switch (version)
67  {
68  case 0:
69  {
70  readFromStreamRender(in);
71  BASE::thisclass_readFromStream(in);
72 
73  in >> m_underflowMaxRange;
74  }
75  break;
76  default:
78  };
80 }
void transformFromParameterSpace(const std::vector< BASE::array_parameter_t > &in_pts, std::vector< BASE::array_point_t > &out_pts) const override
To be implemented by derived classes: maps, using some arbitrary space transformation, a list of points defining an ellipsoid in parameter space into their corresponding points in 2D/3D space.
#define MRPT_START
Definition: exceptions.h:241
void notifyChange() const
Call to enable calling renderUpdateBuffers() before the next render() rendering iteration.
An especial "ellipsoid" in 3D computed as the uncertainty iso-surfaces of a (inv_range,yaw,pitch) variable.
STL namespace.
IMPLEMENTS_SERIALIZABLE(CEllipsoidInverseDepth3D, CRenderizableShaderWireFrame, mrpt::opengl) void CEllipsoidInverseDepth3D
#define MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION(__V)
For use in CSerializable implementations.
Definition: exceptions.h:97
This base provides a set of functions for maths stuff.
uint8_t serializeGetVersion() const override
Must return the current versioning number of the object.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Virtual base class for "archives": classes abstracting I/O streams.
Definition: CArchive.h:54
void serializeTo(mrpt::serialization::CArchive &out) const override
Pure virtual method for writing (serializing) to an abstract archive.
void serializeFrom(mrpt::serialization::CArchive &in, uint8_t serial_version) override
Pure virtual method for reading (deserializing) from an abstract archive.
mrpt::vision::TStereoCalibResults out
Renderizable generic renderer for objects using the wireframe shader.
#define MRPT_END
Definition: exceptions.h:245
The namespace for 3D scene representation and rendering.
Definition: CGlCanvasBase.h:13



Page generated by Doxygen 1.8.14 for MRPT 2.0.1 Git: 0fef1a6d7 Fri Apr 3 23:00:21 2020 +0200 at vie abr 3 23:20:28 CEST 2020