PCL中拟合出来的平面,不论是ransac还是leastsquare,最终的平面方程参数都是对的,并且在cloudcompare中直接绘制平面,平面跟点云也是拟合的很好,但为什么我在VTK中绘制出来的就存在一个夹角呢
以下是我的平面绘制函数
pcl::PointCloud<pcl::PointXYZ>::Ptr createPlaneCloud(double a, double b, double c, double d,
double x_min, double x_max,
double y_min, double y_max,
int points_per_axis = 100) {
auto cloud = std::make_shared<pcl::PointCloud<pcl::PointXYZ>>();
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<> x_dist(x_min, x_max);
std::uniform_real_distribution<> y_dist(y_min, y_max);
for (int i = 0; i < points_per_axis; ++i) {
for (int j = 0; j < points_per_axis; ++j) {
double x = x_dist(gen);
double y = y_dist(gen);
double z = (-a * x - b * y - d) / c; // 解平面方程求z
cloud->push_back(pcl::PointXYZ(x, y, z));
}
}
cloud->width = cloud->size();
cloud->height = 1;
return cloud;
}