137 const std::vector<float>&
x,
const std::vector<float>&
y,
138 const std::vector<float>&
z)
150 std::vector<float>&
x, std::vector<float>&
y, std::vector<float>&
z)
204 void setPoint(
size_t i,
const float x,
const float y,
const float z);
208 size_t i,
const float x,
const float y,
const float z)
219 template <
class POINTSMAP>
225 template <
class LISTOFPOINTS>
229 const size_t N = pointsList.size();
237 for (idx = 0, it = pointsList.begin(); idx < N; ++idx, ++it)
283 void render()
const override;
287 const bool all,
const std::vector<size_t>& idxs,
288 const float render_area_sqpixels)
const;
322 static const int HAS_RGB = 0;
324 static const int HAS_RGBf = 0;
326 static const int HAS_RGBu8 = 0;
334 inline size_t size()
const {
return m_obj.
size(); }
342 template <
typename T>
365 template <
class POINTSMAP>
371 const size_t N = pc_src.size();
373 for (
size_t i = 0; i < N; i++)
376 pc_src.getPointXYZ(i,
x,
y,
z);
377 pc_dst.setPointXYZ(i,
x,
y,
z);
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
Template class that implements the data structure and algorithms for Octree-based efficient rendering...
void octree_getBoundingBox(mrpt::math::TPoint3D &bb_min, mrpt::math::TPoint3D &bb_max) const
A cloud of points, all with the same color or each depending on its value along a particular coordina...
virtual ~CPointCloud()
Private, virtual destructor: only can be deleted from smart pointers.
void clear()
Empty the list of points.
mrpt::img::TColorf m_col_slop
Color linear function slope.
bool m_pointSmooth
Default: false.
void loadFromPointsList(LISTOFPOINTS &pointsList)
Load the points from a list of mrpt::math::TPoint3D.
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.
void enablePointSmooth(bool enable=true)
size_t PLY_export_get_vertex_count() const override
In a base class, return the number of vertices.
std::vector< float > m_xs
void enableColorFromY(bool v=true)
mrpt::math::TPoint3D operator[](size_t i) const
Read access to each individual point (checks for "i" in the valid range only in Debug).
size_t getActuallyRendered() const
Get the number of elements actually rendered in the last render event.
void disablePointSmooth()
float getPointSize() const
enum mrpt::opengl::CPointCloud::Axis m_colorFromDepth
void markAllPointsAsNew()
Do needed internal work if all points are new (octree rebuilt,...)
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).
bool isPointSmoothEnabled() const
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)
mrpt::math::TPoint3D getPoint(size_t i) const
Read access to each individual point (checks for "i" in the valid range only in Debug).
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...
CPointCloud()
Constructor.
void setPointSize(float p)
By default is 1.0.
mrpt::img::TColorf m_col_slop_inv
float m_min
Buffer for min/max coords when m_colorFromDepth is true.
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.
void internal_render_one_point(size_t i) const
void reserve(size_t N)
Like STL std::vector's reserve.
void enableColorFromZ(bool v=true)
virtual void PLY_import_set_vertex(const size_t idx, const mrpt::math::TPoint3Df &pt, const mrpt::img::TColorf *pt_color=nullptr) override
In a base class, will be called after PLY_import_set_vertex_count() once for each loaded point.
const std::vector< float > & getArrayZ() const
Get a const reference to the internal array of Z coordinates.
void loadFromPointsMap(const POINTSMAP *themap)
Load the points from any other point map class supported by the adapter mrpt::opengl::PointCloudAdapt...
const std::vector< float > & getArrayY() const
Get a const reference to the internal array of Y coordinates.
void PLY_export_get_vertex(const size_t idx, mrpt::math::TPoint3Df &pt, bool &pt_has_color, mrpt::img::TColorf &pt_color) const override
In a base class, will be called after PLY_export_get_vertex_count() once for each exported point.
void setGradientColors(const mrpt::img::TColorf &colorMin, const mrpt::img::TColorf &colorMax)
Sets the colors used as extremes when colorFromDepth is enabled.
volatile size_t m_last_rendered_count_ongoing
void enableColorFromX(bool v=true)
mrpt::math::TPoint3Df getPointf(size_t i) const
Read access to each individual point (checks for "i" in the valid range only in Debug).
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.
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)
mrpt::img::TColorf m_colorFromDepth_max
std::vector< float > m_ys
float m_pointSize
By default is 1.0.
mrpt::img::TColorf m_colorFromDepth_min
The colors used to interpolate when m_colorFromDepth is true.
const std::vector< float > & getArrayX() const
Get a const reference to the internal array of X coordinates.
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).
std::vector< float > m_zs
void insertPoint(float x, float y, float z)
Adds a new point to the cloud.
void render() const override
Render.
void resize(size_t N)
Set the number of points (with contents undefined)
size_t PLY_export_get_face_count() const override
In a base class, return the number of faces.
The base class of 3D objects that can be directly rendered through OpenGL.
A virtual base class that implements the capability of exporting 3D point clouds and faces to a file ...
A virtual base class that implements the capability of importing 3D point clouds and faces from a fil...
void resize(const size_t N)
Set number of points (to uninitialized values)
void setInvalidPoint(const size_t idx)
Set XYZ coordinates of i'th point.
PointCloudAdapter(const mrpt::opengl::CPointCloud &obj)
Constructor (accept a const ref for convenience)
size_t size() const
Get number of points.
mrpt::opengl::CPointCloud & m_obj
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.
float coords_t
The type of each point XYZ coordinates.
void getPointXYZ(const size_t idx, T &x, T &y, T &z) const
Get XYZ coordinates of i'th point.
void setDimensions(const size_t &height, const size_t &width)
Does nothing as of now.
An adapter to different kinds of point cloud object.
A helper base class for those PointCloudAdapter<> which do not handle RGB data; it declares needed in...
#define MRPT_UNUSED_PARAM(a)
Determines whether this is an X86 or AMD64 platform.
const Scalar * const_iterator
#define ASSERT_(f)
Defines an assertion mechanism.
#define ASSERT_BELOW_(__A, __B)
#define THROW_EXCEPTION(msg)
GLsizei GLsizei GLuint * obj
GLenum GLsizei GLsizei height
The namespace for 3D scene representation and rendering.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
A RGB color - floats in the range [0,1].
Lightweight 3D point (float version).