Добавить цветовой массив в vtkImageData C ++ - PullRequest
0 голосов
/ 23 апреля 2020

Я новичок ie в VTK, и я пытаюсь понять основы.

Давайте предположим, что мне нужно отобразить трехмерные структурированные данные (vtkImageData), которые имеют: nx = 10, ny = 10, nz = 10 где nx / ny / nz - количество точек по каждому измерению. Для каждой точки (x, y, z) у меня есть значение val(x,y,z). Таким образом, цвет каждого узла определяется val. Как я знаю в C ++, я бы написал:

int main(int argc, char *argv[])
{
// Create an image data
vtkSmartPointer<vtkImageData> imageData =
  vtkSmartPointer<vtkImageData>::New();

// Specify the size of the image data
int nx = 10;
int ny = 10;
int nz = 10;
imageData->SetDimensions(nx,ny,nz);
imageData->SetSpacing(1.0, 1.0, 1.0);
imageData->SetOrigin(0.0, 0.0, 0.0); 

double val[1000];
for (int i = 0; i < 1000; i++){
    data[i] = i;
}

// after that I need to set val-array as color for imageData object

return 0;
}

Как установить val[1000] array в imageData, чтобы цвет каждого узла определялся val? PS Я видел несколько примеров с сайта ВТК, но все еще не решил проблему

С уважением,

kerim

1 Ответ

0 голосов
/ 24 апреля 2020
int main(int argc, char *argv[])
{
// Create an image data
vtkNew<vtkImageData> imageData;

// Specify the size of the image data
int nx = 10;
int ny = 10;
int nz = 10;
imageData->SetDimensions(nx,ny,nz);
imageData->SetSpacing(1.0, 1.0, 1.0);
imageData->SetOrigin(0.0, 0.0, 0.0); 

vtkNew<vtkDoubleArray> array;
array->SetName("Name");
double val[1000];
for (int i = 0; i < 1000; i++){
    array->InsertNextValue(i);
}

image->GetPointData()->AddArray(array);

return 0;
}
...