Compare commits

...

2 Commits

Author SHA1 Message Date
5ad9c70825 specify aspect ratio filter input requirements 2022-02-19 00:39:00 +01:00
6178f294cd remove unnecessary implementation detail 2022-02-19 00:13:21 +01:00
2 changed files with 15 additions and 4 deletions

View File

@ -1,18 +1,30 @@
#include "aspect_ratio_filter.h" #include "aspect_ratio_filter.h"
#include "vtkDataObject.h"
#include <vtkUnstructuredGrid.h> #include <vtkUnstructuredGrid.h>
#include <vtkPointData.h> #include <vtkPointData.h>
#include <vtkCellData.h> #include <vtkCellData.h>
#include <vtkDoubleArray.h> #include <vtkDoubleArray.h>
#include <vtkCellIterator.h> #include <vtkCellIterator.h>
#include <vtkInformation.h>
#include <vtkInformationVector.h>
vtkStandardNewMacro(AspectRatioFilter); vtkStandardNewMacro(AspectRatioFilter);
// Ensure there is an "angles", 12 floats tuple array in the DataCell.
int AspectRatioFilter::FillInputPortInformation(int port, vtkInformation *info) { int AspectRatioFilter::FillInputPortInformation(int port, vtkInformation *info) {
vtkUnstructuredGridAlgorithm::FillInputPortInformation(port, info); vtkUnstructuredGridAlgorithm::FillInputPortInformation(port, info);
// Ensure there is an "angles" array in the DataCell. vtkNew<vtkInformation> anglesField;
anglesField->Set(vtkDataObject::FIELD_ASSOCIATION(), vtkDataObject::FIELD_ASSOCIATION_CELLS);
anglesField->Set(vtkDataObject::FIELD_NAME(), "angles");
anglesField->Set(vtkDataObject::FIELD_NUMBER_OF_COMPONENTS(), 12);
anglesField->Set(vtkDataObject::FIELD_ARRAY_TYPE(), VTK_DOUBLE);
vtkNew<vtkInformationVector> fields;
fields->Append(anglesField);
info->Set(vtkAlgorithm::INPUT_REQUIRED_FIELDS(), fields);
return 1; return 1;
} }

View File

@ -14,7 +14,6 @@
#include <vtkOpenGLProjectedTetrahedraMapper.h> #include <vtkOpenGLProjectedTetrahedraMapper.h>
#include <vtkUnstructuredGridReader.h> #include <vtkUnstructuredGridReader.h>
#include <vtkPiecewiseFunction.h> #include <vtkPiecewiseFunction.h>
#include <vtkDoubleArray.h>
#include <array> #include <array>
#include <vector> #include <vector>
@ -60,7 +59,7 @@ int main(int argc, char **argv) {
/* Display angles in console. */ /* Display angles in console. */
anglesFilter->Update(); anglesFilter->Update();
vtkUnstructuredGrid *grid = anglesFilter->GetOutput(); vtkUnstructuredGrid *grid = anglesFilter->GetOutput();
auto *angles = vtkDoubleArray::SafeDownCast(grid->GetCellData()->GetArray("angles")); auto *angles = grid->GetCellData()->GetArray("angles");
for (ssize_t i = 0; i < angles->GetNumberOfTuples(); i++) { for (ssize_t i = 0; i < angles->GetNumberOfTuples(); i++) {
std::cout << "cell " << i << ": "; std::cout << "cell " << i << ": ";
for (ssize_t j = 0; j < angles->GetNumberOfComponents(); j++) { for (ssize_t j = 0; j < angles->GetNumberOfComponents(); j++) {
@ -76,7 +75,7 @@ int main(int argc, char **argv) {
/* Display aspect ratios in console. */ /* Display aspect ratios in console. */
aspectRatioFilter->Update(); aspectRatioFilter->Update();
grid = aspectRatioFilter->GetOutput(); grid = aspectRatioFilter->GetOutput();
auto *aspectRatios = vtkDoubleArray::SafeDownCast(grid->GetCellData()->GetArray("aspect_ratio")); auto *aspectRatios = grid->GetCellData()->GetArray("aspect_ratio");
for (ssize_t i = 0; i < aspectRatios->GetNumberOfTuples(); i++) { for (ssize_t i = 0; i < aspectRatios->GetNumberOfTuples(); i++) {
std::cout << "cell " << i << ": " std::cout << "cell " << i << ": "
<< aspectRatios->GetTuple1(i) << "\n"; << aspectRatios->GetTuple1(i) << "\n";