Tôi đang cố gắng ghi dữ liệu từ lưới đồng nhất sang tệp XML vtk, để tôi có thể hiển thị nó bằng Paraview. Tôi muốn tập tin đầu ra của tôi chứa hai biến: một vector 3 thành phần và một giá trị vô hướng ở mọi điểm. Tôi đã quản lý để viết tệp .vti, chỉ chứa các vectơ, như vậy:C++ vtk xml writer (vtkImageData) - nhiều biến trong cùng một tập tin vti
#include <vtkVersion.h>
#include <vtkSmartPointer.h>
#include <vtkXMLImageDataWriter.h>
#include <vtkImageData.h>
int main()
{
int nx = 10, ny = 10, nz = 10;
vtkSmartPointer<vtkImageData> imageData =
vtkSmartPointer<vtkImageData>::New();
imageData->SetDimensions(nx, ny, nz);
#if VTK_MAJOR_VERSION <= 5
imageData->SetNumberOfScalarComponents(3);
imageData->SetScalarTypeToDouble();
#else
imageData->AllocateScalars(VTK_DOUBLE, 3);
#endif
for (int k = 0; k < nz; ++k) {
for (int j = 0; j < ny; ++j) {
for (int i = 0; i < nx; ++i) {
double * voxel = static_cast<double*>(imageData->GetScalarPointer(i,j,k));
int coord = i + j * nx + k * nx * ny;
double t = 0.0;
double p = 1.0;
voxel[0] = sin(t) * cos(p);
voxel[1] = sin(t) * sin(p);
voxel[2] = cos(t);
}
}
}
vtkSmartPointer<vtkXMLImageDataWriter> writer =
vtkSmartPointer<vtkXMLImageDataWriter>::New();
writer->SetFileName("test.vti");
#if VTK_MAJOR_VERSION <= 5
writer->SetInputConnection(imageData->GetProducerPort());
#else
writer->SetInputData(imageData);
#endif
writer->Write();
return EXIT_SUCCESS;
}
Làm cách nào để thêm giá trị vô hướng bổ sung vào mọi điểm trên lưới?