#ifndef CLOUD_VIEW_3D_TYPES_H #define CLOUD_VIEW_3D_TYPES_H #include #include #include struct Point3D { float x, y, z; Point3D() : x(0), y(0), z(0) {} Point3D(float _x, float _y, float _z) : x(_x), y(_y), z(_z) {} }; struct Point3DRGB { float x, y, z; uint8_t r, g, b; float pointSize; Point3DRGB() : x(0), y(0), z(0), r(255), g(255), b(255), pointSize(0) {} Point3DRGB(float _x, float _y, float _z, uint8_t _r = 255, uint8_t _g = 255, uint8_t _b = 255, float _ps = 0) : x(_x), y(_y), z(_z), r(_r), g(_g), b(_b), pointSize(_ps) {} }; template class SimplePointCloud { public: std::vector points; std::vector lineIndices; void clear() { points.clear(); lineIndices.clear(); } size_t size() const { return points.size(); } bool empty() const { return points.empty(); } void reserve(size_t n) { points.reserve(n); lineIndices.reserve(n); } void push_back(const PointT& pt) { points.push_back(pt); } void push_back(const PointT& pt, int lineIdx) { points.push_back(pt); lineIndices.push_back(lineIdx); } }; using PointCloudXYZ = SimplePointCloud; using PointCloudXYZRGB = SimplePointCloud; #endif // CLOUD_VIEW_3D_TYPES_H