Advertisement
Ta7a99

Untitled

Jan 6th, 2022
860
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.59 KB | None | 0 0
  1. vtkNew<vtkDoubleArray> xArray;
  2.     xArray->SetNumberOfComponents(1);
  3.     xArray->SetName("x");
  4.  
  5.     vtkNew<vtkDoubleArray> yArray;
  6.     yArray->SetNumberOfComponents(1);
  7.     yArray->SetName("y");
  8.  
  9.     vtkNew<vtkDoubleArray> zArray;
  10.     zArray->SetNumberOfComponents(1);
  11.     zArray->SetName("z");
  12.     vtkPolyData * polydata = reader->GetOutput();
  13.  
  14.         for (vtkIdType i = 0; i < polydata->GetNumberOfPoints(); i++)
  15.         {
  16.             double p[3];
  17.  
  18.             polydata->GetPoint(i, p);
  19.  
  20.             xArray->InsertNextValue(p[0]);
  21.             yArray->InsertNextValue(p[1]);
  22.             zArray->InsertNextValue(p[2]);
  23.         }
  24.  
  25.     vtkNew<vtkTable> datasetTable;
  26.     datasetTable->AddColumn(xArray);
  27.     datasetTable->AddColumn(yArray);
  28.     datasetTable->AddColumn(zArray);
  29.  
  30.     vtkNew<vtkPCAStatistics> pcaStatistics;
  31.     pcaStatistics->SetInputData(vtkStatisticsAlgorithm::INPUT_DATA, datasetTable);
  32.  
  33.     pcaStatistics->SetColumnStatus("x", 1);
  34.     pcaStatistics->SetColumnStatus("y", 1);
  35.     pcaStatistics->SetColumnStatus("z", 1);
  36.  
  37.     pcaStatistics->RequestSelectedColumns();
  38.     pcaStatistics->SetDeriveOption(true);
  39.     pcaStatistics->Update();
  40.  
  41.     vtkNew<vtkDoubleArray> eigenvalues;
  42.     pcaStatistics->GetEigenvalues(eigenvalues);
  43.  
  44.     vtkNew<vtkDoubleArray> eigenvectors;
  45.  
  46.     pcaStatistics->GetEigenvectors(eigenvectors);
  47.     vtkNew<vtkDoubleArray> evec1;
  48.     pcaStatistics->GetEigenvector(0, evec1);
  49.  
  50.     vtkNew<vtkDoubleArray> evec2;
  51.     pcaStatistics->GetEigenvector(1, evec2);
  52.  
  53.  
  54.     vtkNew<vtkDoubleArray> evec3;
  55.     pcaStatistics->GetEigenvector(2, evec3);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement