45 vtkInformationVector **inputVector,
46 vtkInformationVector *outputVector) {
48 auto quads = vtkPolyData::GetData(inputVector[0]);
49 auto mesh = vtkDataSet::GetData(inputVector[1]);
50 auto output = vtkPolyData::GetData(outputVector);
53 if(triangulation ==
nullptr) {
58 auto inputCells = quads->GetPolys();
59#if VTK_VERSION_NUMBER >= VTK_VERSION_CHECK(9, 6, 1)
60 if(inputCells ==
nullptr || inputCells->GetConnectivityArray() ==
nullptr) {
62 if(inputCells ==
nullptr || inputCells->GetData() ==
nullptr) {
64 this->
printErr(
"Invalid input quadrangle cells");
68 auto inputPoints = quads->GetPoints();
69 auto pointData = quads->GetPointData();
70 if(inputPoints ==
nullptr || inputPoints->GetData() ==
nullptr
71 || pointData ==
nullptr) {
72 this->
printErr(
"Invalid input quadrangle points");
76 auto identifiers = pointData->GetArray(
78 if(identifiers ==
nullptr) {
79 this->
printErr(
"Missing point data array named "
87 inputCells->GetNumberOfCells());
89 inputPoints->GetNumberOfPoints());
95 triangulation->getType(),
96 res = this->execute(*
static_cast<TTK_TT *
>(triangulation->getData())));
99 this->
printWrn(
"Please increase the number of relaxation iterations, of "
100 "subdivision levels or consider another function (higher "
107 vtkNew<vtkCellArray> cells{};
114 output->SetPolys(cells);
116 vtkNew<vtkPoints> points{};
122 output->SetPoints(points);
125 vtkNew<ttkSimplexIdTypeArray> valences{};
126 valences->SetName(
"Valence");
129 output->GetPointData()->AddArray(valences);
131 vtkNew<vtkFloatArray> density{};
132 density->SetName(
"Density");
135 output->GetPointData()->AddArray(density);
137 vtkNew<vtkFloatArray> deformity{};
138 deformity->SetName(
"Deformity");
141 output->GetPointData()->AddArray(deformity);
144 vtkNew<ttkSimplexIdTypeArray> infos{};
145 infos->SetName(
"Type");
148 output->GetPointData()->AddArray(infos);
150 vtkNew<ttkSimplexIdTypeArray> subd{};
151 subd->SetName(
"Subdivision");
154 output->GetPointData()->AddArray(subd);
156 vtkNew<ttkSimplexIdTypeArray> nearestVert{};
160 output->GetPointData()->AddArray(nearestVert);
163 vtkNew<vtkFloatArray> quadArea{};
164 quadArea->SetName(
"Quad Area");
166 output->GetCellData()->AddArray(quadArea);
168 vtkNew<vtkFloatArray> diagsRatio{};
169 diagsRatio->SetName(
"Diagonals Ratio");
172 output->GetCellData()->AddArray(diagsRatio);
174 vtkNew<vtkFloatArray> edgesRatio{};
175 edgesRatio->SetName(
"Edges Ratio");
178 output->GetCellData()->AddArray(edgesRatio);
180 vtkNew<vtkFloatArray> anglesRatio{};
181 anglesRatio->SetName(
"Angles Ratio");
184 output->GetCellData()->AddArray(anglesRatio);
186 vtkNew<vtkFloatArray> hausDist{};
187 hausDist->SetName(
"Hausdorff");
189 output->GetPointData()->AddArray(hausDist);
193 output->GetFieldData()->ShallowCopy(mesh->GetFieldData());