在 CloudCompare 的代码结构中,CCCoreLib
(CloudCompare Core Library)是 核心计算库,主要用于 几何计算、点云处理、网格操作 等底层算法实现。
该模块提供了 数学工具、点云处理、最近邻搜索、网格算法、配准、分割、特征计算 等核心功能,并且可以独立于 CloudCompare 主程序使用。
1. CCCoreLib 模块的主要内容
CCCoreLib
主要包含以下几个核心部分:
类别 | 功能描述 |
---|---|
数学库 | 矩阵、向量、变换、数值优化 |
点云处理 | 过滤、重采样、特征计算 |
网格处理 | 计算法向量、重建曲面 |
最近邻搜索 | Kd-tree, Octree |
配准算法 | ICP (Iterative Closest Point) |
分割算法 | 形态学操作、平面提取 |
几何计算 | 曲率计算、凸包、距离计算 |
2. 关键模块解析
(1)数学库
提供基础数学运算,包括 矩阵、向量、变换、数值优化 等。
🔹 CCCoreLib::Matrix3x3
三维旋转矩阵类
CCCoreLib::Matrix3x3 R;
R.toIdentity(); // 设为单位矩阵
R.setValues(1,0,0, 0,1,0, 0,0,1); // 直接赋值
🔹 CCCoreLib::CCVector3
三维向量类
CCCoreLib::CCVector3 v1(1.0, 2.0, 3.0);
CCCoreLib::CCVector3 v2 = v1 + CCVector3(0.5, -0.5, 1.0);
float dotProduct = v1.dot(v2); // 计算点积
🔹 CCCoreLib::SquareMatrix
方阵计算
CCCoreLib::SquareMatrix<4> mat;
mat.setIdentity(); // 设为单位矩阵
(2)点云处理
🔹 CCCoreLib::PointCloud
PointCloud
继承自 GenericIndexedCloudPersist
,用于存储和操作点云数据。
CCCoreLib::PointCloud cloud;
cloud.reserve(1000); // 预分配 1000 个点
cloud.addPoint(CCCoreLib::CCVector3(1.0, 2.0, 3.0)); // 添加点
🔹 CCCoreLib::Delaunay2dMesh
基于 Delaunay 三角剖分 的 2D 网格化算法。
CCCoreLib::Delaunay2dMesh mesh;
mesh.buildMeshFrom2DCloud(&cloud);
(3)最近邻搜索
🔹 CCCoreLib::KdTree
基于 Kd-Tree 的最近邻搜索(适用于 点云数据)。
CCCoreLib::KdTree kdTree;
kdTree.build(&cloud);
std::vector<unsigned> neighbors;
kdTree.findNearestNeighbors(CCCoreLib::CCVector3(1,2,3), 5, neighbors);
🔹 CCCoreLib::DgmOctree
八叉树索引,用于点云加速搜索。
CCCoreLib::DgmOctree octree;
octree.build(&cloud);
(4)配准算法
🔹 CCCoreLib::ICPRegistrationTools
ICP(迭代最近点)算法,用于点云配准。
CCCoreLib::ICPRegistrationTools::Parameters params;
params.maxIterationCount = 50;
params.finalOverlapRatio = 0.8;
CCCoreLib::ICPRegistrationTools::Result result;
CCCoreLib::ICPRegistrationTools::Register(&sourceCloud, &targetCloud, params, result);
(5)几何计算
🔹 CCCoreLib::DistanceComputationTools
计算 点到点/点到面的距离。
double dist = CCCoreLib::DistanceComputationTools::ComputePointToPointDistance(p1, p2);
🔹 CCCoreLib::CurvatureTools
计算点云曲率(高斯曲率、均方曲率)。
double curvature = CCCoreLib::CurvatureTools::ComputeMeanCurvature(&cloud, 10);
(6)分割算法
🔹 CCCoreLib::GeometricalAnalysisTools
基于法向量和曲率的分割。
CCCoreLib::GeometricalAnalysisTools::ComputeBestFitPlane(&cloud, planeEquation);
🔹 CCCoreLib::ScalarFieldTools
标量场运算(最大值、最小值、均值)。
double maxVal = CCCoreLib::ScalarFieldTools::computeMax(&scalarField);
3. 总结
CCCoreLib
是 CloudCompare 核心计算库,提供:
- 点云处理(过滤、特征计算)
- 网格处理(曲面重建)
- 最近邻搜索(Kd-Tree、Octree)
- 配准算法(ICP)
- 几何计算(曲率、距离计算)
- 分割算法(平面提取)
适用于 大规模点云处理、配准、重建、特征提取 等任务,是 CloudCompare 核心数学引擎!