資源簡介
采用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?<“進行體積計算...“?< //讀取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?<“??最小點:“?< //得到輸入的STL模型的最小大坐標
double?maxBound[3];
maxBound[0]?=?inputPolyData->GetBounds()[1];
maxBound[1]?=?inputPolyData->GetBounds()[3];
maxBound[2]?=?inputPolyData->GetBounds()[5];
std::cout?<“??最大點:“?< //得到輸入的STL模型的中心坐標
double?center[3];
center[0]?=?inputPolyData->GetCenter()[0];
center[1]?=?inputPolyData->GetCe
- 上一篇:C++課程設計 電煤氣管理系統
- 下一篇:捷聯慣性導航C語言實現
評論
共有 條評論