资源简介
采用C++ 切片法计算封闭三维模型(三角形网格模型)的体积。计算速度快,计算准确。
代码片段和文件信息
#include
double Distance(double *a double *b)
{
double o = (a[0] - b[0])*(a[0] - b[0]);
double p = (a[1] - b[1])*(a[1] - b[1]);
double q = (a[2] - b[2])*(a[2] - b[2]);
return o + p + q;
}
double
vol_cut(std::string stlfile)
{
/**********/
std::cout << “进行体积计算...“ << endl;
//读取STL----》reader
vtkSmartPointer reader =
vtkSmartPointer::New();
reader->SetFileName(stlfile.c_str());
reader->Update();
vtkSmartPointer inputPolyData = vtkSmartPointer::New();
inputPolyData = reader->GetOutput();
//创建切割平面
vtkSmartPointer plane = vtkSmartPointer::New();
plane->SetOrigin(inputPolyData->GetCenter());//设置切割平面起点
plane->SetNormal(1 0 0);//设置切割方向为X方向
//得到输入的STL模型的最小坐标
double minBound[3];
minBound[0] = inputPolyData->GetBounds()[0];
minBound[1] = inputPolyData->GetBounds()[2];
minBound[2] = inputPolyData->GetBounds()[4];
std::cout << “ 最小点:“ << minBound[0] << ““ << minBound[1] << ““ << minBound[2] << endl;
//得到输入的STL模型的最小大坐标
double maxBound[3];
maxBound[0] = inputPolyData->GetBounds()[1];
maxBound[1] = inputPolyData->GetBounds()[3];
maxBound[2] = inputPolyData->GetBounds()[5];
std::cout << “ 最大点:“ << maxBound[0] << ““ << maxBound[1] << ““ << maxBound[2] << endl;
//得到输入的STL模型的中心坐标
double center[3];
center[0] = inputPolyData->GetCenter()[0];
center[1] = inputPolyData->GetCe
- 上一篇:C++课程设计 电煤气管理系统
- 下一篇:捷联惯性导航C语言实现
相关资源
- C语言封装的HttpClient接口
- MFC+OpenGL 读取并显示STL三维模型
- 点云压缩代码
- OpenGL_readObj.zip
- PCL与MFC配合编译
- rabbitmq的C++客户端SimpleAmqpClient编译库
- 基于C++的三维模型体素化程序
- 基于PCL的对点云的排序
- MFC的HttpClient的Get和Post方法
- 轻量级C++实现的httpserver和httpclient
- C++ httpclient类
- Kinect2.0+PCL实现点云显示
- PCL点云-RGBD图像ICP迭代最近点之点云配
- PCL点云拼接
- Windows下配置python_pcl全套资料
- ntripclient-c++
- 使用RANSAC提取平面
- Ndt+ICP配准算法亲测可用
- PCL测试程序
- DSS中的RTSPclientLib程序
- 点云PCL三维重建
- HTTPClient
- vtk建立三维模型
- HTTP Client C++实现
- 点云圆柱提取代码
- 基于PCL点云的三角形网格孔洞修补
评论
共有 条评论