10 #ifndef opengl_CPointCloud_H 11 #define opengl_CPointCloud_H 141 const std::vector<float>&
x,
const std::vector<float>&
y,
142 const std::vector<float>&
z)
154 std::vector<float>&
x, std::vector<float>&
y, std::vector<float>&
z)
208 void setPoint(
size_t i,
const float x,
const float y,
const float z);
212 size_t i,
const float x,
const float y,
const float z)
223 template <
class POINTSMAP>
229 template <
class LISTOFPOINTS>
233 const size_t N = pointsList.size();
241 for (idx = 0, it = pointsList.begin(); idx < N; ++idx, ++it)
288 void render()
const override;
292 const bool all,
const std::vector<size_t>& idxs,
293 const float render_area_sqpixels)
const;
331 static const int HAS_RGB = 0;
333 static const int HAS_RGBf = 0;
335 static const int HAS_RGBu8 = 0;
339 : m_obj(*const_cast<
mrpt::opengl::CPointCloud*>(&
obj))
343 inline size_t size()
const {
return m_obj.
size(); }
347 template <
typename T>
373 template <
class POINTSMAP>
379 const size_t N = pc_src.size();
381 for (
size_t i = 0; i < N; i++)
384 pc_src.getPointXYZ(i,
x,
y,
z);
385 pc_dst.setPointXYZ(i,
x,
y,
z);
std::vector< float > m_xs
void render() const override
Render.
float coords_t
The type of each point XYZ coordinates.
const std::vector< float > & getArrayY() const
Get a const reference to the internal array of Y coordinates.
void resize(size_t N)
Set the number of points (with contents undefined)
mrpt::math::TPoint3Df getPointf(size_t i) const
Read access to each individual point (checks for "i" in the valid range only in Debug).
void insertPoint(float x, float y, float z)
Adds a new point to the cloud.
void loadFromPointsMap(const POINTSMAP *themap)
Load the points from any other point map class supported by the adapter mrpt::utils::PointCloudAdapte...
void enableColorFromX(bool v=true)
A helper base class for those PointCloudAdapter<> which do not handle RGB data; it declares needed in...
mrpt::utils::TColorf m_col_slop_inv
std::vector< float > m_ys
#define THROW_EXCEPTION(msg)
void loadFromPointsList(LISTOFPOINTS &pointsList)
Load the points from a list of mrpt::math::TPoint3D.
#define ASSERT_BELOW_(__A, __B)
volatile size_t m_last_rendered_count
void setPoint_fast(size_t i, const float x, const float y, const float z)
Write an individual point (without checking validity of the index).
The base class of 3D objects that can be directly rendered through OpenGL.
void setAllPoints(const std::vector< float > &x, const std::vector< float > &y, const std::vector< float > &z)
Set the list of (X,Y,Z) point coordinates, all at once, from three vectors with their coordinates...
virtual void getBoundingBox(mrpt::math::TPoint3D &bb_min, mrpt::math::TPoint3D &bb_max) const override
Evaluates the bounding box of this object (including possible children) in the coordinate frame of th...
void setGradientColors(const mrpt::utils::TColorf &colorMin, const mrpt::utils::TColorf &colorMax)
Sets the colors used as extremes when colorFromDepth is enabled.
const Scalar * const_iterator
virtual ~CPointCloud()
Private, virtual destructor: only can be deleted from smart pointers.
mrpt::utils::TColorf m_colorFromDepth_min
The colors used to interpolate when m_colorFromDepth is true.
void reserve(size_t N)
Like STL std::vector's reserve.
mrpt::utils::TColorf m_col_slop
Color linear function slope.
void clear()
Empty the list of points.
GLsizei GLsizei GLuint * obj
float getPointSize() const
void enableColorFromY(bool v=true)
bool m_pointSmooth
Default: false.
Template class that implements the data structure and algorithms for Octree-based efficient rendering...
const std::vector< float > & getArrayZ() const
Get a const reference to the internal array of Z coordinates.
Lightweight 3D point (float version).
CPointCloud()
Constructor.
#define MRPT_UNUSED_PARAM(a)
Can be used to avoid "not used parameters" warnings from the compiler.
void setPointSize(float p)
By default is 1.0.
mrpt::math::TPoint3D operator[](size_t i) const
Read access to each individual point (checks for "i" in the valid range only in Debug).
void PLY_export_get_vertex(const size_t idx, mrpt::math::TPoint3Df &pt, bool &pt_has_color, mrpt::utils::TColorf &pt_color) const override
In a base class, will be called after PLY_export_get_vertex_count() once for each exported point...
void enableColorFromZ(bool v=true)
PointCloudAdapter(const mrpt::opengl::CPointCloud &obj)
Constructor (accept a const ref for convenience)
const std::vector< float > & getArrayX() const
Get a const reference to the internal array of X coordinates.
A virtual base class that implements the capability of importing 3D point clouds and faces from a fil...
An adapter to different kinds of point cloud object.
void internal_render_one_point(size_t i) const
size_t PLY_export_get_face_count() const override
In a base class, return the number of faces.
void setPointXYZ(const size_t idx, const coords_t x, const coords_t y, const coords_t z)
Set XYZ coordinates of i'th point.
size_t size() const
Get number of points.
virtual void PLY_import_set_vertex_count(const size_t N) override
In a base class, reserve memory to prepare subsequent calls to PLY_import_set_vertex.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
void render_subset(const bool all, const std::vector< size_t > &idxs, const float render_area_sqpixels) const
Render a subset of points (required by octree renderer)
enum mrpt::opengl::CPointCloud::Axis m_colorFromDepth
void enablePointSmooth(bool enable=true)
volatile size_t m_last_rendered_count_ongoing
bool isPointSmoothEnabled() const
void getPointXYZ(const size_t idx, T &x, T &y, T &z) const
Get XYZ coordinates of i'th point.
void markAllPointsAsNew()
Do needed internal work if all points are new (octree rebuilt,...)
mrpt::opengl::CPointCloud & m_obj
float m_pointSize
By default is 1.0.
mrpt::math::TPoint3D getPoint(size_t i) const
Read access to each individual point (checks for "i" in the valid range only in Debug).
void setInvalidPoint(const size_t idx)
Set XYZ coordinates of i'th point.
void octree_getBoundingBox(mrpt::math::TPoint3D &bb_min, mrpt::math::TPoint3D &bb_max) const
size_t PLY_export_get_vertex_count() const override
In a base class, return the number of vertices.
A RGB color - floats in the range [0,1].
void setPoint(size_t i, const float x, const float y, const float z)
Write an individual point (checks for "i" in the valid range only in Debug).
float m_min
Buffer for min/max coords when m_colorFromDepth is true.
void disablePointSmooth()
An adapter to different kinds of point cloud object.
virtual void PLY_import_set_face_count(const size_t N) override
In a base class, reserve memory to prepare subsequent calls to PLY_import_set_face.
A virtual base class that implements the capability of exporting 3D point clouds and faces to a file ...
size_t getActuallyRendered() const
Get the number of elements actually rendered in the last render event.
void setAllPointsFast(std::vector< float > &x, std::vector< float > &y, std::vector< float > &z)
Set the list of (X,Y,Z) point coordinates, DESTROYING the contents of the input vectors (via swap) ...
virtual void PLY_import_set_vertex(const size_t idx, const mrpt::math::TPoint3Df &pt, const mrpt::utils::TColorf *pt_color=nullptr) override
In a base class, will be called after PLY_import_set_vertex_count() once for each loaded point...
std::vector< float > m_zs
mrpt::utils::TColorf m_colorFromDepth_max
A cloud of points, all with the same color or each depending on its value along a particular coordina...
void resize(const size_t N)
Set number of points (to uninitialized values)