#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/filters/project_inliers.h>
#include <pcl/model_coefficients.h>
float A = 1.0;
float B = 0.0;
float C = 0.0;
float x0 = 1.0;
float y0 = 2.0;
float z0 = 3.0;
float D = -(A * x0 + B * y0 + C * z0);
pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients);
coefficients->values.resize(4);
coefficients->values[0] = A;
coefficients->values[1] = B;
coefficients->values[2] = C;
coefficients->values[3] = D;
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::ProjectInliers<pcl::PointXYZ> project;
project.setModelType(pcl::SACMODEL_PLANE);
project.setModelCoefficients(coefficients);
project.setInputCloud(cloud);
pcl::PointCloud<pcl::PointXYZ>::Ptr projected_cloud(new pcl::PointCloud<pcl::PointXYZ>);
project.filter(*projected_cloud);