VTK/Examples/Cxx/Utilities/UnknownLengthArrayOfVectors
From KitwarePublic
This example creates a VTK style float array of vectors. This can be easily interchanged with vtkIntArray, vtkDoubleArray, etc.
The only difference between this example and the KnownLengthArrayOfVectors example is that SetNumberOfValues() is not called, and SetTuple() is replaced by InsertNextTuple().
VectorArrayUnknownLength.cxx
#include <vtkSmartPointer.h> #include <vtkFloatArray.h> int main(int, char *[]) { vtkSmartPointer<vtkFloatArray> distances = vtkSmartPointer<vtkFloatArray>::New(); distances->SetName("Distances"); distances->SetNumberOfComponents(3); //set values for(vtkIdType i = 0; i < 5; i++) { float tuple[3]; tuple[0] = (float)i + 0.1; tuple[1] = (float)i + 0.2; tuple[2] = (float)i + 0.3; //this will allocate memory as necessary distances->InsertNextTuple(tuple); } //get values for(vtkIdType i = 0; i < distances->GetNumberOfTuples(); i++) { double d[3]; distances->GetTuple(i, d); std::cout << d[0] << " " << d[1] << " " << d[2] << std::endl; } return EXIT_SUCCESS; }
CMakeLists.txt
cmake_minimum_required(VERSION 2.6) PROJECT(Array) FIND_PACKAGE(VTK REQUIRED) INCLUDE(${VTK_USE_FILE}) ADD_EXECUTABLE(VectorArrayUnknownLength VectorArrayUnknownLength.cxx) TARGET_LINK_LIBRARIES(VectorArrayUnknownLength vtkHybrid)