开发环境:
- Windows 11 家庭中文版
- Microsoft Visual Studio Community 2019
- VTK-9.3.0.rc0
- vtk-example
demo解决问题:计算结构化数据集范围内给定位置的单元格 ID
关键点:
- vtkImageData对象,表示一个三维的像素网格。
- grid->SetSpacing(1, 1, 1);设置构成数据集的立方体单元格的间距(宽、高、长)组成数据集。
- 在提供的代码中,ComputeCellIdForExtent方法用于计算网格中每个像素的单元格 ID。然后将每个像素位置的单元格 ID打印出来。
prj name: CellIdFromGridCoordinates
#include <vtkImageData.h>
#include <vtkNew.h>
#include <vtkStructuredData.h>int main(int, char*[])
{vtkNew<vtkImageData> grid;//vtkImageData对象,表示一个三维的像素网格。grid->SetOrigin(0, 0, 0);unsigned int numVoxelsPerDimension =2; // the number of voxels in each dimensiongrid->SetSpacing(1, 1, 1);// * 设置构成数据集的立方体单元格的间距(宽、高、长)组成数据集。int extent[6];extent[0] = 0;extent[1] = numVoxelsPerDimension;extent[2] = 0;extent[3] = numVoxelsPerDimension;extent[4] = 0;extent[5] = numVoxelsPerDimension;grid->SetExtent(extent);grid->AllocateScalars(VTK_INT, 1);for (unsigned int i = 0; i < numVoxelsPerDimension; ++i){for (unsigned int j = 0; j < numVoxelsPerDimension; ++j){for (unsigned int k = 0; k < numVoxelsPerDimension; ++k){int pos[3];pos[0] = i;pos[1] = j;pos[2] = k;//用于计算结构化数据集范围内给定位置的单元格 ID。单元格 ID 是数据集中单元格的唯一标识符,用于访问和操作与该单元格相关联的数据。//在提供的代码中,ComputeCellIdForExtent方法用于计算网格中每个像素的单元格 ID。然后将每个像素位置的单元格 ID打印出来。vtkIdType id = vtkStructuredData::ComputeCellIdForExtent(extent, pos);std::cout << "Cell " << i << " " << j << " " << k << " has id : " << id<< std::endl;}}}return EXIT_SUCCESS;
}