Установить произвольную ориентацию vtkImageData - PullRequest
0 голосов
/ 01 мая 2020

Рассмотрим плоскую поверхность в области XYZ. Нет необходимости иметь какое-либо постоянное значение оси и можно ориентировать в любом направлении. Поэтому мне нужно создать плоскую vtkImageData (она не имеет толщины, это плоская поверхность) из чего-то вроде структурированной сетки данных, где каждый узел имеет регулярный размер шага, но он не ориентирован по какому-либо измерению:

// here are 4 points like a vertical slice rotated in XY plane by 45 degree
x[] = {0, 1, 0, 1};
y[] = {0, 1, 0, 1};
z[] = {0, 0, 1, 1};

Я нашел это обсуждение и vtkImageData :: SetDirectionMatrix () , но я не могу понять, как это реализовать. Может кто-нибудь привести пример, как это сделать.

Я пытаюсь сделать следующее:

double dirMtxTmp[3][3] = {{0.5, 0.5, 0},{-0.5, 0.5, 0},{0, 0, 1}};
vtkSmartPointer<vtkMatrix3x3> dirMtx =
        vtkSmartPointer<vtkMatrix3x3>::New();
for (int j = 0; j < 3; j++){
    for (int i = 0; i < 3; i++){
        dirMtx->SetElement(i,j,dirMtxTmp[j][i]);
    }
}
imageData->SetDirectionMatrix(dirMtx);

Но это не работает .. Я получаю результат, показанный на картинке , Тот же результат я получаю в случае, когда я не устанавливаю матрицу направления ... LINK_TO_THE_PICTURE

С уважением, керим

...