资讯详情

VTK 设置点的标量属性

#include <vtkSmartPointer.h> #include <vtkFeatureEdges.h> #include <vtkPolyData.h> #include <vtkDiskSource.h> #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkRenderWindow.h> #include <vtkRenderer.h> #include <vtkRenderWindowInteractor.h> #include <vtkOBJReader.h> #include <vtkOBJWriter.h>  #include <vtkSmartPointer.h> #include <vtkPoints.h> #include <vtkPolygon.h> #include <vtkTriangle.h> #include <vtkCellArray.h> #include <vtkPolyData.h> #include <vtkUnsignedCharArray.h> #include <vtkPointData.h> #include <vtkCellData.h>  #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkRenderer.h> #include <vtkRenderWindow.h> #include <vtkRenderWindowInteractor.h>  #include <vtkSmartPointer.h> #include <vtkPlaneSource.h> #include <vtkPolyData.h> #include <vtkFloatArray.h> #include <vtkCellData.h> #include <vtkLookupTable.h> #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkRenderer.h> #include <vtkRenderWindow.h> #include <vtkRenderWindowInteractor.h> #include <vtkStripper.h> #include <vtkCleanPolyData.h> #include <vtkDoubleArray.h> #include <vtkMergePoints.h>  #include <iostream> #include <fstream> #include <ostream> #include <iomanip> using namespace std;  #include <vtkAutoInit.h>   VTK_MODULE_INIT(vtkRenderingOpenGL2); VTK_MODULE_INIT(vtkInteractionStyle); VTK_MODULE_INIT(vtkRenderingFreeType);  typedef vtkSmartPointer<vtkPoints> Vertices;  int main() {  //加载数据  std::string target_filename = "D:\\tooth_tata_lvsilin\\IOS_single_o\\IOS11_rb.obj";  vtkSmartPointer<vtkOBJReader> target_reader = vtkSmartPointer<vtkOBJReader>::New();  target_reader->SetFileName(target_filename.c_str());  target_reader->Update();  vtkSmartPointer<vtkPolyData> grid0 = target_reader->GetOutput();   // 提取边界边  vtkSmartPointer<vtkFeatureEdges> boundaryEdges = vtkSmartPointer<vtkFeatureEdges>::New();  boundaryEdges->SetInputData(grid0);  boundaryEdges->BoundaryEdgesOn();  boundaryEdges->FeatureEdgesOff();  boundaryEdges->ManifoldEdgesOff();  boundaryEdges->NonManifoldEdgesOff();  boundaryEdges->Update();    去除边  //vtkSmartPointer<vtkStripper> stripper = vtkSmartPointer<vtkStripper>::New();  //stripper->SetInputConnection(boundaryEdges->GetOutputPort());  //stripper->JoinContiguousSegmentsOn();  //stripper->Update();    去除重合点  //vtkSmartPointer<vtkCleanPolyData> cleanPolyData = vtkSmartPointer<vtkCleanPolyData>::New();  //cleanPolyData->SetInputConnection(stripper->GetOutputPort());  //cleanPolyData->ConvertPolysToLinesOff();  //cleanPolyData->ConvertStripsToPolysOff();  //cleanPolyData->Update();   vtkSmartPointer<vtkPolyData> grid = boundaryEdges->GetOutput();   获取边界点的坐标  //vtkSmartPointer<vtkPoints> pts = vtkSmartPointer<vtkPoints>::New();  //vtkPoints *pt = boundaryEdges->GetOutput()->GetPoints();  //for (int i = 0; i < pt->GetNumberOfPoints();   i) {  // double *p = pt->GetPoint(i);  // pts->InsertNextPoint(p);  // //std::cout << p[0] << " "<< p[1]<<" "<< p[2]<<std::endl;///边界点坐标  //}   /*vtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();  polyData->SetPoints(pts);*/  //polyData->SetVerts(vertices);   //定义一个标量  vtkSmartPointer<vtkDoubleArray> colors = vtkSmartPointer<vtkDoubleArray>::New();  for (int i = 0; i < grid->GetNumberOfPoints(); i  )  {   colors->SetNumberOfValues(grid->GetNumberOfPoints());   colors->SetValue(i, 255);   grid->GetPointData()->SetScalars(colors);  }   //定义标量,添加点数据的标量值,标量值为1  vtkSmartPointer<vtkDoubleArray> colors0 = vtkSmartPointer<vtkDoubleArray>::New();  for (int i = 0; i < grid0->GetNumberOfPoints(); i  )  {   colors0->SetNumberOfValues(grid0->GetNumberOfPoints());   colors0->SetValue(i, 1);   //首先获取多边形数据的点数据指针,然后设置该点数据的标量属性值   grid0->GetPointData()->SetScalars(colors0);  }    for (int i = 0; i < grid->GetNumberOfPoints(); i  )  {   double weight = vtkDoubleArray::SafeDownCast(grid->GetPointData()->GetScalars())->GetValue(i);///输出索引号为i点的标量值   if (weight == 255) {    vtkIdType point_ind = i;    std::cout << "double weight: " << point_ind << std::endl;    }  }   //vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();  //mapper->SetInputData(grid);  //mapper->SetScalarRange(0, 5);  //mapper->SetLookupTable(lut);   //vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::Ne();
	//actor->SetMapper(mapper);
	actor->GetProperty()->SetPointSize(3);

	//vtkSmartPointer<vtkRenderer> render = vtkSmartPointer<vtkRenderer>::New();
	//render->AddActor(actor);
	//render->SetBackground(0.0, 0.0, 0.0);

	//vtkSmartPointer<vtkRenderWindow> rw = vtkSmartPointer<vtkRenderWindow>::New();
	//rw->AddRenderer(render);
	//rw->SetSize(320, 320);

	//vtkSmartPointer<vtkRenderWindowInteractor> rwi = vtkSmartPointer<vtkRenderWindowInteractor>::New();
	//rwi->SetRenderWindow(rw);
	//rwi->Start();

	return 0;

}

标签: rwi电阻br4x121rok

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台