找了很多资料,pcl中有 pcl::visualization::PCLVisualizer::addCircle 画圆环,但是明显看到圆环不圆,线条不光滑,不好看,于是有了我的画圆的方法。
2022/4/11 : 此方法性能不好,请参考最新方法:
此方法性能不好,请参考最新方法:
此方法性能不好,请参考最新方法:
此方法性能不好,请参考最新方法:
基于Qt在PCL中画圆环,VTK画圆环,pcl可视化viewer与vtk显示接合(终于解决)
一、代码
void mainwindow::initPointCloudViewer()
{
viewer->initCameraParameters();
QColor backgriundColor(0, 0, 15);
viewer->setBackgroundColor(backgriundColor.red() / 255.0, backgriundColor.green() / 255.0, backgriundColor.blue() / 255.0, 0);
viewer->createViewPortCamera(0);
viewer->setCameraPosition(0, -20, 10, 0, 0, 0, 0, 1, 1, 0);
viewer->addCoordinateSystem(0.9, "coordinateSystem", 0);
//画网格
for (int i = -20; i <= 20; i += 5) {
viewer->addLine(pcl::PointXYZ(i, -20, 0), pcl::PointXYZ(i, 20, 0), QString("GriglineY%1").arg(i).toStdString(), 0);
viewer->addLine(pcl::PointXYZ(-20, i, 0), pcl::PointXYZ(20, i, 0), QString("GriglineX%1").arg(i).toStdString(), 0);
}
//画圆环
QVector<pcl::PointXYZ> points;
for (int j = 1; j <= 4; j ++) {
int o_x = 0, o_y = 0, r = 5 * j; //圆心及半径
for (int i = 0; i < 100; i++) //计算圆环上点的坐标
{
pcl::PointXYZ point;
double alpha = 2 * M_PI / (100 - 1);
point.x = o_x + r * cos(i * alpha);
point.y = o_y + r * sin(i * alpha);
point.z = 0;
points.push_back(point);
}
//将圆环上的点用线段连起来
for (int i = 0; i < points.size() - 1; i++)
{
viewer->addLine(points.at(i), points.at(i + 1), QString("CircleLineX%1_%2").arg(i).arg(j).toStdString(), 0);
}
viewer->addLine(points.at(points.size() - 1), points.at(0), QString("CircleLineX%1_%2").arg(points.size()).arg(5).toStdString(), 0);
}
}
二、效果
呕心沥血呀老铁们,这就是我想要的效果了,没有画圆有画线段呀,这让我想到了微积分,效果达到就好了,PCL就没有一个好看的画圆的接口。