当前位置:   article > 正文

VTK—vtkStructuredGrid提取维度面数据

VTK—vtkStructuredGrid提取维度面数据


1.在VTK自带的vtkStructuredGrid数据文件combq.bin和combxyz.bin

2.文件读取代码如下:

  1. //读取数据文件
  2. Create(vtkMultiBlockPLOT3DReader, reader);
  3. reader->SetXYZFileName("G:/Temp/vtkTest/combxyz.bin");
  4. reader->SetQFileName("G:/Temp/vtkTest/combq.bin");
  5. reader->SetScalarFunctionNumber(100);//100代表密度数据
  6. reader->SetVectorFunctionNumber(202);//202代表冲量数据
  7. reader->Update();
  8. vtkStructuredGrid *object = (vtkStructuredGrid *)reader->GetOutput()->GetBlock(0);

3.获得一个vtkStructuredGrid数据,带有标量数据和矢量数据,下面的代码提取一个维度面

  1. //提取面
  2. Create(vtkStructuredGridGeometryFilter, plane);
  3. plane->SetInputData(object);
  4. plane->SetExtent(0, 100, 0, 100, 7, 7);

数据的实际维度是57 33 2,可以用下面的代码查看

  1. int extends[6]={0};
  2. object->GetExtent(extends);

这里维度0 100 0 100 7 7,表示提取Z维度7这个面,XY维度数据设置大了没事,会自动裁剪。对于不知道数据维度的数据,就要设置一个大点的值。从下图可以明显看出Z维度7的含义。

4.将从文件中提取的数据保存到txt文件中,观察一下数据有哪些

  1. Create(vtkStructuredGridWriter,writer);
  2. writer->SetInputData(object);
  3. writer->SetFileName("data.txt");
  4. writer->Write();

4.1 文件开头如下,数据点的数据量就是维数的乘积。

4.2 搜索 POINT_DATA来到点数据

4.3 简单计算一下就能明白上面是数据点位,下面是数据标量值。

5.完整代码,数据文件已绑定上传

  1. #include<vtkProperty.h>
  2. #include<vtkAxesActor.h>
  3. #include<vtkLookupTable.h>
  4. #include<vtkDataSetMapper.h>
  5. #include<vtkStructuredGrid.h>
  6. #include<vtkMultiBlockDataSet.h>
  7. #include<vtkStructuredGridWriter.h>
  8. #include<vtkMultiBlockPLOT3DReader.h>
  9. #include<vtkOrientationMarkerWidget.h>
  10. #include<vtkStructuredGridGeometryFilter.h>
  11. #include<vtkNew.h>
  12. #include<vtkRenderer.h>
  13. #include<vtkAutoInit.h>
  14. #include<vtkRenderWindow.h>
  15. #include<vtkPolyDataMapper.h>
  16. #include<vtkRenderWindowInteractor.h>
  17. VTK_MODULE_INIT(vtkRenderingOpenGL2)
  18. VTK_MODULE_INIT(vtkInteractionStyle)
  19. VTK_MODULE_INIT(vtkRenderingFreeType)
  20. #define Create(type,name) vtkNew<type> name
  21. int main()
  22. {
  23. //读取数据文件
  24. Create(vtkMultiBlockPLOT3DReader, reader);
  25. reader->SetXYZFileName("G:/Temp/vtkTest/combxyz.bin");
  26. reader->SetQFileName("G:/Temp/vtkTest/combq.bin");
  27. reader->SetScalarFunctionNumber(100);//100代表密度数据
  28. reader->SetVectorFunctionNumber(202);//202代表冲量数据
  29. reader->Update();
  30. vtkStructuredGrid *object = (vtkStructuredGrid *)reader->GetOutput()->GetBlock(0);
  31. Create(vtkStructuredGridWriter, writer);
  32. writer->SetInputData(object);
  33. writer->SetFileName("data.txt");
  34. writer->Write();
  35. int extends[6] = {0};
  36. object->GetExtent(extends);
  37. //提取面
  38. Create(vtkStructuredGridGeometryFilter, plane);
  39. plane->SetInputData(object);
  40. plane->SetExtent(0, 100, 0, 100, 7, 7);
  41. //默认的颜色表
  42. Create(vtkLookupTable, look);
  43. look->SetNumberOfColors(256);
  44. look->Build();
  45. //可视化面
  46. Create(vtkPolyDataMapper, planeMapper);
  47. planeMapper->SetLookupTable(look);
  48. planeMapper->SetInputConnection(plane->GetOutputPort());
  49. planeMapper->SetScalarRange(object->GetScalarRange());
  50. Create(vtkActor, planeActor);
  51. planeActor->SetMapper(planeMapper);
  52. //可视化整个数据
  53. Create(vtkDataSetMapper, gridMapper);
  54. gridMapper->SetInputData(object);
  55. Create(vtkActor, gridActor);
  56. gridActor->SetMapper(gridMapper);
  57. gridActor->GetProperty()->SetEdgeVisibility(true);
  58. gridActor->GetProperty()->SetRepresentationToWireframe();
  59. Create(vtkRenderer, render);
  60. render->AddActor(planeActor);
  61. render->AddActor(gridActor);
  62. Create(vtkRenderWindow, window);
  63. window->AddRenderer(render);
  64. Create(vtkRenderWindowInteractor, inter);
  65. inter->SetRenderWindow(window);
  66. //坐标系显示
  67. Create(vtkAxesActor, axes);
  68. Create(vtkOrientationMarkerWidget, widget);
  69. widget->SetOrientationMarker(axes);
  70. widget->SetInteractor(inter);
  71. widget->SetEnabled(true);
  72. widget->InteractiveOn();
  73. render->ResetCamera();
  74. inter->Start();
  75. return 0;
  76. }

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/996047
推荐阅读
相关标签
  

闽ICP备14008679号