资源简介

采用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

评论

共有 条评论