VTK C ++ устанавливает точки для vtkStructuredGrid из трех векторов XYZ - PullRequest
0 голосов
/ 25 апреля 2020

В примерах VTK vtkPoints используется для задания координат для структурированной сетки. Обычно это работает как points->InsertNextPoint(i, j, k); structuredGrid->SetPoints(points); Но мои координаты XYZ хранятся в трех разных векторах x, y, z, и я не хочу копировать их, так как это занимает много памяти, как я могу установить координаты для структурированной сетки непосредственно из векторов XYZ без копирование?

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

1 Ответ

1 голос
/ 27 апреля 2020

VTK также поддерживает структуру массивов.

  vtkSOADataArrayTemplate<double>* pointArray = vtkSOADataArrayTemplate<double>::New();
  pointArray->SetNumberOfComponents(3);
  pointArray->SetNumberOfTuples(nbOfPoints);
  pointArray->SetArray(0, XArray, nbOfPoints, false, true);
  pointArray->SetArray(1, YArray, nbOfPoints, false, true);
  pointArray->SetArray(2, ZArray, nbOfPoints, false, true);

  vtkNew<vtkPoints> points;
  points->SetData(pointArray);
  pointArray->Delete();
  VTKGrid->SetPoints(points);
...