CloudCompare——点云空间圆拟合

在这里插入图片描述

本文由CSDN点云侠原创,CloudCompare——点云空间圆拟合,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。

1.概述

   CloudCompare软件中的'Tools——>Fit——>Circle功能可以实现点云的空间圆拟合。

2.软件实现

1. 首先选中点云
在这里插入图片描述

2. 拟合功能
在这里插入图片描述

3. 拟合结果
白色的线为拟合出来的空间圆模型
在这里插入图片描述

4. 拟合参数
在这里插入图片描述

5. 修改拟合圆的颜色
选中拟合的空间圆模型使用Edit中的Colors功能即可对拟合结果进行颜色修改。
在这里插入图片描述

3.完整操作

在这里插入图片描述

4.算法源码

void MainWindow::doActionFitCircle()
{
   
	ccProgressDialog pDlg(true, this);
	pDlg.setAutoClose(false);

	for (ccHObject* entity : getSelectedEntities())
	{
   
		ccPointCloud* cloud = ccHObjectCaster::ToPointCloud(entity);
		if (!cloud)
			continue;

		CCVector3 center;
		CCVector3 normal;
		PointCoordinateType radius = 0;
		double rms = std::numeric_limits<double>::quiet_NaN();
		if (CCCoreLib::GeometricalAnalysisTools::DetectCircle(	cloud,
																center,
																normal,
																radius,
																rms,
																&pDlg) != CCCoreLib::GeometricalAnalysisTools::NoError)
		{
   
			ccLog::Warning(tr("[Fit circle] Failed to fit a circle on cloud '%1'").arg(cloud->getName()));
			continue;
		}

		ccLog::Print(tr("[Fit circle] Cloud '%1': center (%2,%3,%4) - radius = %5 [RMS = %6]")
						.arg(cloud->getName())
						.arg(center.x)
						.arg(center.y)
						.arg(center.z)
						.arg(radius)
						.arg(rms));

		ccLog::Print(tr("[Fit circle] Normal (%1,%2,%3)")
			.arg(normal.x)
			.arg(normal.y)
			.arg(normal.z));

		// create the circle representation as a polyline
		ccPolyline* circle = ccPolyline::Circle(CCVector3(0, 0, 0), radius, 128);
		if (circle)
		{
   
			circle->setName(QObject::tr("Circle r=%1").arg(radius));
			cloud->addChild(circle);
			circle->prepareDisplayForRefresh();
			circle->copyGlobalShiftAndScale(*cloud);
			circle->setMetaData("RMS", rms);

			ccGLMatrix trans = ccGLMatrix::FromToRotation(CCVector3(0, 0, 1), normal);
			trans.setTranslation(center);
			circle->applyGLTransformation_recursive(&trans);


			addToDB(circle, false, false, false);
		}
	}

	refreshAll();
}

5.相关代码

相关推荐

  1. 方法:三

    2024-01-10 18:42:03       55 阅读
  2. 【C++PCL】处理最小三维

    2024-01-10 18:42:03       58 阅读
  3. PCL 二维(迭代法)

    2024-01-10 18:42:03       28 阅读
  4. 最小二乘法直线 Matlab

    2024-01-10 18:42:03       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-10 18:42:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-10 18:42:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-10 18:42:03       82 阅读
  4. Python语言-面向对象

    2024-01-10 18:42:03       91 阅读

热门阅读

  1. linux 云课堂笔记day2

    2024-01-10 18:42:03       51 阅读
  2. PostgreSQL认证考试PGCA、PGCE、PGCM

    2024-01-10 18:42:03       79 阅读
  3. Elastic Stack学习

    2024-01-10 18:42:03       54 阅读
  4. python类装饰器基础

    2024-01-10 18:42:03       53 阅读
  5. 数据结构-怀化学院期末题(490)

    2024-01-10 18:42:03       53 阅读