void PointCloud2Vector3d (pcl::PointCloud<Point>::Ptr cloud, pcl::on_nurbs::vector_vec3d &data) { for (unsigned i = 0; i < cloud->size (); i++) { Point &p = cloud->at (i); if (!pcl_isnan (p.x) && !pcl_isnan (p.y) && !pcl_isnan (p.z)) data.push_back (Eigen::Vector3d (p.x, p.y, p.z)); } }
void CreateCylinderPoints (pcl::PointCloud<Point>::Ptr cloud, pcl::on_nurbs::vector_vec3d &data, unsigned npoints, double alpha, double h, double r) { for (unsigned i = 0; i < npoints; i++) { double da = alpha * double (rand ()) / RAND_MAX; double dh = h * (double (rand ()) / RAND_MAX - 0.5); Point p; p.x = r * cos (da); p.y = r * sin (da); p.z = dh; data.push_back (Eigen::Vector3d (p.x, p.y, p.z)); cloud->push_back (p); } }