#include "angles_filter.h" #include "aspect_ratio_filter.h" #include "dihedral_angles_filter.h" #include "external_points_filter.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int main(int argc, char **argv) { if (argc != 2) { std::cerr << "Usage: " << argv[0] << " FILE.vtk" << std::endl; return EXIT_FAILURE; } /* Reader */ vtkNew reader; reader->SetFileName(argv[1]); /* Angles filter */ vtkNew anglesFilter; anglesFilter->SetInputConnection(reader->GetOutputPort()); /* Display angles in console. */ // anglesFilter->Update(); // vtkUnstructuredGrid *grid = anglesFilter->GetOutput(); // auto *angles = grid->GetCellData()->GetArray("angles"); // for (ssize_t i = 0; i < angles->GetNumberOfTuples(); i++) { // std::cerr << "cell " << i << ": "; // for (ssize_t j = 0; j < angles->GetNumberOfComponents(); j++) { // std::cerr << angles->GetTuple(i)[j] << ", "; // } // std::cerr << "\b\b \n"; // } /* Aspect ratio */ vtkNew aspectRatioFilter; aspectRatioFilter->SetInputConnection(anglesFilter->GetOutputPort()); /* Display aspect ratios in console. */ // aspectRatioFilter->Update(); // grid = aspectRatioFilter->GetOutput(); // auto *aspectRatios = grid->GetCellData()->GetArray("aspect_ratio"); // for (ssize_t i = 0; i < aspectRatios->GetNumberOfTuples(); i++) { // std::cerr << "cell " << i << ": " // << aspectRatios->GetTuple1(i) << "\n"; // } /* Dihedral angles filter */ vtkNew dihedralAnglesFilter; dihedralAnglesFilter->SetInputConnection(aspectRatioFilter->GetOutputPort()); /* Display dihedral angles in console. */ // dihedralAnglesFilter->Update(); // grid = dihedralAnglesFilter->GetOutput(); // auto dihedralAngles = grid->GetCellData()->GetArray("dihedral_angles"); // for (vtkIdType i = 0; i < grid->GetNumberOfCells(); i++) { // std::cerr << "dihedral angles "; // for (vtkIdType j = 0; j < 6; j++) { // std::cerr << dihedralAngles->GetTuple(i)[j] << ", "; // } // std::cerr << "\b\b\n"; // } /* External faces filter. */ // vtkNew externalFacesFilter; // externalFacesFilter->DebugOn(); // externalFacesFilter->SetInputConnection(dihedralAnglesFilter->GetOutputPort()); /* External points filter. */ vtkNew externalPointsFilter; externalPointsFilter->SetInputConnection(dihedralAnglesFilter->GetOutputPort()); vtkNew writer; writer->SetInputConnection(externalPointsFilter->GetOutputPort()); writer->SetFileTypeToASCII(); writer->SetFileName("out.vtk"); writer->Write(); // /* Volume rendering properties */ // vtkNew volumeMapper; // volumeMapper->SetInputConnection(externalPointsFilter->GetOutputPort()); // vtkNew volume; // volume->SetMapper(volumeMapper); // vtkNew transferFunction; // transferFunction->AddPoint(-1, 0); // transferFunction->AddPoint(1, 1); // volume->GetProperty()->SetScalarOpacity(transferFunction); // volume->GetProperty()->SetColor(transferFunction); // /* Renderer */ // vtkNew colors; // std::array bkg{{26, 51, 102, 255}}; // colors->SetColor("BkgColor", bkg.data()); // vtkNew renderer; // renderer->AddVolume(volume); // renderer->SetBackground(colors->GetColor3d("BkgColor").GetData()); // renderer->ResetCamera(); // renderer->GetActiveCamera()->Zoom(1.5); // vtkNew renderWindow; // renderWindow->SetSize(300, 300); // renderWindow->AddRenderer(renderer); // renderWindow->SetWindowName("PFE"); // vtkNew renderWindowInteractor; // renderWindowInteractor->SetRenderWindow(renderWindow); // renderWindow->Render(); // renderWindowInteractor->Start(); return EXIT_SUCCESS; }