VTK/Array Refactoring

From KitwarePublic
< VTK
Revision as of 14:42, 10 April 2009 by Tshead (talk | contribs) (New page: == Overview == Now that we have [http://kitware.com/InfovisWiki/index.php/N-Way_Array_Data_Structures N-Way Array Data Structures], it would be ideal if we could use them as attributes in...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Overview

Now that we have N-Way Array Data Structures, it would be ideal if we could use them as attributes in data objects. This will likely involve some tricky work to somehow merge the vtkAbstractArray- and vtkArray- hierarchies.

Recent Work

  • Merged vtkFactoredArrayData / vtkFactoredArrayDataAlgorithm into vtkArrayData / vtkArrayDataAlgorithm.
  • Added vtkArray::GetName() and vtkArray::SetName().
  • vtkDenseArray memory management.
    • vtkDenseArray::MemoryBlock.
    • vtkDenseArray::StaticMemoryBlock.
    • vtkDenseArray::HeapMemoryBlock.
  • vtkSparseICSArray.
    • Changes the way coordinates are stored, one contiguous array of coordinates per dimension, instead of a single contiguous array for all dimensions.
    • Implements value sorting.
    • Could probably replace the current vtkSparseArray implementation.

Proposed Work

  • Provide iterators, memory layout functionality in vtkDenseArray to support in-situ work.
  • Support vtkArray as attributes. Some different approaches:
    1. vtkArray derives from vtkAbstractArray.
      • Worst possible approach, there are methods in vtkAbstractArray (GetVoidPointer()) that are totally incompatible with sparse arrays.
    2. vtkArray and vtkAbstractArray remain apart.
      • vtkFieldData would store vtkArray as a distinct type. Unfortunately, GetArray() is already taken by vtkDataArray.
      • vtkAbstractArray derivatives HAVE-A vtkDenseArray to eliminate duplicate implementations.
    3. vtkAbstractArray derives from vtkArray.
      • Implementing vtkArray in current vtkAbstractArray implementations should be straightforward.
      • vtkFieldData would have to provide methods that return vtkArray. Same problems with GetArray().
      • Implies changes to Get/SetInputArrayToProcess().

Action Items

  • Performance comparisons between vtkDataArray & vtkDenseArray (Tim Shead)
  • Modify vtkAbstractArray to provide access to an (optional) underlying vtkArray (Tim Shead)
  • Modify vtkDataArray to use vtkDenseArray as an implementation (Andy Bauer?)
  • Update vtkFieldData and vtkDataSetAttributes APIs to support vtkArray directly (Andy Bauer?)
  • Deprecate vtkAbstractArray and its derivatives (Brian Wylie)