网站后台的验证码,网站热区图,免费网站链接,做盗版影视网站违法吗文章目录 研究方向:如何判断?又如何纠正?如何判断?Demo实现:先判断一个遍历相关文件夹下的所有病例如何纠正?Demo相关知识点研究方向:如何判断?又如何纠正?
如何判断? 当然,我们不能以坐标的正负来判断 我们看到这个Bounding Box里面有stl模型的xyz三轴方向的最大值与最… 文章目录 研究方向:如何判断?又如何纠正?如何判断?Demo实现:先判断一个遍历相关文件夹下的所有病例 如何纠正?Demo 相关知识点 研究方向:如何判断?又如何纠正?
如何判断? 当然,我们不能以坐标的正负来判断 我们看到这个Bounding Box里面有stl模型的xyz三轴方向的最大值与最小值,如果是像左图那样,最明显的就是z轴的最大值是负数,他的范围是[-21.277,-3.4129], 然后,他的y轴范围是:[-21.0321,27.4901], 正常情况下,y轴的{max-min}的绝对值应该是z轴的{max-min}的绝对值 也就是说:正常情况下,y轴的长度短于z轴的长度.(这个才是我们用来判断的标准) Demo实现:
我们可以遍历某个文件的所有上颌的stl文件,按照上面的逻辑进行判断
先判断一个
const char* stlFilePath = "./upper.stl";
// 创建STL文件读取器
vtkSmartPointervtkSTLReader reader =
vtkSmartPointervtkSTLReader::New();
reader-SetFileName(stlFilePath);
reader-Update();// 获取STL数据
vtkSmartPointervtkPolyData inputPolyData = reader-GetOutput();// Compute the bounding box
double bounds[6];
inputPolyData-GetBounds(bounds);// Bounds are in the form [xmin, xmax, ymin, ymax, zmin, zmax]
double xmin = bounds[0];
double xmax = bounds[1];
double ymin = bounds[2];
double ymax = bounds[3];
double zmin = bounds[4];
double zmax = bounds[5];// Calculate the corner points
double corners[8][3] = {{xmin, ymin, zmin},{xmax, ymin, zmin},{xmin, ymax, zmin},{xmax, ymax, zmin},{xmin, ymin, zmax},{xmax, ymin, zmax},{xmin, ymax, zmax},{xmax, ymax, zmax}
};
cout "xmin:" xmin ",max:" xmax ",ymin:" ymin ",ymax:" ymax ",zmin:" zmin ",zmax" zmax endl;
//y轴长度
double Ylen = ymax - ymin;//z轴长度
double Zlen = zmax - zmin;
if (Ylen Zlen) {//异常;cout "此病例坐标轴异常" endl;
}// 创建Mapper和Actor
vtkSmartPointervtkPolyDataMapper mapper = vtkSmartPointervtkPolyDataMapper::New();
mapper-SetInputData(inputPolyData);vtkSmartPointervtkActor actor =
vtkSmartPointervtkActor::New();
actor-SetMapper(mapper);// 创建渲染器和窗口
vtkSmartPointervtkRenderer renderer =
vtkSmartPointervtkRenderer::New();
renderer-AddActor(actor);vtkSmartPointervtkRenderWindow renderWindow =
vtkSmartPointervtkRenderWindow::New();
renderWindow-AddRenderer(renderer);vtkSmartPointervtkRenderWindowInteractor interactor =
vtkSmartPointervtkRenderWindowInteractor::New();
interactor-SetRenderWindow(renderWindow);//调整相机位置,调整显示范围
renderer-ResetCamera();//鼠标移动方式
vtkNewvtkInteractorStyleTrackballCamera style;
interactor-SetInteractorStyle(style);//设置坐标轴
vtkSmartPointervtkAxesActor axes = vtkSmartPointervtkAxesActor